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.
Una tabla de streaming es una tabla compatible con el procesamiento de datos incremental o de streaming. Las tablas de streaming están respaldadas por canalizaciones. Cada vez que se actualiza una tabla de streaming, los datos agregados a las tablas de origen se anexan a la tabla de streaming. Puede actualizar las tablas de streaming manualmente o según una programación.
Para más información sobre cómo realizar o programar actualizaciones, consulte Ejecutar una actualización de canalización.
Syntax
CREATE [OR REFRESH] [PRIVATE] STREAMING TABLE
table_name
[ table_specification ]
[ table_clauses ]
[ AS query ]
table_specification
( { column_identifier column_type [column_properties] } [, ...]
[ column_constraint ] [, ...]
[ , table_constraint ] [...] )
column_properties
{ NOT NULL | COMMENT column_comment | column_constraint | MASK clause } [ ... ]
table_clauses
{ USING DELTA
PARTITIONED BY (col [, ...]) |
CLUSTER BY clause |
LOCATION path |
COMMENT view_comment |
TBLPROPERTIES clause |
WITH { ROW FILTER clause } } [ ... ]
Parámetros
REFRESH
Si se especifica, creará la tabla o actualizará una tabla existente y su contenido.
PRIVADO
Crea una tabla de streaming privada.
- No se añaden al catálogo y solo son accesibles dentro del flujo de trabajo de definición.
- Pueden tener el mismo nombre que un objeto existente en el catálogo. Dentro de la canalización, si una tabla de streaming privada y un objeto del catálogo tienen el mismo nombre, las referencias al nombre se resolverán en la tabla de streaming privada.
- Las tablas de streaming privado solo se conservan durante la duración de la canalización, no solo una sola actualización.
Las tablas de streaming privadas se crearon anteriormente con el
TEMPORARYparámetro .table_name
Nombre de la tabla recién creada. El nombre de tabla completo debe ser único.
especificación_de_tabla
Esta cláusula opcional define la lista de columnas y sus tipos, propiedades, descripciones y restricciones de columnas.
-
Los nombres de columna deben ser únicos y asignarse a las columnas de salida de la consulta.
-
Especifica el tipo de datos de la columna. No todos los tipos de datos admitidos por Azure Databricks son compatibles con las tablas de streaming.
column_comment
Un literal de
STRINGopcional que describe la columna. Esta opción debe especificarse junto concolumn_type. Si no se especifica el tipo de columna, se omite el comentario de la columna.-
Agrega una restricción que valida los datos a medida que fluyen a la tabla. Consulte Administración de la calidad de los datos con las expectativas de canalización.
-
Importante
Esta característica está en versión preliminar pública.
Agrega una función de máscara de columna para anonimizar datos confidenciales.
-
restricción_de_tabla
Importante
Esta característica está en versión preliminar pública.
Al especificar un esquema, puede definir claves principales y externas. Las restricciones son informativas y no se aplican. Consulte la cláusula CONSTRAINT en la referencia del lenguaje SQL.
Nota:
Para definir restricciones en las tablas, tu canalización debe estar habilitada para el Unity Catalog.
cláusulas_tabla
Opcionalmente, especifique las propiedades de creación de particiones, comentarios y definidas por el usuario para la tabla. Cada subcláusula solo se puede especificar una vez.
USO DE DELTA
Especifica el formato de datos. La única opción es DELTA.
Esta cláusula es opcional y el valor predeterminado es DELTA.
PARTICIONADO POR
Lista opcional de una o varias columnas que se van a usar para crear particiones en la tabla. Mutuamente excluyente con
CLUSTER BY.La agrupación en clústeres líquidos proporciona una solución flexible y optimizada para la agrupación en clústeres. Considere la posibilidad de usar
CLUSTER BYen lugar dePARTITIONED BYpara canalizaciones.CLUSTER BY
Habilite la agrupación en clústeres líquidos en la tabla y defina las columnas que se usarán como claves de agrupación en clústeres. Use la agrupación automática en clústeres líquidos con
CLUSTER BY AUTOy Databricks elige de forma inteligente las claves de agrupación en clústeres para optimizar el rendimiento de las consultas. Mutuamente excluyente conPARTITIONED BY.Consulte Uso de clústeres líquidos para tablas.
UBICACIÓN
Ubicación de almacenamiento opcional para los datos de la tabla. Si no se establece, el sistema establecerá de manera predeterminada la ubicación de almacenamiento de la canalización.
COMENTARIO
Literal opcional
STRINGpara describir la tabla.TBLPROPERTIES
Lista opcional de propiedades de la tabla.
CONROW FILTER
Importante
Esta característica está en versión preliminar pública.
Agrega una función de filtro de fila a la tabla. Las consultas futuras de esa tabla reciben un subconjunto de las filas para las que la función se evalúa como TRUE. Esto resulta útil para el control de acceso específico, ya que permite a la función inspeccionar la identidad y las pertenencias a grupos del usuario que realiza la invocación para decidir si se filtran determinadas filas.
Consulte la cláusula
ROW FILTER.-
Esta cláusula rellena la tabla mediante los datos de
query. Esta consulta debe ser una consulta de streaming. Use la palabra clave STREAM para usar la semántica de streaming para leer desde el origen. Si la lectura encuentra un cambio o eliminación en un registro existente, se produce un error. Es más seguro leer de orígenes estáticos o de solo anexión. Para ingerir datos que tienen confirmaciones de cambios, puede usar Python y laSkipChangeCommitsopción para controlar errores.Cuando se especifican juntos
queryytable_specification, el esquema de tabla especificado entable_specificationdebe contener todas las columnas devueltas porquery, de lo contrario, se produce un error. Las columnas especificadas entable_specificationpero no devueltas porquerydevuelven valoresnullcuando se consultan.Para más información sobre los datos de streaming, consulte Transformación de datos con canalizaciones.
Permisos necesarios
El usuario de ejecución para una canalización debe tener los permisos siguientes:
-
SELECTprivilegios sobre las tablas base a las que hace referencia la tabla de streaming. -
USE CATALOGprivilegios en el catálogo primario y el privilegioUSE SCHEMAen el esquema primario. -
CREATE MATERIALIZED VIEWprivilegios en el esquema de la tabla de streaming.
Para que un usuario pueda actualizar la canalización en la que se define la tabla de streaming, necesita:
-
USE CATALOGprivilegios en el catálogo primario y el privilegioUSE SCHEMAen el esquema primario. - Propiedad de la tabla de streaming o
REFRESHprivilegios en la tabla de streaming. - El propietario de la tabla de streaming debe tener el
SELECTprivilegio sobre las tablas base a las que hace referencia la tabla de streaming.
Para que un usuario pueda consultar la tabla de streaming resultante, necesita:
-
USE CATALOGprivilegios en el catálogo primario y el privilegioUSE SCHEMAen el esquema primario. -
SELECTprivilegios sobre la tabla de streaming.
Limitaciones
- Solo los propietarios de tablas pueden actualizar las tablas de streaming para obtener los datos más recientes.
-
ALTER TABLELos comandos no se permiten en las tablas de streaming. La definición y las propiedades de la tabla se deben modificar a través de la instrucciónCREATE OR REFRESHo ALTER STREAMING TABLE. - No se admite la evolución del esquema de tabla a través de comandos DML como
INSERT INTOyMERGE. - Los comandos siguientes no se admiten en tablas de streaming:
CREATE TABLE ... CLONE <streaming_table>COPY INTOANALYZE TABLERESTORETRUNCATEGENERATE MANIFEST[CREATE OR] REPLACE TABLE
- No se admite el cambio de nombre de la tabla ni el cambio del propietario.
- No se admiten columnas generadas, columnas de identidad y columnas predeterminadas.
Examples
-- Define a streaming table from a volume of files:
CREATE OR REFRESH STREAMING TABLE customers_bronze
AS SELECT * FROM STREAM read_files("/databricks-datasets/retail-org/customers/*", format => "csv")
-- Define a streaming table from a streaming source table:
CREATE OR REFRESH STREAMING TABLE customers_silver
AS SELECT * FROM STREAM(customers_bronze)
-- Define a table with a row filter and column mask:
CREATE OR REFRESH STREAMING TABLE customers_silver (
id int COMMENT 'This is the customer ID',
name string,
region string,
ssn string MASK catalog.schema.ssn_mask_fn COMMENT 'SSN masked for privacy'
)
WITH ROW FILTER catalog.schema.us_filter_fn ON (region)
AS SELECT * FROM STREAM(customers_bronze)
-- Define a streaming table that you can add flows into:
CREATE OR REFRESH STREAMING TABLE orders;