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.
Tampilan termaterialisasi adalah tampilan di mana hasil yang telah dikomputasi tersedia untuk query dan dapat diperbarui untuk mencerminkan perubahan dalam input. tampilan terwujud didukung oleh rangkaian proses. Setiap kali tampilan materialisasi diperbarui, hasil kueri dihitung ulang untuk mencerminkan perubahan dalam himpunan data hulu. Anda dapat memperbarui tampilan materialisasi secara manual atau sesuai jadwal.
Untuk mempelajari selengkapnya tentang cara melakukan atau menjadwalkan pembaruan, lihat Menjalankan pembaruan alur.
Syntax
CREATE [OR REFRESH] [PRIVATE] MATERIALIZED VIEW
view_name
[ column_list ]
[ view_clauses ]
AS query
column_list
( { column_name column_type column_properties } [, ...]
[ column_constraint ] [, ...]
[ , table_constraint ] [...] )
column_properties
{ NOT NULL | COMMENT column_comment | column_constraint | MASK clause } [ ... ]
view_clauses
{ USING DELTA |
PARTITIONED BY (col [, ...]) |
CLUSTER BY clause |
LOCATION path |
COMMENT view_comment |
TBLPROPERTIES clause |
WITH { ROW FILTER clause } } [...]
Parameter-parameternya
REFRESH
Jika ditentukan, akan membuat tampilan, atau memperbarui tampilan yang sudah ada dan kontennya.
SWASTA
Membuat tampilan terwujud privat. Tampilan materialisasi privat dapat berguna sebagai tabel perantara dalam alur yang tidak ingin Anda terbitkan ke katalog.
- Mereka tidak ditambahkan ke katalog dan hanya dapat diakses dalam alur yang menentukan
- Mereka dapat memiliki nama yang sama dengan objek yang ada di katalog. Dalam alur, jika tampilan materialisasi privat dan objek dalam katalog memiliki nama yang sama, referensi ke nama akan diselesaikan ke tampilan materialisasi privat.
- Tampilan materialisasi privat hanya bertahan selama masa pakai alur, bukan hanya satu pembaruan.
Tampilan materialisasi privat sebelumnya dibuat dengan parameter
TEMPORARY.view_name
Nama tampilan baru yang dibuat. Nama tampilan yang sepenuhnya memenuhi syarat harus unik.
Tampilan materialisasi privat dapat memiliki nama yang sama dengan objek yang diterbitkan dalam katalog.
column_list
Secara opsional memberi label kolom dalam hasil kueri tampilan. Jika Anda menyediakan daftar kolom, jumlah alias kolom harus cocok dengan jumlah ekspresi dalam kueri. Jika tidak ada daftar kolom yang ditentukan, alias berasal dari isi tampilan.
-
Nama kolom harus unik dan sesuai dengan kolom output kueri.
jenis_kolom
Menentukan jenis data kolom. Tidak semua jenis data yang didukung Azure Databricks didukung oleh tampilan materialisasi.
column_comment
STRINGopsional yang menjelaskan kolom. Opsi ini harus ditentukan bersama dengancolumn_type. Jika jenis kolom tidak ditentukan, komentar kolom akan dilewati.-
Menambahkan batasan yang memvalidasi data saat mengalir ke tabel. Lihat Mengelola kualitas data dengan ekspektasi alur kerja.
-
Penting
Fitur ini ada di Pratinjau Umum.
Menambahkan fungsi masker kolom untuk menganonimkan data sensitif. Lihat Filter baris dan masker kolom.
-
pembatasan_tabel
Penting
Fitur ini ada di Pratinjau Umum.
Saat menentukan skema, Anda dapat menentukan kunci primer dan asing. Batasan bersifat informasi dan tidak diberlakukan. Lihat klausa CONSTRAINT dalam referensi bahasa SQL.
Nota
Untuk menentukan batasan tabel, alur Anda harus berupa alur yang mendukung Katalog Unity.
view_clauses
Secara opsional tentukan partisi, komentar, dan properti yang ditentukan pengguna untuk tampilan materialisasi. Setiap sub klausul hanya dapat ditentukan satu kali.
MENGGUNAKAN DELTA
Menetapkan format data. Satu-satunya opsi adalah DELTA.
Klausa ini bersifat opsional, dan secara default menjadi DELTA.
DISEGMENKAN OLEH
Daftar opsional dari satu atau beberapa kolom yang akan digunakan untuk pemartisian dalam tabel. Bersifat saling eksklusif dengan
CLUSTER BY.Pengklusteran cairan memberikan solusi yang fleksibel dan dioptimalkan untuk pengklusteran. Pertimbangkan menggunakan
CLUSTER BYalih-alihPARTITIONED BYuntuk pipeline.CLUSTER BY
Aktifkan pengklusteran cair pada tabel dan tentukan kolom yang akan digunakan sebagai kunci pengklusteran. Gunakan pengklusteran cairan otomatis dengan
CLUSTER BY AUTO, dan Databricks dengan cerdas memilih kunci pengklusteran untuk mengoptimalkan performa kueri. Bersifat saling eksklusif denganPARTITIONED BY.LOKASI
Lokasi penyimpanan opsional untuk data tabel. Jika tidak diatur, sistem akan menggunakan lokasi penyimpanan pipeline secara default.
Opsi ini hanya tersedia saat menerbitkan ke Hive metastore. Di Katalog Unity, lokasi dikelola secara otomatis.
KOMENTAR
Deskripsi opsional untuk tabel.
TBLPROPERTIES
Daftar properti tabel opsional untuk tabel.
DENGAN ROW FILTER
Penting
Fitur ini ada di Pratinjau Umum.
Menambahkan fungsi filter baris ke tabel. Kueri di masa mendatang untuk tabel tersebut akan mendapatkan bagian dari baris-baris yang fungsinya bernilai BENAR. Ini berguna untuk kontrol akses terperintah, karena memungkinkan fungsi untuk memeriksa identitas dan keanggotaan grup pengguna yang memanggil untuk memutuskan apakah akan memfilter baris tertentu.
Lihat klausa
ROW FILTER.kueri
Kueri yang menentukan himpunan data untuk tabel.
Memerlukan izin
Pengguna 'run-as' untuk pipeline harus memiliki izin berikut:
-
SELECThak istimewa atas tabel dasar yang dirujuk oleh tampilan materialisasi. -
USE CATALOGhak istimewa pada katalog induk dan hak istimewaUSE SCHEMApada skema induk. -
CREATE MATERIALIZED VIEWhak istimewa pada skema untuk tampilan materialisasi.
Agar pengguna dapat memperbarui pipeline tempat tampilan materialisasi didefinisikan, mereka memerlukan:
-
USE CATALOGhak istimewa pada katalog induk dan hak istimewaUSE SCHEMApada skema induk. - Kepemilikan tampilan termaterialisasi atau
REFRESHprivilege pada tampilan termaterialisasi. - Pemilik tampilan materialisasi harus memiliki
SELECThak istimewa atas tabel dasar yang dirujuk oleh tampilan materialisasi.
Agar pengguna dapat mengkueri tampilan materialisasi yang dihasilkan, mereka memerlukan:
-
USE CATALOGhak istimewa pada katalog induk dan hak istimewaUSE SCHEMApada skema induk. -
SELECThak istimewa atas tampilan materialisasi.
Keterbatasan
- Saat tampilan terwujud dengan agregat
summelalui kolom berkemampuan NULL memiliki nilai non-NULL terakhir yang dihapus dari kolom tersebut - dan dengan demikian hanyaNULLnilai yang tetap ada di kolom tersebut - nilai agregat hasil tampilan materialisasi mengembalikan nol alih-alihNULL. - Referensi kolom tidak memerlukan alias. Ekspresi referensi non-kolom memerlukan alias, seperti dalam contoh berikut:
- Diperbolehkan:
SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1 - Dilarang:
SELECT col1, SUM(col2) FROM t GROUP BY col1
- Diperbolehkan:
-
NOT NULLharus ditentukan secara manual bersama denganPRIMARY KEYagar menjadi pernyataan yang valid. - Tampilan terwujud tidak mendukung kolom identitas atau kunci pengganti.
- Tampilan materialisasi tidak mendukung perintah
OPTIMIZEdanVACUUM. Pemeliharaan terjadi secara otomatis. - Mengganti nama tabel atau mengubah pemilik tidak didukung.
- Kolom yang dihasilkan, kolom identitas, dan kolom default tidak didukung.
Examples
-- Create a materialized view by reading from an external data source, using the default schema:
CREATE OR REFRESH MATERIALIZED VIEW taxi_raw
AS SELECT * FROM read_files("/databricks-datasets/nyctaxi/sample/json/")
-- Create a materialized view by reading from a dataset defined in a pipeline:
CREATE OR REFRESH MATERIALIZED VIEW filtered_data
AS SELECT
...
FROM taxi_raw
-- Specify a schema and clustering columns for a table:
CREATE OR REFRESH MATERIALIZED VIEW sales
(customer_id STRING,
customer_name STRING,
number_of_line_items STRING,
order_datetime STRING,
order_number LONG,
order_day_of_week STRING GENERATED ALWAYS AS (dayofweek(order_datetime))
) CLUSTER BY (order_day_of_week, customer_id)
COMMENT "Raw data on sales"
AS SELECT * FROM ...
-- Specify partition columns for a table:
CREATE OR REFRESH MATERIALIZED VIEW sales
(customer_id STRING,
customer_name STRING,
number_of_line_items STRING,
order_datetime STRING,
order_number LONG,
order_day_of_week STRING GENERATED ALWAYS AS (dayofweek(order_datetime))
) PARTITIONED BY (order_day_of_week)
COMMENT "Raw data on sales"
AS SELECT * FROM ...
-- Specify a primary and foreign key constraint for a table:
CREATE OR REFRESH MATERIALIZED VIEW sales
(customer_id STRING NOT NULL PRIMARY KEY,
customer_name STRING,
number_of_line_items STRING,
order_datetime STRING,
order_number LONG,
order_day_of_week STRING GENERATED ALWAYS AS (dayofweek(order_datetime)),
CONSTRAINT fk_customer_id FOREIGN KEY (customer_id) REFERENCES main.default.customers(customer_id)
)
COMMENT "Raw data on sales"
AS SELECT * FROM ...
-- Specify a row filter and mask clause for a table:
CREATE OR REFRESH MATERIALIZED VIEW sales (
customer_id STRING MASK catalog.schema.customer_id_mask_fn,
customer_name STRING,
number_of_line_items STRING COMMENT 'Number of items in the order',
order_datetime STRING,
order_number LONG,
order_day_of_week STRING GENERATED ALWAYS AS (dayofweek(order_datetime))
)
COMMENT "Raw data on sales"
WITH ROW FILTER catalog.schema.order_number_filter_fn ON (order_number)
AS SELECT * FROM sales_bronze