Menggunakan tampilan materialisasi di Databricks SQL
- Jika Anda perlu menggunakan koneksi Azure Private Link dengan tampilan materialisasi Anda, hubungi perwakilan Databricks Anda.
Artikel ini menjelaskan cara membuat dan menggunakan tampilan materialisasi di Databricks SQL untuk meningkatkan performa dan mengurangi biaya beban kerja pemrosesan dan analisis data Anda.
Apa itu tampilan materialisasi?
Di Databricks SQL, tampilan materialisasi adalah tabel terkelola Unity Catalog yang memungkinkan pengguna untuk melakukan prakompeksi hasil berdasarkan versi terbaru data dalam tabel sumber. Tampilan materialisasi pada Azure Databricks berbeda dari implementasi lain karena hasil yang dikembalikan mencerminkan status data ketika tampilan materialisasi terakhir di-refresh daripada selalu memperbarui hasil saat tampilan materialisasi dikueri. Anda dapat me-refresh tampilan terwujud secara manual atau menjadwalkan refresh.
Tampilan materialisasi sangat kuat untuk beban kerja pemrosesan data seperti pemrosesan ekstrak, transformasi, dan pemuatan (ETL). Tampilan materialisasi menyediakan cara sederhana dan deklaratif untuk memproses data untuk kepatuhan, koreksi, agregasi, atau pengambilan data perubahan umum (CDC). Tampilan materialisasi mengurangi biaya dan meningkatkan latensi kueri dengan melakukan pra-komputasi kueri lambat dan komputasi yang sering digunakan. Tampilan materialisasi juga memungkinkan transformasi yang mudah digunakan dengan membersihkan, memperkaya, dan mendenormalisasi tabel dasar. Tampilan materialisasi dapat mengurangi biaya sambil memberikan pengalaman pengguna akhir yang disederhanakan karena, dalam beberapa kasus, mereka dapat secara bertahap menghitung perubahan dari tabel dasar.
Tampilan materialisasi pertama kali didukung di Azure Databricks dengan peluncuran Delta Live Tables. Saat Anda membuat tampilan materialisasi di gudang Databricks SQL, alur Delta Live Tables dibuat untuk memproses refresh ke tampilan materialisasi. Anda dapat memantau status operasi refresh di UI Tabel Langsung Delta, API Tabel Langsung Delta, atau CLI Tabel Langsung Delta. Lihat Menampilkan status refresh tampilan materialisasi.
Persyaratan
Untuk membuat atau merefresh tampilan materialisasi:
Anda harus menggunakan gudang SQL pro yang diaktifkan Katalog Unity atau tanpa server.
Untuk me-refresh tampilan materialisasi, Anda harus berada di ruang kerja yang membuatnya.
Ruang kerja Anda harus berada di wilayah yang mendukung gudang SQL tanpa server.
Untuk mengkueri tampilan materialisasi:
- Anda harus menjadi pemilik tampilan materialisasi, atau memiliki
SELECT
tampilan materialisasi, bersama denganUSE SCHEMA
danUSE CATALOG
pada orang tuanya. - Anda harus menggunakan salah satu sumber daya komputasi berikut:
- Gudang SQL
- Antarmuka Tabel Langsung Delta
- Komputasi mode akses bersama
- Mode akses pengguna tunggal pada Databricks Runtime 15.4 ke atas, selama ruang kerja diaktifkan untuk komputasi tanpa server. Lihat Kontrol akses halus pada komputasi pengguna tunggal
- Hanya jika Anda adalah pemilik tampilan materialisasi: sumber daya komputasi mode akses pengguna tunggal yang menjalankan Databricks Runtime 15.3 ke bawah.
Untuk mempelajari tentang batasan lain dalam menggunakan tampilan materialisasi, lihat Batasan.
Membuat tampilan materialisasi
Operasi tampilan CREATE
materialisasi Databricks SQL menggunakan gudang Databricks SQL untuk membuat dan memuat data dalam tampilan materialisasi. Membuat tampilan materialisasi adalah operasi sinkron, yang berarti perintah CREATE MATERIALIZED VIEW
memblokir hingga tampilan materialisasi dibuat dan beban data awal selesai. Alur Delta Live Tables tanpa server secara otomatis dibuat untuk setiap tampilan materialisasi Databricks SQL. Saat tampilan materialisasi disegarkan, alur Tabel Langsung Delta memproses refresh.
Untuk membuat tampilan materialisasi, gunakan CREATE MATERIALIZED VIEW
pernyataan . Untuk mengirimkan pernyataan buat, gunakan editor SQL di UI Azure Databricks, Databricks SQL CLI, atau Databricks SQL API.
Untuk detail tentang sintaks dan parameter, lihat MEMBUAT TAMPILAN MATERIALISASI.
Catatan
Pengguna yang membuat tampilan materialisasi adalah pemilik tampilan materialisasi dan harus memiliki izin berikut:
SELECT
hak istimewa pada tabel dasar yang dirujuk oleh tampilan materialisasi.USE CATALOG
danUSE SCHEMA
hak istimewa pada katalog dan skema yang berisi tabel sumber untuk tampilan materialisasi.USE CATALOG
danUSE SCHEMA
hak istimewa pada katalog target dan skema untuk tampilan materialisasi.CREATE TABLE
hak istimewa padaCREATE MATERIALIZED VIEW
skema yang berisi tampilan materialisasi.
Contoh berikut membuat tampilan mv1
materialisasi dari tabel base_table1
dasar :
CREATE MATERIALIZED VIEW mv1
AS SELECT
date, sum(sales) AS sum_of_sales
FROM
table1
GROUP BY
date;
Memuat data dari sistem eksternal
Databricks merekomendasikan pemuatan data eksternal menggunakan Federasi Lakehouse untuk sumber data yang didukung. Untuk informasi tentang memuat data dari sumber yang tidak didukung oleh Federasi Lakehouse, lihat Opsi format data.
Merefresh tampilan materialisasi
Operasi REFRESH
me-refresh tampilan materialisasi untuk mencerminkan perubahan terbaru pada tabel dasar. Operasi ini sinkron secara default, yang berarti bahwa perintah memblokir hingga operasi refresh selesai. Untuk me-refresh tampilan materialisasi, gunakan REFRESH MATERIALIZED VIEW
pernyataan . Lihat REFRESH (TAMPILAN MATERIALISASI atau TABEL STREAMING) untuk detail tentang sintaks dan parameter SQL untuk perintah ini. Untuk mempelajari selengkapnya tentang jenis tampilan materialisasi yang dapat disegarkan secara bertahap, lihat Operasi refresh untuk tampilan materialisasi.
Untuk mengirimkan pernyataan refresh, gunakan editor SQL di UI Azure Databricks, buku catatan yang dilampirkan ke gudang SQL, Databricks SQL CLI, atau Databricks SQL API.
Hanya pemilik yang dapat REFRESH
mewujudkan tampilan.
Contoh berikut me-refresh tampilan materialisasi mv1
:
REFRESH MATERIALIZED VIEW mv1;
Bagaimana tampilan materialisasi Databricks SQL disegarkan?
Tampilan materialisasi secara otomatis membuat dan menggunakan alur Tabel Langsung Delta tanpa server untuk memproses operasi refresh. Refresh dikelola oleh alur Tabel Langsung Delta dan pembaruan dipantau oleh gudang Databricks SQL yang digunakan untuk membuat tampilan materialisasi.
Alur Tabel Langsung Delta menggunakan mode eksekusi berkelanjutan atau terpicu. Tampilan materialisasi dapat diperbarui dalam salah satu mode eksekusi. Untuk menghindari pemrosesan yang tidak perlu saat beroperasi dalam mode eksekusi berkelanjutan, alur secara otomatis memantau tabel Delta dependen dan melakukan pembaruan hanya ketika konten tabel dependen tersebut telah berubah. Lihat Apa itu alur Delta Live Tables?.
Catatan
Runtime Tabel Langsung Delta tidak dapat mendeteksi perubahan di sumber data non-Delta. Tabel masih diperbarui secara teratur tetapi dengan interval pemicu default yang lebih tinggi untuk mencegah komputasi ulang yang berlebihan memperlambat pemrosesan bertahap yang terjadi pada komputasi.
Secara default, operasi refresh dilakukan secara sinkron. Anda juga dapat mengatur operasi refresh agar terjadi secara asinkron. Perilaku yang terkait dengan setiap pendekatan adalah sebagai berikut:
- Sinkron: Refresh sinkron memblokir operasi lain hingga operasi refresh selesai. Ini memungkinkan Anda untuk urutan operasi refresh dalam alat orkestrasi, seperti Pekerjaan. Untuk mengatur tampilan materialisasi dengan Pekerjaan, gunakan jenis tugas SQL . Lihat Menjadwalkan dan mengatur Alur Kerja.
- Asinkron: Refresh asinkron memulai pekerjaan latar belakang pada komputasi Delta Live Tables saat refresh tampilan materialisasi dimulai, dan perintah kembali sebelum pemuatan data selesai.
Beberapa kueri dapat disegarkan secara bertahap. Lihat Operasi refresh untuk tampilan materialisasi. Jika refresh inkremental tidak dapat dilakukan, refresh penuh dilakukan sebagai gantinya.
Menjadwalkan refresh tampilan materialisasi
Anda dapat mengonfigurasi tampilan materialisasi Databricks SQL untuk di-refresh secara otomatis berdasarkan jadwal yang ditentukan. Untuk mengatur jadwal, lakukan salah satu hal berikut ini:
- Mengonfigurasi jadwal dengan
SCHEDULE
klausa saat Anda membuat tampilan materialisasi - Tambahkan jadwal dengan pernyataan ALTER MATERIALIZED VIEW .
Saat jadwal dibuat, pekerjaan Databricks baru secara otomatis dikonfigurasi untuk memproses pembaruan.
Untuk melihat jadwal, lakukan salah satu hal berikut ini:
- Jalankan
DESCRIBE EXTENDED
pernyataan dari editor SQL di antarmuka pengguna Azure Databricks. - Gunakan Catalog Explorer untuk melihat tampilan materialisasi. Jadwal tercantum pada tab Gambaran Umum , di bawah Status refresh. Lihat Apa itu Catalog Explorer?.
Menampilkan status refresh tampilan materialisasi
Catatan
Karena alur Tabel Langsung Delta mengelola refresh tampilan materialisasi, ada latensi yang dikeluarkan oleh waktu mulai untuk alur. Waktu ini mungkin dalam detik hingga menit, selain waktu yang diperlukan untuk melakukan refresh.
Anda dapat melihat status refresh tampilan materialisasi dengan melihat alur yang mengelola tampilan materialisasi di UI Tabel Langsung Delta atau dengan melihat Informasi Refresh yang dikembalikan oleh DESCRIBE EXTENDED
perintah untuk tampilan materialisasi.
Anda juga bisa menampilkan riwayat refresh tampilan materialisasi dengan mengkueri log peristiwa Tabel Langsung Delta. Lihat Menampilkan riwayat refresh untuk tampilan materialisasi.
Menampilkan status refresh di UI Tabel Langsung Delta
Secara default, alur Tabel Langsung Delta yang mengelola tampilan materialisasi tidak terlihat di UI Tabel Langsung Delta. Untuk melihat alur di UI Tabel Langsung Delta, Anda harus langsung mengakses tautan ke halaman detail Alur alur. Untuk mengakses tautan:
- Salin dan tempel tautan yang diperlihatkan di baris Refresh Terbaru tabel yang dikembalikan oleh
DESCRIBE EXTENDED
pernyataan. - Pada tab silsilah untuk tampilan materialisasi, klik Alur lalu klik tautan alur.
Untuk perintah asinkron REFRESH
yang dikirimkan menggunakan editor SQL di antarmuka pengguna Azure Databricks, Anda dapat melihat status refresh dengan mengikuti tautan yang ditampilkan di panel Hasil .
Menghentikan refresh aktif
Untuk menghentikan refresh aktif di UI Tabel Langsung Delta, di halaman Detail alur klik Hentikan untuk menghentikan pembaruan alur. Anda juga dapat menghentikan refresh dengan Databricks CLI atau OPERASI POST /api/2.0/pipelines/{pipeline_id}/stop di PIPElines API.
Memperbarui definisi tampilan materialisasi
Untuk memperbarui definisi tampilan materialisasi, Anda harus terlebih dahulu menghilangkannya, lalu membuat ulang tampilan materialisasi.
Menghilangkan tampilan materialisasi
Catatan
Untuk mengirimkan perintah untuk menghilangkan tampilan materialisasi, Anda harus menjadi pemilik tampilan materialisasi tersebut.
Untuk menghilangkan tampilan materialisasi, gunakan pernyataan DROP VIEW . Untuk mengirimkan DROP
pernyataan, Anda dapat menggunakan editor SQL di UI Azure Databricks, Databricks SQL CLI, atau Databricks SQL API. Contoh berikut menghilangkan tampilan materialisasi mv1
:
DROP MATERIALIZED VIEW mv1;
Menjelaskan tampilan materialisasi
Untuk mengambil kolom dan jenis data untuk tampilan materialisasi, gunakan DESCRIBE
pernyataan . Untuk mengambil kolom, jenis data, dan metadata seperti pemilik, lokasi, waktu pembuatan, dan status refresh untuk tampilan materialisasi, gunakan DESCRIBE EXTENDED
. Untuk mengirimkan DESCRIBE
pernyataan, gunakan editor SQL di UI Azure Databricks, Databricks SQL CLI, atau Databricks SQL API.
Mengubah pemilik tampilan materialisasi
Anda dapat mengubah pemilik tampilan materialisasi jika Anda adalah admin metastore dan admin ruang kerja. Tampilan materialisasi secara otomatis membuat dan menggunakan alur Tabel Langsung Delta untuk memproses perubahan. Gunakan langkah-langkah berikut untuk mengubah pemilik tampilan materialisasi:
- Pada tab silsilah untuk tampilan materialisasi, klik Alur lalu klik tautan alur.
- Klik menu kebab di sebelah kanan nama alur dan klik Izin. Ini membuka dialog izin.
- Klik x di sebelah kanan nama pemilik saat ini untuk menghapus pemilik saat ini.
- Mulai ketik untuk memfilter daftar pengguna yang tersedia. Klik pengguna yang seharusnya menjadi pemilik alur baru.
- Klik Simpan untuk menyimpan perubahan Anda dan menutup dialog.
Semua aset alur, termasuk tampilan materialisasi yang ditentukan dalam alur, dimiliki oleh pemilik alur baru. Semua pembaruan di masa mendatang dijalankan menggunakan identitas pemilik baru.
Mengontrol akses ke tampilan materialisasi
Tampilan materialisasi mendukung kontrol akses yang kaya untuk mendukung berbagi data sambil menghindari mengekspos data yang berpotensi privat. Pemilik tampilan materialisasi dapat memberikan SELECT
hak istimewa kepada pengguna lain. Pengguna dengan SELECT
akses ke tampilan materialisasi tidak memerlukan SELECT
akses ke tabel yang dirujuk oleh tampilan materialisasi. Kontrol akses ini memungkinkan berbagi data sambil mengontrol akses ke data yang mendasar.
Memberikan hak istimewa ke tampilan materialisasi
Untuk memberikan akses ke tampilan materialisasi, gunakan GRANT
pernyataan:
GRANT
privilege_type [, privilege_type ] ...
ON <mv_name> TO principal;
privilege_type dapat berupa:
SELECT
- pengguna dapatSELECT
mewujudkan tampilan.REFRESH
- pengguna dapatREFRESH
mewujudkan tampilan. Refresh dijalankan menggunakan izin pemilik.
Contoh berikut membuat tampilan materialisasi dan memberikan hak istimewa pilih dan refresh kepada pengguna:
CREATE MATERIALIZED VIEW <mv_name> AS SELECT * FROM <base_table>;
GRANT SELECT ON <mv_name> TO user;
GRANT REFRESH ON <mv_name> TO user;
Mencabut hak istimewa dari tampilan materialisasi
Untuk mencabut akses dari tampilan materialisasi, gunakan REVOKE
pernyataan :
REVOKE
privilege_type [, privilege_type ]
ON <name> FROM principal;
Ketika SELECT
hak istimewa pada tabel dasar dicabut dari pemilik tampilan materialisasi atau pengguna lain yang telah diberikan SELECT
hak istimewa ke tampilan materialisasi, atau tabel dasar dihilangkan, pemilik tampilan materialisasi atau akses yang diberikan pengguna masih dapat mengkueri tampilan materialisasi. Namun, perilaku berikut terjadi:
- Pemilik tampilan materialisasi atau orang lain yang kehilangan akses ke tampilan materialisasi tidak
REFRESH
lagi dapat melihat materialisasi tersebut, dan tampilan materialisasi akan menjadi kedaluarsa. - Jika diotomatisasi dengan jadwal, jadwal berikutnya
REFRESH
gagal atau tidak dijalankan.
Contoh berikut mencabut SELECT
hak istimewa dari mv1
:
REVOKE SELECT ON mv1 FROM user1;
Mengaktifkan umpan data perubahan
Umpan data perubahan diperlukan pada tabel dasar tampilan materialisasi, kecuali untuk kasus penggunaan tingkat lanjut tertentu. Untuk mengaktifkan ubah umpan data pada tabel dasar, atur delta.enableChangeDataFeed
properti tabel menggunakan sintaks berikut:
ALTER TABLE table1 SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Menampilkan riwayat refresh untuk tampilan materialisasi
Untuk melihat status REFRESH
operasi pada tampilan materialisasi, termasuk refresh saat ini dan sebelumnya, kueri log peristiwa Tabel Langsung Delta:
SELECT
*
FROM
event_log(TABLE(<fully-qualified-table-name>))
WHERE
event_type = "update_progress"
ORDER BY
timestamp desc;
Ganti <fully-qualified-table-name>
dengan nama tampilan materialisasi yang sepenuhnya memenuhi syarat, termasuk katalog dan skema.
Lihat Apa itu log peristiwa Delta Live Tables?.
Menentukan apakah refresh inkremental atau penuh digunakan
Untuk mengoptimalkan performa refresh tampilan materialisasi, Azure Databricks menggunakan model biaya untuk memilih teknik yang digunakan untuk refresh. Tabel berikut ini menjelaskan teknik-teknik ini:
Teknik | Refresh inkremental? | Deskripsi |
---|---|---|
FULL_RECOMPUTE |
No | Tampilan materialisasi sepenuhnya dikomputasi ulang |
NO_OP |
Tidak berlaku | Tampilan materialisasi tidak diperbarui karena tidak ada perubahan pada tabel dasar yang terdeteksi. |
ROW_BASED atau PARTITION_OVERWRITE |
Ya | Tampilan materialisasi disegarkan secara bertahap menggunakan teknik yang ditentukan. |
Untuk menentukan teknik yang digunakan, kueri log peristiwa Tabel Langsung Delta di mana event_type
adalah planning_information
:
SELECT
timestamp,
message
FROM
event_log(TABLE(<fully-qualified-table-name>))
WHERE
event_type = 'planning_information'
ORDER BY
timestamp desc;
Ganti <fully-qualified-table-name>
dengan nama tampilan materialisasi yang sepenuhnya memenuhi syarat, termasuk katalog dan skema.
Lihat Apa itu log peristiwa Delta Live Tables?.
Batasan
- Untuk persyaratan komputasi dan ruang kerja, lihat Persyaratan.
- Tampilan materialisasi tidak mendukung kolom identitas atau kunci pengganti.
- Jika tampilan materialisasi menggunakan agregat jumlah atas
NULL
kolom -mampu dan hanyaNULL
nilai yang tetap ada di kolom tersebut, nilai agregat hasil tampilan materialisasi adalah nol alih-alihNULL
. - Anda tidak dapat membaca umpan data perubahan dari tampilan materialisasi.
- File yang mendasar yang mendukung tampilan materialisasi mungkin menyertakan data dari tabel upstram (termasuk kemungkinan informasi yang dapat diidentifikasi secara pribadi) yang tidak muncul dalam definisi tampilan materialisasi. Data ini secara otomatis ditambahkan ke penyimpanan yang mendasar untuk mendukung penyegaran tampilan materialisasi secara inkremental. Karena file yang mendasar dari tampilan materialisasi mungkin berisiko mengekspos data dari tabel hulu bukan bagian dari skema tampilan materialisasi, Databricks merekomendasikan untuk tidak berbagi penyimpanan yang mendasar dengan konsumen hilir yang tidak tepercaya. Misalnya, misalkan definisi tampilan materialisasi menyertakan
COUNT(DISTINCT field_a)
klausul. Meskipun definisi tampilan materialisasi hanya menyertakan klausul agregatCOUNT DISTINCT
, file yang mendasar akan berisi daftar nilai aktual .field_a