Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Important
Questa funzionalità è in versione beta.
Usare l'istruzione CREATE TABLE ... FLOW per creare una tabella gestita in una pipeline, scritta da uno o più flussi.
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
Per eseguire il fan di più origini in una tabella gestita, dichiarare diversi flussi destinati a esso con CREATE FLOW (pipeline):
CREATE FLOW flow_name AS INSERT INTO table_name BY NAME query
Parameters
table_name
Nome della tabella gestita da creare. Se il nome non è qualificato, la tabella viene creata nello schema di destinazione della pipeline. Il nome non deve appartenere già a una tabella di streaming.
specifica_tavola
Facoltativamente, definisce le colonne, i relativi tipi, proprietà e descrizioni. Se omesso, lo schema viene dedotto dalla query di flusso.
CONSTRAINT nome_attesa ATTENDI (espressione_attesa) [ SU VIOLAZIONE { FALLIMENTO UPDATE | RIDUCI RIGA } ]
Aggiunge aspettative di qualità dei dati alla tabella gestita. Queste aspettative di qualità dei dati possono essere monitorate nel tempo e accessibili tramite il log eventi della pipeline. Un'aspettativa
FAIL UPDATEfa fallire l'elaborazione sia durante la creazione che durante l'aggiornamento della tabella. Se l'aspettativaDROP ROWnon viene soddisfatta, l'intera riga viene eliminata. Vedi Gestisci la qualità dei dati con le aspettative della pipeline.expectation_exprpuò essere composto da letterali, identificatori di colonna all'interno della tabella e funzioni o operatori SQL deterministici integrati, tranne che:-
Funzioni di aggregazione
- Funzioni di finestra analitica
- funzioni di finestra di classifica
- Funzioni generatrici con valori tabulari
Inoltre,
expectation_exprnon deve contenere alcuna sottoquery.-
Funzioni di aggregazione
SUDDIVISO DA (col [, ...])
Facoltativamente, partiziona la tabella in base a un subset di colonne.
CLUSTER BY clausola
Facoltativamente, abilita il clustering liquido nella tabella. Non è possibile combinare
PARTITIONED BYeCLUSTER BY.PERCORSO
Percorso di archiviazione facoltativo per i dati della tabella.
COMMENTO table_comment
Valore
STRINGletterale che descrive la tabella.Clausola TBLPROPERTIES
Facoltativamente, imposta una o più proprietà di tabella definite dall'utente.
Clausola WITH ROW FILTER
Aggiunge una funzione di filtro di riga alla tabella. Le query future per tale tabella ricevono un subset delle righe per cui la funzione restituisce
TRUE.QUERY FLOW INSERT [ONCE] BY NAME
Definisce un flusso di accodamento che inserisce il risultato di
querynella tabella, associando le colonne dei risultati alle colonne della tabella in base al nome.querypuò fare riferimento a origini batch o di streaming.ONCEesegue il flusso una sola volta (ad esempio, per un backfill) anziché in ogni aggiornamento. Ogni flusso denominato elabora l'input esattamente una volta per ogni aggiornamento della pipeline, identico a inFLOW INSERT BY NAMEuna tabella di streaming.
Limitations
- Le tabelle gestite non supportano i flussi di modifica CDC.
AUTO CDC INTO(SQL) oapply_changes/apply_changes_from_snapshot(Python) in una tabella gestita non riesce conMANAGED_TABLE_DOES_NOT_SUPPORT_CDC. Usare una CREATE STREAMING TABLE (pipeline) per le destinazioni CDC. - Le tabelle gestite non supportano
FLOW ... REPLACE WHERE. È supportato soloFLOW INSERT BY NAME. - Le tabelle gestite sono supportate solo nelle pipeline con Il catalogo unity. Il metastore Hive non è supportato.
- Non è possibile riutilizzare il nome di una tabella di streaming esistente per una tabella gestita. Eliminare prima la tabella di streaming oppure l'istruzione ha esito negativo con
CANNOT_SWITCH_STREAMING_TABLE_TO_MANAGED_TABLE.
Examples
-- 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;