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 de clave principal informativa y clave externa 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 en Azure Databricks
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.
Importante
Al agregar una restricción, Azure Databricks actualiza automáticamente la versión del protocolo table writer si la versión anterior del escritor era inferior a 3. Consulte Compatibilidad y protocolos de características de Delta Lake para comprender el control de versiones del protocolo de tabla y lo que significa actualizar la versión del protocolo.
Establecimiento de una restricción NOT NULL en Azure Databricks
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.
Establecimiento de una restricción CHECK en Azure Databricks
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 relaciones de clave principal y clave externa
Las restricciones de clave principal y clave externa están disponibles para las tablas de Unity Catalog y Delta Lake en Databricks Runtime 13.3 LTS y versiones posteriores, y están disponibles para disponibilidad general en Databricks Runtime 15.2 y versiones posteriores.
Las claves principales y externas son solo informativas y no se aplican. Las claves externas deben hacer referencia a una clave principal en otra tabla. Las restricciones de clave informativa pueden mejorar el rendimiento con optimizaciones de consultas.
Consulte o information_schema use DESCRIBE para obtener detalles sobre cómo se aplican las restricciones en un catálogo determinado.
Agregar a nuevas tablas
Declare las claves principales y las claves externas 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);
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;