Partilhar via


Limpe e valide dados com processamento em lote ou fluxo

A limpeza e validação de dados é essencial para garantir a qualidade dos ativos de dados em uma casa de lago. Este artigo descreve as ofertas de produtos do Azure Databricks projetadas para facilitar a qualidade dos dados, além de fornecer recomendações para definir a lógica de negócios para implementar regras personalizadas.

Aplicação de Regras de Esquema no Azure Databricks

O Delta Lake fornece semântica para impor verificações de esquema e restrição na gravação, o que fornece garantias sobre a qualidade dos dados para tabelas em uma casa de lago.

A imposição de esquema garante que os dados gravados em uma tabela sigam um esquema predefinido. As regras de validação de esquema variam de acordo com a operação. Consulte imposição de esquema.

Para lidar com a evolução do esquema, o Delta fornece mecanismos para fazer alterações de esquema e tabelas em evolução. É importante considerar cuidadosamente quando usar a evolução do esquema para evitar a perda de campos ou pipelines com falhas. Para obter detalhes sobre a atualização manual ou automática de esquemas, consulte Atualizar esquema de tabela Delta Lake.

Restrições de tabela

As restrições podem assumir a forma de restrições informativas de chave primária e de chave estrangeira, ou de restrições impostas. Ver ADD CONSTRAINT cláusula.

As restrições de tabela no Azure Databricks são impostas ou informativas.

As restrições impostas incluem NOT NULL e CHECK restrições.

As restrições informacionais incluem restrições de chave primária e de chave estrangeira.

Consulte Restrições no Azure Databricks.

Lidar com valores nulos ou ausentes

NOT NULL pode ser imposto em tabelas Delta. Ele só pode ser habilitado em uma tabela existente se nenhum registro existente na coluna for nulo e impede que novos registros com valores nulos sejam inseridos em uma tabela.

Aplicação de padrões

Expressões regulares (regex) podem ser usadas para impor padrões esperados em um campo de dados. Isso é particularmente útil ao lidar com dados textuais que precisam aderir a formatos ou padrões específicos.

Para impor um padrão usando regex, você pode usar as REGEXP funções ou RLIKE em SQL. Essas funções permitem que você faça a correspondência de um campo de dados com um padrão regex especificado.

Aqui está um exemplo de como usar a CHECK restrição com regex para imposição de padrão em SQL:

CREATE TABLE table_name (
  column_name STRING CHECK (column_name REGEXP '^[A-Za-z0-9]+$')
);

Cumprimento de valores

As restrições podem ser usadas para impor intervalos de valores em colunas de uma tabela. Isso garante que apenas valores válidos dentro do intervalo especificado possam ser inseridos ou atualizados.

Para impor uma restrição de intervalo de valores, você pode usar a restrição CHECK no SQL. A restrição CHECK permite definir uma condição que deve ser verdadeira para cada linha da tabela.

Veja um exemplo de como usar a CHECK restrição para impor um intervalo de valores em uma coluna:

CREATE TABLE table_name (
  column_name INT CHECK (column_name >= 0 AND column_name <= 100)
);

Defina e configure expectativas usando Lakeflow Spark Declarative Pipelines.

Lakeflow Spark Declarative Pipelines permite definir expectativas ao declarar visualizações materializadas ou tabelas de streaming. Você pode optar por configurar as expectativas para avisá-lo sobre violações, descartar registros infratores ou interromper cargas de trabalho com base em violações. Consulte Gerenciar a qualidade dos dados com as expectativas do pipeline.

Monitorização de dados

O Azure Databricks fornece serviços de monitorização da qualidade dos dados, que lhe permitem monitorizar as propriedades estatísticas e a qualidade dos dados em todas as tabelas da sua conta. Consulte Criação de perfil de dados.

Tipos de dados de transmissão

Ao inserir ou atualizar dados em uma tabela, o Azure Databricks lança tipos de dados quando pode fazê-lo com segurança sem perder informações.

Consulte os seguintes artigos para obter detalhes sobre comportamentos de conversão:

Lógica de negócios personalizada

Você pode usar filtros e cláusulas WHERE para definir uma lógica personalizada que coloque em quarentena registros incorretos e impeça que eles se propaguem para tabelas downstream. CASE WHEN ... OTHERWISE As cláusulas permitem que você defina lógica condicional para aplicar graciosamente a lógica de negócios a registros que violam expectativas de maneiras previsíveis.

DECLARE current_time = now()

INSERT INTO silver_table
  SELECT * FROM bronze_table
  WHERE event_timestamp <= current_time AND quantity >= 0;

INSERT INTO quarantine_table
  SELECT * FROM bronze_table
  WHERE event_timestamp > current_time OR quantity < 0;

Nota

O Databricks recomenda sempre processar dados filtrados como uma operação de gravação separada, especialmente ao usar o Structured Streaming. Usar .foreachBatch para gravar em várias tabelas pode levar a resultados inconsistentes.

Por exemplo, você pode ter um sistema upstream que não é capaz de codificar NULL valores e, portanto, o valor -1 de espaço reservado é usado para representar dados ausentes. Em vez de escrever lógica personalizada para todas as consultas downstream no Azure Databricks para ignorar registros que contenham -1, você pode usar uma instrução case when para substituir dinamicamente esses registros como uma transformação.

INSERT INTO silver_table
  SELECT
    * EXCEPT weight,
    CASE
      WHEN weight = -1 THEN NULL
      ELSE weight
    END AS weight
  FROM bronze_table;