Bagikan melalui


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 dengan USE SCHEMA dan USE 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 dan USE SCHEMA hak istimewa pada katalog dan skema yang berisi tabel sumber untuk tampilan materialisasi.
  • USE CATALOG dan USE SCHEMA hak istimewa pada katalog target dan skema untuk tampilan materialisasi.
  • CREATE TABLE hak istimewa pada CREATE MATERIALIZED VIEW skema yang berisi tampilan materialisasi.

Contoh berikut membuat tampilan mv1 materialisasi dari tabel base_table1dasar :

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:

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:

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.
  • Menu kebab 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 dapat SELECT mewujudkan tampilan.
  • REFRESH - pengguna dapat REFRESH 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 NULLkolom -mampu dan hanya NULL nilai yang tetap ada di kolom tersebut, nilai agregat hasil tampilan materialisasi adalah nol alih-alih NULL.
  • 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