Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Databricks admite cláusulas de administración de restricciones SQL estándar:
- Las restricciones aplicadas comprueban la integridad de los datos antes de agregar filas a una tabla.
- Las restricciones informativas (clave principal, clave externa y restricciones únicas) definen las relaciones entre los campos de las tablas y no se aplican.
Todas las restricciones de Azure Databricks requieren Delta Lake.
Para un concepto relacionado en Canalizaciones declarativas de Lakeflow Spark, consulte Gestión de la calidad de los datos con expectativas de canalización.
Restricciones aplicadas
Cuando se infringe una restricción, se produce un error en la transacción. Azure Databricks admite dos tipos de restricciones:
-
NOT NULL: indica que los valores de columnas específicas no pueden ser NULL. -
CHECK: indica que una expresión booleana especificada debe ser true para cada fila de entrada.
Nota
Al agregar una restricción, se actualiza el protocolo de escritura de tablas si la versión del escritor actual es inferior a 3. Esto puede afectar a la compatibilidad con clientes externos de Delta Lake. Consulte Compatibilidad y protocolos de características de Delta Lake.
Restricción NOT NULL
Al crear una tabla, especifique NOT NULL restricciones en el esquema. Para quitar o agregar NOT NULL restricciones, use el 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 comprueba que todas las filas existentes cumplen la restricción antes de agregar una restricción NOT NULL a una tabla.
Si especifica una restricción NOT NULL en una columna anidada dentro de una estructura, la estructura primaria no debe ser null. Las columnas anidadas en tipos de mapas o matrices no aceptan restricciones NOT NULL.
Vea CREATE TABLE [USING] y ALTER TABLE ALTER COLUMN.
Restricción CHECK
Administrar CHECK restricciones con los comandos ALTER TABLE ADD CONSTRAINT y ALTER TABLE DROP CONSTRAINT.
ALTER TABLE ADD CONSTRAINT comprueba que todas las filas existentes cumplen la restricción antes de agregar la restricción a la tabla.
Las siguientes restricciones se aplican a las restricciones de comprobación:
- Una
CHECKexpresión de restricción puede usar cualquier función SQL de Spark que siempre devuelva el mismo resultado cuando se proporcionan los mismos valores de argumento, excepto los siguientes tipos de funciones:- Funciones definidas por el usuario.
- Funciones de agregado.
- Funciones de ventana.
- Funciones que devuelven varias filas.
Agregar a una tabla 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 y ALTER TABLE DROP CONSTRAINT.
Ver propiedades de la tabla de restricciones de verificación
Use los DESCRIBE DETAIL comandos y SHOW TBLPROPERTIES para ver las restricciones de CHECK una tabla.
ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 and id < 99999999);
DESCRIBE DETAIL people10m;
SHOW TBLPROPERTIES people10m;
Eliminar restricciones de comprobación
En Databricks Runtime 15.4 LTS y versiones posteriores, use el comando DROP FEATURE para quitar restricciones de verificación de una tabla y revertir el protocolo de la tabla.
Consulte Eliminar una característica de tabla de Delta Lake y degradar el protocolo de tabla.
Declarar restricciones de clave primaria, de clave foránea y de unicidad
La clave principal, la clave externa y las restricciones únicas son solo informativas y no se aplican. Pueden mejorar el rendimiento a través de optimizaciones de consultas.
- Clave principal y clave externa: disponible para tablas de Unity Catalog y Delta Lake en Databricks Runtime 13.3 LTS y versiones posteriores. Disponibilidad general en Databricks Runtime 15.2 y versiones posteriores. Las claves externas deben hacer referencia a una clave principal o una restricción única en otra tabla.
-
Único: disponible en versión preliminar pública para tablas de Catálogo de Unity y Delta Lake en Databricks SQL y Databricks Runtime 18.2 y versiones posteriores. Una tabla puede tener varias restricciones únicas. Las claves externas pueden hacer referencia a una columna única mediante
REFERENCES parent_table(unique_col). Las columnas únicas pueden ser nullables porqueNULLlos valores se tratan como distintos entre sí.
Consulte el information_schema, use DESCRIBE TABLE EXTENDED o use SHOW CREATE TABLE para obtener detalles sobre cómo se aplican las restricciones en todo un catálogo dado.
Agregar a nuevas tablas
Declare las claves principales, las claves externas y las restricciones únicas como parte de la cláusula de especificación de tabla durante la creación de la tabla:
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);
CREATE TABLE U(id INTEGER NOT NULL, email STRING NOT NULL,
CONSTRAINT u_uq_email UNIQUE(email));
Las instrucciones CTAS no admiten esta cláusula de restricción.
Agregar a tablas existentes
Para agregar restricciones a las tablas 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;
ALTER TABLE U ADD CONSTRAINT u_uq_email UNIQUE(email);