Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Important
Fitur ini ada di Beta.
CREATE TABLE ... FLOW Gunakan pernyataan untuk membuat tabel terkelola dalam alur, yang ditulis oleh satu atau beberapa alur.
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
Untuk menginterpretasikan beberapa sumber ke dalam satu tabel terkelola, deklarasikan beberapa alur yang menargetkannya dengan CREATE FLOW (alur):
CREATE FLOW flow_name AS INSERT INTO table_name BY NAME query
Parameters
table_name
Nama tabel terkelola yang akan dibuat. Jika nama tidak memenuhi syarat, tabel dibuat dalam skema target alur. Nama belum boleh menjadi milik tabel streaming.
spesifikasi_tabel
Secara opsional menentukan kolom, jenis, properti, dan deskripsinya. Jika dihilangkan, skema disimpulkan dari kueri alur.
CONSTRAINT nama_ekspetasi EXPECT (ekspresi_ekspetasi) [ PADA PELANGGARAN { GAGAL UPDATE | HAPUS BARIS } ]
Menambahkan ekspektasi kualitas data ke tabel yang dikelola. Ekspektasi kualitas data ini dapat dilacak dari waktu ke waktu dan diakses melalui log peristiwa pipeline. Ekspektasi
FAIL UPDATEmenyebabkan pemrosesan gagal saat membuat tabel serta me-refresh tabel.DROP ROWEkspektasi menyebabkan seluruh baris dihapus jika ekspektasi tidak terpenuhi. Lihat Mengelola kualitas data dengan ekspektasi alur kerja.expectation_exprdapat terdiri dari literal, pengenal kolom dalam tabel, dan fungsi atau operator SQL bawaan deterministik kecuali:-
Fungsi Agregat
- Fungsi jendela analitik
- Fungsi jendela peringkat
- Fungsi penghasil nilai tabel
Juga
expectation_exprtidak boleh berisi subkueri apa pun.-
Fungsi Agregat
DIPARTISI OLEH (kol [, ...])
Secara opsional mempartisi tabel menurut subset kolom.
CLUSTER BY klausa
Secara opsional memungkinkan pengklusteran cairan pada tabel. Anda tidak dapat menggabungkan
PARTITIONED BYdanCLUSTER BY.Jalur LOKASI
Lokasi penyimpanan opsional untuk data tabel.
KOMENTAR table_comment
Literal
STRINGyang menjelaskan tabel.Klausa TBLPROPERTIES
Secara opsional mengatur satu atau beberapa properti tabel yang ditentukan pengguna.
Klausa WITH ROW FILTER
Menambahkan fungsi filter baris ke tabel. Kueri di masa mendatang untuk tabel tersebut menerima subset baris tempat fungsi dievaluasi ke
TRUE.KUERI FLOW INSERT [ONCE] BY NAME
Menentukan alur tambahan yang menyisipkan hasil
queryke dalam tabel, mencocokkan kolom hasil ke kolom tabel berdasarkan nama.querydapat mereferensikan sumber batch atau streaming.ONCEmenjalankan alur satu kali (misalnya, untuk isi ulang) daripada pada setiap pembaruan. Setiap alur bernama memproses inputnya tepat sekali per pembaruan alur, identik denganFLOW INSERT BY NAMEpada tabel streaming.
Keterbatasan
- Tabel terkelola tidak mendukung alur perubahan CDC.
AUTO CDC INTO(SQL) atauapply_changes/apply_changes_from_snapshot(Python) terhadap tabel terkelola gagal denganMANAGED_TABLE_DOES_NOT_SUPPORT_CDC. CREATE STREAMING TABLE Gunakan (alur) untuk target CDC. - Tabel terkelola tidak mendukung
FLOW ... REPLACE WHERE. HanyaFLOW INSERT BY NAMEyang didukung. - Tabel terkelola hanya didukung dalam alur dengan Unity Catalog. Metastore Apache Hive tidak didukung.
- Anda tidak dapat menggunakan kembali nama tabel streaming yang ada untuk tabel terkelola. Letakkan tabel streaming terlebih dahulu, atau pernyataan gagal dengan
CANNOT_SWITCH_STREAMING_TABLE_TO_MANAGED_TABLE.
Examples
-- 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');