CREATE TABLE ... FLOW (canalizaciones)

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 UPDATE expectativa hace que se produzca un error en el procesamiento al crear la tabla, así como al actualizar la tabla. Una DROP ROW expectativa 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_expr puede estar compuesto por literales, identificadores de columna dentro de la tabla y funciones u operadores SQL deterministas incorporados excepto:

    Además, expectation_expr no deben contener ninguna subconsulta .

  • 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 BY y CLUSTER BY.

  • RUTA DE UBICACIÓN

    Una ubicación de almacenamiento opcional para los datos de la tabla.

  • COMENTARIO table_comment

    Literal STRING que 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 query en la tabla, que coincide con las columnas de resultado en las columnas de tabla por nombre. query puede hacer referencia a orígenes por lotes o de streaming. ONCE ejecuta 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 a FLOW INSERT BY NAME en una tabla de streaming.

Limitaciones

  • Las tablas administradas no admiten flujos de cambio CDC. AUTO CDC INTO(SQL) o apply_changes / apply_changes_from_snapshot (Python) en una tabla administrada se produce un error con MANAGED_TABLE_DOES_NOT_SUPPORT_CDC. Use una CREATE STREAMING TABLE (canalización) para destinos CDC.
  • Las tablas administradas no admiten FLOW ... REPLACE WHERE. Solo FLOW INSERT BY NAME es 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;

Recursos adicionales