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.
Importante
Esta característica se encuentra en su versión beta.
Use la CREATE TABLE ... FLOW instrucción para crear una tabla administrada en una canalización, escrita por uno o varios flujos.
Syntax
CREATE TABLE
table_name
[ table_specification ]
[ table_clauses ]
[ flow_clause ]
table_specification
( { column_identifier column_type [column_properties] } [, ...]
[ CONSTRAINT expectation_name EXPECT (expectation_expr)
[ ON VIOLATION { FAIL UPDATE | DROP ROW } ] ] [, ...] )
table_clauses
{ PARTITIONED BY (col [, ...]) |
CLUSTER BY clause |
LOCATION path |
COMMENT table_comment |
TBLPROPERTIES clause |
WITH { ROW FILTER clause } } [ ... ]
flow_clause
FLOW INSERT [ONCE] BY NAME query
Para fanar varios orígenes en una tabla administrada, declare varios flujos que tienen como destino CREATE FLOW (canalizaciones)::
CREATE FLOW flow_name AS INSERT INTO table_name BY NAME query
Parameters
table_name
Nombre de la tabla administrada que se va a crear. Si el nombre no está calificado, la tabla se crea en el esquema de destino de la canalización. El nombre aún no debe pertenecer a una tabla de streaming.
especificación_de_tabla
Opcionalmente, define las columnas, sus tipos, propiedades y descripciones. Si se omite, el esquema se deduce de la consulta de flujo.
CONSTRAINT expectation_name EXPECT (expectation_expr) [ EN CASO DE VIOLACIÓN { FALLAR UPDATE | ELIMINAR FILA } ]
Añade expectativas de calidad de datos a la tabla gestionada. Estas expectativas de calidad de datos pueden rastrearse a lo largo del tiempo y acceder a través del registro de eventos de la canalización. Una
FAIL UPDATEexpectativa hace que se produzca un error en el procesamiento al crear la tabla, así como al actualizar la tabla. UnaDROP ROWexpectativa hace que se quite toda la fila si no se cumple la expectativa. Consulte Administración de la calidad de los datos con las expectativas de canalización.expectation_exprpuede estar compuesto por literales, identificadores de columna dentro de la tabla y funciones u operadores SQL deterministas incorporados excepto:-
Funciones de agregado
- Funciones de ventana analítica
- Funciones de ventana de clasificación
- Funciones generadoras de valores de tabla
Además,
expectation_exprno deben contener ninguna subconsulta .-
Funciones de agregado
PARTICIONADO POR (col [, ...])
Opcionalmente, particiona la tabla por un subconjunto de columnas.
CLUSTER BY cláusula
Opcionalmente, habilita la agrupación en clústeres líquidos en la tabla. No se puede combinar
PARTITIONED BYyCLUSTER BY.RUTA DE UBICACIÓN
Una ubicación de almacenamiento opcional para los datos de la tabla.
COMENTARIO table_comment
Literal
STRINGque describe la tabla.Cláusula TBLPROPERTIES
Opcionalmente, establece una o varias propiedades de tabla definidas por el usuario.
Cláusula WITH ROW FILTER
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.CONSULTA FLOW INSERT [ONCE] BY NAME
Define un flujo de anexión que inserta el resultado de
queryen la tabla, que coincide con las columnas de resultado en las columnas de tabla por nombre.querypuede hacer referencia a orígenes por lotes o de streaming.ONCEejecuta el flujo una sola vez (por ejemplo, para un reposición) en lugar de en cada actualización. Cada flujo con nombre procesa su entrada exactamente una vez por actualización de canalización, idéntica aFLOW INSERT BY NAMEen una tabla de streaming.
Limitaciones
- Las tablas administradas no admiten flujos de cambio CDC.
AUTO CDC INTO(SQL) oapply_changes/apply_changes_from_snapshot(Python) en una tabla administrada se produce un error conMANAGED_TABLE_DOES_NOT_SUPPORT_CDC. Use una CREATE STREAMING TABLE (canalización) para destinos CDC. - Las tablas administradas no admiten
FLOW ... REPLACE WHERE. SoloFLOW INSERT BY NAMEes compatible. - Las tablas administradas solo se admiten en canalizaciones con El catálogo de Unity. No se admite el metastore de Hive.
- No se puede reutilizar el nombre de una tabla de streaming existente para una tabla administrada. Quite primero la tabla de streaming o se produzca un error en la instrucción con
CANNOT_SWITCH_STREAMING_TABLE_TO_MANAGED_TABLE.
Ejemplos
-- Create a managed table populated by an append flow
CREATE TABLE output
FLOW INSERT BY NAME SELECT id FROM LIVE.source;
-- Create a partitioned managed table from a streaming source
CREATE TABLE events
PARTITIONED BY (bucket)
FLOW INSERT BY NAME
SELECT id, bucket FROM STREAM read_files('abfss://my_path', format => 'json');
-- Create a managed table with a data quality expectation that drops violating rows
CREATE TABLE valid_events
(CONSTRAINT positive_id EXPECT (id > 0) ON VIOLATION DROP ROW)
FLOW INSERT BY NAME SELECT id FROM LIVE.source;