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

Top comments (0)