Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Limpar e validar dados é essencial para garantir a qualidade dos ativos de dados em um lakehouse. 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.
Imposição 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 em torno da qualidade dos dados para tabelas em uma lakehouse.
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 do esquema.
Para lidar com a evolução do esquema, a 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 campos descartados ou pipelines com falha. Para obter detalhes sobre esquemas de atualização manual ou automática, consulte o esquema de tabela Atualizar Delta Lake.
Restrições de tabela
As restrições podem assumir a forma de restrições de chave primária e chave estrangeira informativas ou restrições impostas. Consulte a cláusula ADD CONSTRAINT.
As restrições de tabela no Azure Databricks são impostas ou informativas.
Restrições impostas incluem as restrições NOT NULL e CHECK.
As restrições informativas incluem restrições de chave primária e chave estrangeira.
Confira Restrições no Azure Databricks.
Lidar com valores nulos ou ausentes
NOT NULL pode ser imposto em tabelas Delta. Ele só poderá ser habilitado 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.
Imposição de padrão
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, use as funções REGEXP ou RLIKE no SQL. Essas funções permitem corresponder a 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ões no SQL:
CREATE TABLE table_name (
column_name STRING CHECK (column_name REGEXP '^[A-Za-z0-9]+$')
);
Imposição de valor
As restrições podem ser usadas para impor intervalos de valor em colunas em 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 valor, use 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 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 as expectativas usando o Lakeflow Spark Declarative Pipelines.
O Lakeflow Spark Declarative Pipelines permite definir expectativas ao declarar exibições materializadas ou tabelas de streaming. É possível optar por configurar as expectativas para avisar você sobre violações, descartar registros violadores ou falhar cargas de trabalho com base em violações. Veja Gerenciar a qualidade dos dados com as expectativas de pipeline.
Monitoramento de dados
O Azure Databricks fornece serviços de monitoramento de qualidade de dados, que permitem monitorar as propriedades estatísticas e a qualidade dos dados em todas as tabelas em sua conta. Consulte a criação de perfil de dados.
Converter tipos de dados
Ao inserir ou atualizar dados em uma tabela, o Azure Databricks converte tipos de dados quando pode fazer isso 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
Use filtros e cláusulas WHERE para definir a lógica personalizada que coloca em quarentena registros inválidos e impede que eles se propaguem para tabelas de downstream. As cláusulas CASE WHEN ... OTHERWISE permitem definir a lógica condicional para aplicar normalmente a lógica de negócios a registros que violam as 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;
Observação
O Databricks recomenda sempre processar dados filtrados como uma operação de gravação separada, especialmente ao usar o Fluxo Estruturado. 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 do espaço reservado é usado para representar dados ausentes. Em vez de gravar uma lógica personalizada para todas as consultas downstream no Azure Databricks para ignorar os que contêm -1, use um caso quando a instrução 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;