DEV Community

Cover image for Automatizando a Qualidade de Dados com DQX: Performance e praticidade
Airton Lira junior
Airton Lira junior

Posted on

Automatizando a Qualidade de Dados com DQX: Performance e praticidade

Introdução ao DQX

No cenário atual, onde os dados são frequentemente comparados ao "novo petróleo", garantir sua qualidade tornou-se uma prioridade estratégica para organizações de todos os tamanhos. Dados imprecisos, incompletos ou inconsistentes podem gerar análises equivocadas, decisões mal fundamentadas e até mesmo comprometer a confiabilidade de sistemas críticos. Para enfrentar esse desafio, ferramentas como o DQX, um framework de qualidade de dados open-source desenvolvido pelo Databricks Labs, surgem como soluções poderosas e acessíveis. Construído sobre o PySpark e integrado ao ecossistema Databricks, o DQX oferece uma abordagem prática e escalável para validar e monitorar a qualidade de dados em grandes volumes.

Neste artigo, vamos explorar o DQX em profundidade: desde sua definição e vantagens até exemplos práticos detalhados com código, saídas esperadas e cenários reais de aplicação. Se você já enfrentou dificuldades para garantir a qualidade em pipelines de dados complexos ou busca uma maneira mais eficiente de automatizar esse processo, este guia é para você. Prepare-se para descobrir como o DQX pode transformar sua gestão de dados, tornando-a mais robusta, confiável e alinhada às necessidades do seu negócio.

O que é o DQX?

O DQX (Data Quality Framework) é uma ferramenta de código aberto projetada para simplificar a validação, limpeza e monitoramento da qualidade de dados em ambientes de big data. Ele utiliza o poder do PySpark e a infraestrutura do Databricks para processar grandes conjuntos de dados de forma eficiente, permitindo que os usuários definam regras de qualidade personalizadas e apliquem-nas automaticamente. O framework separa os dados em registros "válidos" (que atendem às regras) e "inválidos" (que violam alguma condição), facilitando a correção e a análise posterior.

Principais Funcionalidades

  • Regras Personalizadas: Defina critérios de qualidade (como completude, singularidade ou validação de formatos) usando arquivos YAML.
  • Separação Automática: Divida os dados em conjuntos válidos e inválidos com base nas regras aplicadas.
  • Escalabilidade: Aproveite o PySpark para lidar com terabytes de dados sem perda de desempenho.
  • Monitoramento Contínuo: Gere métricas e relatórios para acompanhar a qualidade ao longo do tempo.
  • Integração com Pipelines: Incorpore verificações de qualidade diretamente em processos ETL (Extração, Transformação e Carga).

Com essas capacidades, o DQX é ideal para equipes que desejam garantir a confiabilidade dos dados sem sacrificar a agilidade nos fluxos de trabalho.


Vantagens do DQX

O DQX se destaca por oferecer uma combinação única de flexibilidade, automação e integração nativa com o Databricks. Aqui estão suas principais vantagens:

  1. Automação Total: Reduz drasticamente o esforço manual em verificações de qualidade, eliminando processos repetitivos e propensos a erros.
  2. Integração com Databricks: Projetado para o ecossistema Databricks, ele se conecta facilmente a pipelines existentes, sem necessidade de adaptações complexas.
  3. Flexibilidade nas Regras: Permite que os usuários criem regras sob medida para atender às demandas específicas de cada projeto.
  4. Isolamento de Problemas: Separa automaticamente registros problemáticos, agilizando a análise e correção.
  5. Desempenho em Escala: Processa grandes volumes de dados com eficiência, aproveitando a arquitetura distribuída do PySpark.
  6. Governança de Dados: Facilita o monitoramento contínuo e a geração de relatórios, essenciais para a conformidade e a tomada de decisão.

Esses benefícios tornam o DQX uma ferramenta indispensável para organizações que dependem de dados de alta qualidade para operar e inovar.


Casos de Uso do DQX

O DQX pode ser aplicado em uma ampla gama de situações. Aqui estão alguns exemplos práticos do que é possível fazer com ele:

  • Verificar Completude: Garanta que campos obrigatórios estejam preenchidos.
  • Validar Formatos: Confirme que dados como e-mails, CPFs ou datas seguem padrões esperados.
  • Assegurar Singularidade: Detecte duplicatas em identificadores únicos.
  • Controlar Intervalos: Certifique-se de que valores numéricos ou temporais estejam dentro de limites definidos.
  • Referenciar Integridade: Valide que chaves estrangeiras correspondam a registros existentes em outras tabelas.
  • Monitorar Qualidade: Acompanhe métricas de qualidade ao longo do tempo para identificar tendências ou anomalias.

Agora, vamos mergulhar em exemplos práticos detalhados para ilustrar como o DQX funciona na prática.


Exemplo 1: Validação de Dados de Clientes

Imagine que você gerencia uma tabela de clientes com as colunas customer_id, customer_name e customer_email. Seu objetivo é garantir que:

  • O customer_id seja único e não nulo.
  • O customer_name não esteja vazio.
  • O customer_email siga o formato "@example.com".

Passo 1: Instalação

No seu notebook Databricks, instale a biblioteca DQX:

%pip install databricks-labs-dqx

Passo 2: Importação

Carregue os módulos necessários:

from databricks.labs.dqx import DQProfiler, DQEngine

Passo 3: Carregamento dos Dados

Carregue a tabela de entrada:

input_df = spark.table("customer_table")

Passo 4: Definição de Regras

Crie um arquivo YAML chamado customer_rules.yaml:

rules:
  - name: customer_id_not_null
    description: "Customer ID não pode ser nulo"
    expression: "customer_id IS NOT NULL"
  - name: customer_name_not_empty
    description: "Nome do cliente não pode estar vazio"
    expression: "customer_name != ''"
  - name: customer_email_format
    description: "E-mail deve seguir o padrão @example.com"
    expression: "customer_email RLIKE '^[A-Za-z0-9._%+-]+@example\\.com$'"
  - name: customer_id_unique
    description: "Customer ID deve ser único"
    expression: "COUNT(DISTINCT customer_id) = COUNT(customer_id)"
Enter fullscreen mode Exit fullscreen mode

Passo 5: Aplicação das Regras

Aplique as regras aos dados:

with open("/dbfs/path/to/customer_rules.yaml", "r") as file:
    rules_yaml = file.read()

engine = DQEngine(input_df, rules_yaml)
valid_df, invalid_df = engine.apply_rules()

valid_df.write.saveAsTable("silver_customers", mode="overwrite")
invalid_df.write.saveAsTable("quarantine_customers", mode="overwrite")
Enter fullscreen mode Exit fullscreen mode

Saída Esperada

silver_customers: Registros válidos:

customer_id customer_name customer_email
1 João Silva joao@example.com
2 Maria Oliveira maria@example.com
  • quarantine_customers: Registros inválidos, com as regras violadas:
customer_id customer_name customer_email failed_rules
NULL Pedro pedro@example.com customer_id_not_null
3 ana@gmail.com customer_name_not_empty, customer_email_format

Exemplo 2: Controle de Qualidade em Dados de Vendas
Agora, considere uma tabela de vendas com as colunas sale_id, sale_date, sale_amount e customer_id. Queremos garantir que:

O sale_id seja único.
A sale_date esteja no ano de 2023.
O sale_amount seja positivo.
O customer_id exista na tabela de clientes.
Passo 1: Definição de Regras
Crie um arquivo sales_rules.yaml:

rules:

  • name: sale_id_unique description: "Sale ID deve ser único" expression: "COUNT(DISTINCT sale_id) = COUNT(sale_id)"
  • name: sale_date_in_2023 description: "Data da venda deve estar em 2023" expression: "sale_date >= '2023-01-01' AND sale_date <= '2023-12-31'"
  • name: sale_amount_positive description: "Valor da venda deve ser maior que zero" expression: "sale_amount > 0"
  • name: customer_id_exists description: "Customer ID deve existir na tabela de clientes" expression: "customer_id IN (SELECT customer_id FROM silver_customers)"

Passo 2: Aplicação das Regras
Execute o processamento:

sales_df = spark.table("sales_table")
with open("/dbfs/path/to/sales_rules.yaml", "r") as file:
sales_rules_yaml = file.read()

sales_engine = DQEngine(sales_df, sales_rules_yaml)
valid_sales_df, invalid_sales_df = sales_engine.apply_rules()

valid_sales_df.write.saveAsTable("silver_sales", mode="overwrite")
invalid_sales_df.write.saveAsTable("quarantine_sales", mode="overwrite")

Saída Esperada
silver_sales: Vendas válidas:

sale_id sale_date sale_amount customer_id
101 2023-05-10 150.00 1
102 2023-07-15 200.00 2

quarantine_sales: Vendas inválidas:

sale_id sale_date sale_amount customer_id failed_rules
103 2022-12-01 100.00 1 sale_date_in_2023
104 2023-03-20 -50.00 3 sale_amount_positive

O DQX é uma ferramenta revolucionária para equipes que precisam garantir a qualidade de dados em escala. Com sua capacidade de automatizar validações, separar registros problemáticos e integrar-se a pipelines existentes, ele reduz o esforço manual e aumenta a confiabilidade dos dados. Os exemplos apresentados — desde a validação de clientes e vendas até logs de sistema e monitoramento contínuo — mostram a versatilidade e o poder do DQX em cenários reais.

Se você trabalha com big data e busca uma solução eficiente para governança de dados, o DQX é um excelente ponto de partida. Experimente integrá-lo ao seu ambiente Databricks e explore como ele pode otimizar seus processos. Para mais detalhes, consulte a documentação oficial do DQX e comece hoje mesmo a elevar a qualidade dos seus dados!

https://databrickslabs.github.io/dqx/docs/motivation

Qual quer dúvida me procure no linkedln: Airton Lira Junior

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more