CREATE TABLE ... FLOW (pipelines)

Important

Cette fonctionnalité est en version bêta.

Utilisez l’instruction CREATE TABLE ... FLOW pour créer une table managée dans un pipeline, écrite par un ou plusieurs flux.

Syntax

CREATE TABLE
  table_name
  [ table_specification ]
  [ table_clauses ]
  [ flow_clause ]

table_specification
  ( { column_identifier column_type [column_properties] } [, ...] )

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

Pour faner plusieurs sources dans une table managée, déclarez plusieurs flux qui le ciblent avec CREATE FLOW (pipelines) :

CREATE FLOW flow_name AS INSERT INTO table_name BY NAME query

Parameters

  • table_name

    Nom de la table gérée à créer. Si le nom n’est pas qualifié, la table est créée dans le schéma cible du pipeline. Le nom ne doit pas déjà appartenir à une table de diffusion en continu.

  • spécification_de_table

    Définit éventuellement les colonnes, leurs types, propriétés et descriptions. S’il est omis, le schéma est déduit de la requête de flux.

  • PARTITIONED BY (col [, ...])

    Partitionne éventuellement la table par un sous-ensemble de colonnes.

  • Clause CLUSTER BY

    Active éventuellement le clustering liquide sur la table. Vous ne pouvez pas combiner PARTITIONED BY et CLUSTER BY.

  • LOCATION chemin d’accès

    Emplacement de stockage facultatif pour les données de table.

  • COMMENTAIRE table_comment

    Littéral STRING décrivant la table.

  • Clause TBLPROPERTIES

    Définit éventuellement une ou plusieurs propriétés de table définies par l’utilisateur.

  • CLAUSE WITH ROW FILTER

    Ajoute une fonction de filtre de ligne au tableau. Les futures requêtes pour cette table reçoivent un sous-ensemble des lignes pour lesquelles la fonction prend TRUEla valeur .

  • FLOW INSERT [ONCE] BY NAME query

    Définit un flux d’ajout qui insère le résultat de la table, correspondant aux colonnes de query résultat à des colonnes de table par nom. query peut référencer des sources de traitement par lots ou de streaming. ONCE exécute le flux une seule fois (par exemple, pour un remplissage) plutôt que sur chaque mise à jour. Chaque flux nommé traite son entrée exactement une fois par mise à jour de pipeline, identique à FLOW INSERT BY NAME celle d’une table de diffusion en continu.

Limitations

  • Les tables managées ne prennent pas en charge les flux de modification cdc. AUTO CDC INTO(SQL) ou apply_changes / apply_changes_from_snapshot (Python) sur une table managée échoue avec MANAGED_TABLE_DOES_NOT_SUPPORT_CDC. Utilisez un CREATE STREAMING TABLE (pipelines) pour les cibles cdc.
  • Les tables managées ne prennent pas en charge FLOW ... REPLACE WHERE. Seul FLOW INSERT BY NAME est pris en charge.
  • Les tables managées sont prises en charge uniquement dans les pipelines avec le catalogue Unity. Le metastore Hive n’est pas pris en charge.
  • Vous ne pouvez pas réutiliser le nom d’une table de diffusion en continu existante pour une table managée. Supprimez d’abord la table de diffusion en continu, ou l’instruction échoue avec CANNOT_SWITCH_STREAMING_TABLE_TO_MANAGED_TABLE.

Exemples

-- 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');

Ressources additionnelles