Pular para o conteúdo principal

Limpar e validar dados com processamento de lotes ou transmissão

A limpeza e a validação dos dados são essenciais para garantir a qualidade dos dados ativos em um site lakehouse. Este artigo descreve as ofertas de produtos Databricks projetadas para facilitar a qualidade dos dados, além de fornecer recomendações para a definição da lógica de negócios para implementar regras personalizadas.

imposição de esquema on Databricks

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

A imposição de esquema garante que os dados gravados em uma tabela sigam um esquema predefinido. As regras de validação do esquema variam de acordo com as operações. Ver imposição de esquema.

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

Restrições de tabela

As restrições podem assumir a forma de restrições informativas primárias key e estrangeiras key, ou restrições impostas. Consulte a cláusula ADD CONSTRAINT.

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

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

As restrições informativas incluem restrições primárias key e restrições estrangeiras key.

Consulte Restrições em Databricks.

Lidar com valores nulos ou ausentes

NOT NULL pode ser aplicado em tabelas Delta. Ele só pode ser ativado em uma tabela existente se nenhum registro existente na coluna for nulo e impedir 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, o senhor pode usar as funções REGEXP ou RLIKE no SQL. Essas funções permitem que você combine um campo de dados com um padrão de regex especificado.

Aqui está um exemplo de como usar a restrição CHECK com regex para aplicação de padrões no SQL:

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

Aplicação de valores

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

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

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

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

Defina e configure expectativas usando DLT.

A DLT permite que o senhor defina as expectativas ao declarar a visualização materializada ou as tabelas de transmissão. Você pode optar por configurar as expectativas para avisá-lo sobre violações, eliminar registros violadores ou reprovar cargas de trabalho com base nas violações. Veja como gerenciar a qualidade dos dados com pipeline expectativas.

Monitoramento de dados

Databricks fornece o serviço de monitoramento da qualidade dos dados, que permite que o senhor monitore as propriedades estatísticas e a qualidade dos dados em todas as tabelas do seu site account. Consulte Introdução ao site Databricks lakehouse monitoring.

Tipos de dados de transmissão

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

Consulte os artigos a seguir para obter detalhes sobre os comportamentos de casting:

Lógica de negócios personalizada

Você pode usar filtros e cláusulas WHERE para definir uma lógica personalizada que coloca registros inválidos em quarentena e impede que eles se propaguem para tabelas posteriores. As cláusulas CASE WHEN ... OTHERWISE permitem que você defina a lógica condicional para aplicar corretamente a lógica de negócios a registros que violam as expectativas de maneiras previsíveis.

SQL
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

Databricks recomenda sempre processar os dados filtrados como operações de gravação separadas, especialmente ao usar a transmissão estruturada. 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 valores NULL e, portanto, o valor do espaço reservado -1 é usado para representar dados ausentes. Em vez de escrever uma lógica personalizada para todas as consultas downstream em Databricks para ignorar os registros que contêm -1, o senhor poderia usar uma instrução case when para substituir dinamicamente esses registros como transformações.

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