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.
Azure Databricks dá suporte a cláusulas de gerenciamento de restrição SQL padrão:
- Restrições impostas verificam a integridade dos dados antes de adicionar linhas a uma tabela.
- As restrições de chave primária informativa e chave estrangeira definem relações entre campos em tabelas e não são impostas.
Todas as restrições no Azure Databricks exigem o Delta Lake.
Para obter um conceito relacionado em Pipelines Declarativos do Lakeflow Spark, consulte Gerenciar a qualidade dos dados com expectativas de pipeline.
Restrições Aplicadas no Azure Databricks
Quando uma restrição é violada, a transação falha com um erro. Azure Databricks dá suporte a dois tipos de restrições:
-
NOT NULL: indica que os valores em colunas específicas não podem ser nulos. -
CHECK: indica que uma expressão booliana especificada precisa ser verdadeira para cada linha de entrada.
Importante
Quando você adiciona uma restrição, Azure Databricks atualiza automaticamente a versão do protocolo de gravador de tabela se a versão anterior do gravador for menor que 3. Consulte a compatibilidade de recursos e protocolos do Delta Lake para entender o controle de versão do protocolo de tabela e o que significa atualizar a versão do protocolo.
Definir uma restrição NOT NULL no Azure Databricks
Ao criar uma tabela, especifique NOT NULL restrições no esquema. Para remover ou adicionar NOT NULL restrições, use o ALTER TABLE ... ALTER COLUMN comando:
CREATE TABLE people10m (
id INT NOT NULL,
firstName STRING,
middleName STRING NOT NULL,
lastName STRING,
gender STRING,
birthDate TIMESTAMP,
ssn STRING,
salary INT
);
ALTER TABLE people10m ALTER COLUMN middleName DROP NOT NULL;
ALTER TABLE people10m ALTER COLUMN ssn SET NOT NULL;
Azure Databricks verifica se todas as linhas existentes atendem à restrição antes de adicionar uma restrição NOT NULL a uma tabela.
Se você especificar uma restrição NOT NULL em uma coluna aninhada em um struct, o struct pai também deverá ser não nulo. Colunas aninhadas dentro de tipos de matriz ou mapa não aceitam restrições NOT NULL.
Consulte CREATE TABLE [USING] e ALTER TABLE ALTER COLUMN.
Definir uma restrição CHECK no Azure Databricks
Gerencie CHECK restrições com os comandos ALTER TABLE ADD CONSTRAINT e ALTER TABLE DROP CONSTRAINT.
ALTER TABLE ADD CONSTRAINT verifica se todas as linhas existentes atendem à restrição antes de adicionar a restrição à tabela.
As seguintes restrições se aplicam a constrangimentos de verificação:
- Uma
CHECKexpressão de restrição pode usar quaisquer funções SQL no Spark que sempre retornam o mesmo resultado quando recebem os mesmos valores de argumento, exceto os seguintes tipos de funções:- Funções definidas pelo usuário.
- Funções de agregação.
- Funções de janela.
- Funções que retornam várias linhas.
Adicionar a uma tabela existente
CREATE TABLE people10m (
id INT,
firstName STRING,
middleName STRING,
lastName STRING,
gender STRING,
birthDate TIMESTAMP,
ssn STRING,
salary INT
);
ALTER TABLE people10m ADD CONSTRAINT dateWithinRange CHECK (birthDate > '1900-01-01');
ALTER TABLE people10m DROP CONSTRAINT dateWithinRange;
Consulte ALTER TABLE ADD CONSTRAINT e ALTER TABLE DROP CONSTRAINT.
Exibir propriedades da tabela de restrição de verificação
Use os DESCRIBE DETAIL comandos e SHOW TBLPROPERTIES para ver as restrições de CHECK uma tabela.
ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 and id < 99999999);
DESCRIBE DETAIL people10m;
SHOW TBLPROPERTIES people10m;
Remover restrições de verificação
No Databricks Runtime 15.4 LTS e posteriores, use o comando DROP FEATURE para remover restrições de verificação de uma tabela e rebaixar o protocolo de tabela.
Confira Remover um recurso de tabela do Delta Lake e fazer downgrade do protocolo de tabela.
Declarar relações de chave primária e chave estrangeira
As restrições de chave primária e chave estrangeira estão disponíveis para tabelas do Unity Catalog e do Delta Lake no Databricks Runtime 13.3 LTS e posteriores, e estão em disponibilidade geral (GA) no Databricks Runtime 15.2 e posterior.
Chaves primárias e estrangeiras são somente informativas e não são impostas. Chaves estrangeiras devem fazer referência a uma chave primária em outra tabela. Restrições de chave informativa podem melhorar o desempenho com otimizações de consulta.
Consulte o information_schema ou use o DESCRIBE para obter detalhes sobre como as restrições são aplicadas em um determinado catálogo.
Adicionar a novas tabelas
Declare chaves primárias e chaves estrangeiras como parte da cláusula de especificação ao criar a tabela.
CREATE TABLE T(pk1 INTEGER NOT NULL, pk2 INTEGER NOT NULL,
CONSTRAINT t_pk PRIMARY KEY(pk1, pk2));
CREATE TABLE S(pk INTEGER NOT NULL PRIMARY KEY,
fk1 INTEGER, fk2 INTEGER,
CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T);
As instruções CTAS não oferecem suporte a essa cláusula de restrição.
Adicionar a tabelas existentes
Para adicionar restrições a tabelas existentes:
ALTER TABLE T ADD CONSTRAINT t_pk PRIMARY KEY(pk1, pk2);
ALTER TABLE S ADD CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T;