Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 BYetCLUSTER BY.LOCATION chemin d’accès
Emplacement de stockage facultatif pour les données de table.
COMMENTAIRE table_comment
Littéral
STRINGdé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
queryrésultat à des colonnes de table par nom.querypeut référencer des sources de traitement par lots ou de streaming.ONCEexé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 NAMEcelle 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) ouapply_changes/apply_changes_from_snapshot(Python) sur une table managée échoue avecMANAGED_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. SeulFLOW INSERT BY NAMEest 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');