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 declarativas de Lakeflow. 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 en las canalizaciones declarativas de Lakeflow.
Sintaxis
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 agregan al catálogo y solo son accesibles dentro de la canalización 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
TEMPORARY
pará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
STRING
opcional 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.
Consulte Filtrado de datos de tabla confidenciales mediante filtros de fila y máscaras de columna.
-
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 usar
CLUSTER BY
en lugar dePARTITIONED BY
para canalizaciones declarativas de Lakeflow.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. Mutuamente excluyente con
PARTITIONED 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
STRING
para 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
ROW FILTER
cláusula.-
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 laSkipChangeCommits
opción para controlar errores.Cuando se especifican juntos
query
ytable_specification
, el esquema de tabla especificado entable_specification
debe contener todas las columnas devueltas porquery
, de lo contrario, se produce un error. Las columnas especificadas entable_specification
pero no devueltas porquery
devuelven valoresnull
cuando 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:
-
SELECT
privilegios sobre las tablas base a las que hace referencia la tabla de streaming. -
USE CATALOG
privilegios en el catálogo primario y el privilegioUSE SCHEMA
en el esquema primario. -
CREATE MATERIALIZED VIEW
privilegios 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 CATALOG
privilegios en el catálogo primario y el privilegioUSE SCHEMA
en el esquema primario. - Propiedad de la tabla de streaming o
REFRESH
privilegios en la tabla de streaming. - El propietario de la tabla de streaming debe tener el
SELECT
privilegio 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 CATALOG
privilegios en el catálogo primario y el privilegioUSE SCHEMA
en el esquema primario. -
SELECT
privilegios 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 TABLE
Los 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 laCREATE OR REFRESH
declaración o ALTER STREAMING TABLE. - No se admite la evolución del esquema de tabla a través de comandos DML como
INSERT INTO
yMERGE
. - Los comandos siguientes no se admiten en tablas de streaming:
CREATE TABLE ... CLONE <streaming_table>
COPY INTO
ANALYZE TABLE
RESTORE
TRUNCATE
GENERATE 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.
Ejemplos
-- 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;