Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Important
Tato funkce je v beta verzi.
CREATE TABLE ... FLOW Pomocí příkazu vytvořte spravovanou tabulku v kanálu napsanou jedním nebo více toky.
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
Pokud chcete do jedné spravované tabulky přidat více zdrojů, deklarujte několik toků, které ho cílí, pomocí příkazu CREATE FLOW (kanály):
CREATE FLOW flow_name AS INSERT INTO table_name BY NAME query
Parameters
table_name
Název spravované tabulky, která se má vytvořit. Pokud název není kvalifikovaný, vytvoří se tabulka v cílovém schématu kanálu. Název nesmí již patřit do tabulky streamování.
specifikace_tabulek
Volitelně definuje sloupce, jejich typy, vlastnosti a popisy. Pokud ho vynecháte, schéma se odvodí z dotazu toku.
CONSTRAINT expectation_name EXPECT (expectation_expr) [ PŘI PORUŠENÍ { SELHAT UPDATE | SMAZAT ŘÁDEK } ]
Přidává očekávání kvality dat do spravované tabulky. Tato očekávání kvality dat lze sledovat v čase a přistupovat k nim prostřednictvím logu událostí pipeline. Očekávání
FAIL UPDATEzpůsobí selhání zpracování při tvorbě a aktualizaci tabulky. OčekáváníDROP ROWzpůsobí, že pokud se očekávání nesplní, celý řádek bude vynechán. Viz Spravujte kvalitu dat pomocí požadavků na datový potrubí.expectation_exprmůže být složen z literálů, identifikátorů sloupců v tabulce a deterministických vestavěných SQL funkcí nebo operátorů kromě:-
Agregační funkce
- Analytické okenní funkce
- Hodnocení okenních funkcí
- Funkce generátoru tabulkových hodnot
Také
expectation_exprnesmí obsahovat žádný poddotaz.-
Agregační funkce
DĚLENÉ PODLE (sloupec [, ...])
Volitelně rozdělí tabulku podle podmnožina sloupců.
CLUSTER BY klauzule
Volitelně můžete v tabulce povolit shlukování kapalin . Nelze kombinovat
PARTITIONED BYaCLUSTER BY.Cesta k umístění
Volitelné umístění úložiště pro data tabulky.
KOMENTÁŘ table_comment
Literál
STRINGpopisující tabulku.TBLPROPERTIES – klauzule
Volitelně nastaví jednu nebo více uživatelsky definovaných vlastností tabulky.
Klauzule WITH ROW FILTER
Přidá do tabulky funkci filtru řádků. Budoucí dotazy na danou tabulku obdrží podmnožinu řádků, pro které se funkce vyhodnotí
TRUE.FLOW INSERT [JEDNOU] DOTAZ BY NAME
Definuje tok připojení, který vloží výsledek
querydo tabulky a porovnává sloupce výsledků se sloupci tabulky podle názvu.querymůže odkazovat na dávkové nebo streamované zdroje.ONCEspustí tok jednou (například pro backfill) místo každé aktualizace. Každý pojmenovaný tok zpracovává svůj vstup přesně jednou pro aktualizaci kanálu, která je stejná jakoFLOW INSERT BY NAMEu tabulky streamování.
Omezení
- Spravované tabulky nepodporují toky změn CDC.
AUTO CDC INTO(SQL) neboapply_changes/apply_changes_from_snapshot(Python) vůči spravované tabulce selže sMANAGED_TABLE_DOES_NOT_SUPPORT_CDCchybou . Pro cíle CDC použijte kanályCREATE STREAMING TABLE. - Spravované tabulky nepodporují
FLOW ... REPLACE WHERE. Podporuje se jenomFLOW INSERT BY NAME. - Spravované tabulky se podporují jenom v kanálech s katalogem Unity. Metastor Hive se nepodporuje.
- Název existující tabulky streamování pro spravovanou tabulku nelze znovu použít. Nejprve odstraňte streamovací tabulku nebo příkaz selže s
CANNOT_SWITCH_STREAMING_TABLE_TO_MANAGED_TABLE.
Příklady
-- Create a managed table populated by an inline append flow from a streaming table
CREATE TABLE output
FLOW INSERT BY NAME SELECT * FROM STREAM(samples.tpch.orders);
-- Create a managed table that ingests files with schema inference and evolution
CREATE TABLE raw_data
FLOW INSERT BY NAME
SELECT * FROM STREAM read_files('abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/base/path');
-- 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 liquid clustering
CREATE TABLE orders_clustered
CLUSTER BY (order_date, customer_id)
FLOW INSERT BY NAME
SELECT
o_orderkey AS order_id,
o_custkey AS customer_id,
o_orderdate AS order_date,
o_totalprice AS total_price
FROM STREAM(samples.tpch.orders);
-- 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 STREAM read_files('s3://bucket/path', format => 'json');