Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Important
Den här funktionen finns i Beta.
Använd -instruktionen CREATE TABLE ... FLOW för att skapa en hanterad tabell i en pipeline som skrivits av ett eller flera flöden.
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
Om du vill koppla flera källor till en hanterad tabell deklarerar du flera flöden som riktar sig mot den med CREATE FLOW (pipelines):
CREATE FLOW flow_name AS INSERT INTO table_name BY NAME query
Parameters
table_name
Namnet på den hanterade tabell som ska skapas. Om namnet inte är kvalificerat skapas tabellen i pipelinens målschema. Namnet får inte redan tillhöra en strömmande tabell.
tabellspecifikation
Du kan också definiera kolumnerna, deras typer, egenskaper och beskrivningar. Om det utelämnas härleds schemat från flödesfrågan.
CONSTRAINT expectation_name EXPECT (expectation_expr) [ ON VIOLATION { FAIL UPDATE | TA BORT RAD } ]
Lägger till datakvalitetsförväntningar i den hanterade tabellen. Dessa datakvalitetsförväntningar kan spåras över tid och nås via pipelinens händelselogg. En
FAIL UPDATEförväntan gör att bearbetningen misslyckas både när du skapar tabellen och uppdaterar tabellen. EnDROP ROWförväntan gör att hela raden tas bort om förväntningarna inte uppfylls. Se avsnittet Hantera datakvalitet med pipeline-förväntningar.expectation_exprkan bestå av literaler, kolumnidentifierare i tabellen och deterministiska, inbyggda SQL-funktioner eller operatorer förutom:-
Mängdfunktioner
- Analytiska fönsterfunktioner
- Funktioner för rangordningsfönster
- Generatorfunktioner som returnerar tabellvärden
Får inte heller
expectation_exprinnehålla någon underfråga.-
Mängdfunktioner
PARTITIONERAD AV (col [, ...])
Du kan också partitioneras tabellen med en delmängd kolumner.
CLUSTER BY-klausul
Du kan också aktivera flytande klustring i tabellen. Du kan inte kombinera
PARTITIONED BYochCLUSTER BY.Plats sökväg
En valfri lagringsplats för tabelldata.
KOMMENTAR table_comment
En
STRINGliteral som beskriver tabellen.TBLPROPERTIES-sats
Du kan också ange en eller flera användardefinierade tabellegenskaper.
WITH-sats ROW FILTER
Lägger till en radfilterfunktion i tabellen. Framtida frågor för tabellen tar emot en delmängd av de rader som funktionen utvärderar till
TRUE.FLÖDE INSERT [EN GÅNG] EFTER NAMNfråga
Definierar ett tilläggsflöde som infogar resultatet av
queryi tabellen och matchar resultatkolumner till tabellkolumner efter namn.querykan referera till batch- eller strömningskällor.ONCEkör flödet en gång (till exempel för en återfyllnad) i stället för vid varje uppdatering. Varje namngivet flöde bearbetar sina indata exakt en gång per pipelineuppdatering, identisk medFLOW INSERT BY NAMEi en strömmande tabell.
Limitations
- Hanterade tabeller stöder inte CDC-ändringsflöden.
AUTO CDC INTO(SQL) ellerapply_changes/apply_changes_from_snapshot(Python) mot en hanterad tabell misslyckas medMANAGED_TABLE_DOES_NOT_SUPPORT_CDC. Använd en CREATE STREAMING TABLE (pipelines) för CDC-mål. - Hanterade tabeller stöder
FLOW ... REPLACE WHEREinte . EndastFLOW INSERT BY NAMEstöds. - Hanterade tabeller stöds endast i pipelines med Unity Catalog. Hive-metaarkivet stöds inte.
- Du kan inte återanvända namnet på en befintlig strömmande tabell för en hanterad tabell. Släpp direktuppspelningstabellen först, annars misslyckas instruktionen med
CANNOT_SWITCH_STREAMING_TABLE_TO_MANAGED_TABLE.
Exempel
-- 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;