[Dados] O que são as Delta Lake Constraints no Delta Lake?
O que são as Delta Lake Constraints no Delta Lake?
Sumário
- O que são Delta Lake Constraints?
- Configuração do PySpark e Delta
- Entendendo Delta Constraints na Prática
3.1 Criando DataFrame de Usuários
3.2 Adicionando Constraint de Número de Caracteres
3.3 Adicionando Constraint de Valores Positivos
3.4 Listando as Constraints da Tabela
3.5 Valores Not Nullable - Conclusões
- Referências
Introdução
- Salve turma, trazendo um pouco sobre algumas features e conceitos sobre a Área de Dados para o TabNews!!!
1. O que são Delta Lake Constraints?
- Delta Lake Constraints, como o próprio nome diz, são restrições ou regras que protegem a inserção de qualquer dado em uma Delta Table.
- O Delta Lake por padrão, permite dar append de novos dados a uma tabela desde que respeite a tipagem das colunas (data types) de uma Delta Table. Por exemplo, você pode adicionar valores numéricos a uma coluna com Integer Type.
- Porém, digamos que você tenha uma coluna denominada "CPF", que tenha comprimento igual à 11 caracteres, ou uma coluna "idade" que não permite valores negativos. Por padrão, você consegue adicionar valores diferentes através do append no Delta desde que respeite a tipagem das colunas.
- O Delta Lake Constraints permite adicionar regras que previna esse tipo de inserção em uma Delta Table.
Vamos ver a seguir como utiliza-la. Todos os códigos utilizados abaixo estarão nesse repositório do GitHub.
2. Configuração do PySpark + Delta
-
Na demonstração abaixo, estarei usando as seguintes bibliotecas com suas respectivas versões:
-
Primeiro vamos importar as bibliotecas do delta e pyspark. Após isso, vamos inicializar a SparkSession passando as seguintes configurações para configurar o Delta Catalog.
3. Entendendo Delta Constraints na Prática
3.1 Criando DataFrame de Usuários
- Para começar, vamos criar uma Delta Table de usuários com três colunas: "nome", "idade" e "CPF", e adicionar três usuários nessa tabela.
3.2 Adicionando Constraint de Número de Caracteres
- Com a tabela "usuarios" criada, vamos adicionar uma constraint na coluna "CPF" que permita apenas a inserção de novos dados com tamanho igual a 11 caracteres. Para isso, execute o seguinte comando:
3.3 Adicionando Constraint de Valores Positivos
- Vamos também adicionar uma constraint na coluna "idade" que permita apenas a inserção de valores numéricos positivos. Para isso, execute o seguinte comando:
3.4 Listando as Constraints da Tabela
- É possível visualizar todas as constraints adicionadas a uma tabela através do comando SHOW TBLPROPERTIES No resultado, podemos observar todas as constraints criadas.
3.5 Verificando o Funcionamento das Constraints
- Para testar, vamos tentar adicionar valores que infrinjam as constraints criadas:
- Tentar adicionar um valor com somente um caractere na coluna "CPF".
- Tentar adicionar um valor negativo na coluna "idade".
- Em ambos os casos, podemos observar que são emitidos erros notificando qual constraint afetada e o valor que foi tentado adicionar.
3.6 Valores Not Nullable
-
Além dessas constraints, podemos adicionar outra para prevenir que valores nulos sem adicionados a uma Delta Table através da constraint NOT NULL. Para isso, é necessário realizar a configuração no momento da criação da tabela.
-
Se tentarmos adicionar um valor nulo na coluna "CPF" vamos receber a seguinte mensagem de erro:
4. Conclusões
- As constraints conseguem garantir que dados inválidos ou indesejados não sejam adicionados à sua Delta Table.
- Porém, vale ressaltar que, não necessariamente se aplica a qualquer ingestão de dados, muitas vezes queremos inserir todos os tipos de dados, mas outras vezes queremos que as Delta Tables sejam rígidas e aceitam apenas dados limpos.
5. Referências
- Delta Lake Documentation QuickStart
- Delta Docks - Constraints
- Delta Blog - Constraints and Checks
- Databricks - Constraints
- Autor: LinkedIn - Thiago Heron