Gunakan tampilan materialisasi mandiri

Materialized view mandiri melakukan prakomputasi dan menyimpan hasil kueri dalam cache untuk meningkatkan kinerja serta mengurangi biaya beban kerja pemrosesan dan analisis data Anda.

Anda dapat membuat dan merefresh tampilan terwujud mandiri dari gudang Databricks SQL, atau dari buku catatan yang berjalan di komputasi umum tanpa server. Untuk detail tentang perbedaan antara dua opsi komputasi, lihat Persyaratan untuk alur mandiri.

Untuk membuat dan menyegarkan tampilan termaterialisasi mandiri dengan Python dari notebook, lihat Menggunakan Python dengan pipeline mandiri.

Apa itu tampilan termaterialisasi independen?

Tampilan terwujud mandiri adalah tabel terkelola Unity Catalog yang secara fisik menyimpan hasil kueri, yang ditentukan di luar alur Lakeflow. Tidak seperti tampilan standar, yang menghitung hasil sesuai permintaan, tampilan terwujud menyimpan hasil dan memperbaruinya saat tabel sumber yang mendasar berubah, baik sesuai jadwal atau secara otomatis.

Tampilan materialisasi sangat cocok 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 juga memungkinkan transformasi yang mudah digunakan dengan membersihkan, memperkaya, dan mendenormalisasi tabel dasar. Dengan melakukan pra-komputasi kueri yang mahal atau sering digunakan, tampilan materialisasi menurunkan latensi kueri dan konsumsi sumber daya. Dalam banyak kasus, mereka dapat secara bertahap menghitung perubahan dari tabel sumber, lebih meningkatkan efisiensi dan pengalaman pengguna akhir.

Berikut ini adalah kasus penggunaan umum untuk tampilan materialisasi:

  • Menjaga dasbor BI tetap terbarui dengan latensi kueri pengguna akhir minimal.
  • Mengurangi orkestrasi ETL yang kompleks dengan logika SQL sederhana.
  • Membangun transformasi berlapis yang kompleks.
  • Setiap kasus penggunaan yang menuntut performa konsisten dengan wawasan up-to-date.

Saat Anda membuat tampilan materialisasi di gudang Databricks SQL, alur tanpa server dibuat untuk memproses pembuatan dan pembaruan tampilan materialisasi. Anda dapat memantau status operasi refresh di Catalog Explorer. Lihat Menampilkan detail dengan DESCRIBE EXTENDED.

Persyaratan

Untuk opsi komputasi, izin, dan persyaratan lainnya untuk membuat, menyegarkan, dan mengkueri tampilan terwujud mandiri, lihat Persyaratan untuk alur mandiri.

Untuk mempelajari tentang batasan lain dalam menggunakan tampilan materialisasi, lihat Batasan.

Membuat tampilan materialisasi

Operasi tampilan materialisasi mandiri CREATE menggunakan gudang SQL Databricks untuk membuat dan memuat data ke 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 tanpa server secara otomatis dibuat untuk setiap tampilan materialisasi mandiri. Saat tampilan materialisasi disegarkan, alur memproses refresh.

Untuk membuat pandangan materialisasi, gunakan perintah CREATE MATERIALIZED VIEW. Untuk mengirimkan pernyataan buat, gunakan editor SQL di UI Azure Databricks, Databricks SQL CLI, atau Databricks SQL API.

Pengguna yang membuat tampilan materialisasi adalah pemilik tampilan materialisasi.

Tampilan materialisasi ad-hoc

Contoh berikut membuat tampilan mv1 materialisasi dari tabel base_table1dasar :

-- This query defines the materialized view:
CREATE OR REPLACE MATERIALIZED VIEW mv1
AS SELECT
  date,
  sum(sales) AS sum_of_sales
FROM
  base_table1
GROUP BY
  date;

Tampilan materialisasi pada pemicu

Contoh berikut membuat tampilan materialisasi yang secara otomatis di-refresh setiap kali data sumber hulu berubah menggunakan TRIGGER ON UPDATE. Gunakan pendekatan ini untuk beban kerja produksi, terutama ketika dependensi upstream tidak berjalan pada jadwal yang dapat diprediksi.

-- Refresh automatically when the source table is updated.
CREATE OR REPLACE MATERIALIZED VIEW mv_trigger
  TRIGGER ON UPDATE
AS SELECT
  date,
  sum(sales) AS sum_of_sales
FROM
  base_table1
GROUP BY
  date;

Tampilan materialisasi terjadwal

Contoh berikut membuat tampilan materialisasi dengan jadwal refresh CRON harian pada pukul 03.30 UTC. Ekspresi dan agregat dalam SELECT klausa harus menggunakan alias. GROUP BY referensi kolom tidak memerlukan alias.

-- Refresh nightly at 3:30 AM UTC.
-- The cron expression uses six space-separated fields: seconds minutes hours day-of-month month day-of-week
-- Use '?' for either day-of-month or day-of-week to leave it unspecified.
CREATE OR REPLACE MATERIALIZED VIEW daily_revenue_by_region
  SCHEDULE CRON '0 30 3 * * ?' AT TIME ZONE 'UTC'
AS SELECT
  date_trunc('day', order_time) AS sales_date,
  region,
  sum(revenue) AS total_revenue,
  count(*) AS order_count
FROM
  orders
GROUP BY sales_date, region;

Untuk opsi penjadwalan lainnya, termasuk sintaks SCHEDULE EVERY dan contoh CRON tambahan, lihat Menjadwalkan penyegaran.

Saat Anda membuat tampilan materialisasi menggunakan CREATE OR REPLACE MATERIALIZED VIEW pernyataan , refresh data awal dan populasi segera dimulai. Ini tidak menggunakan komputasi gudang SQL. Sebagai gantinya, alur tanpa server digunakan untuk pembuatan dan refresh berikutnya. Lihat Bagaimana tampilan materialisasi mandiri disegarkan?.

Komentar kolom pada tabel dasar secara otomatis disebarkan ke tampilan materialisasi baru hanya saat pembuatan. Untuk menambahkan jadwal, batasan tabel, atau properti lainnya, ubah definisi tampilan materialisasi (kueri SQL).

Pernyataan SQL yang sama memperbarui tampilan terwujud ketika dipanggil lagi atau sesuai dengan jadwal. Refresh yang dilakukan dengan cara ini bertindak seperti refresh lainnya. Untuk detailnya, lihat Merefresh tampilan materialisasi.

Untuk mempelajari selengkapnya tentang mengonfigurasi tampilan materialisasi, lihat Mengonfigurasi tampilan materialisasi mandiri. Untuk mempelajari tentang sintaks lengkap untuk membuat tampilan materialisasi, lihat CREATE MATERIALIZED VIEW. Untuk mempelajari tentang memuat data dalam format yang berbeda dan dari tempat yang berbeda, lihat Memuat data dalam alur.

Memuat data dari sistem eksternal

Tampilan materialisasi dapat dibuat pada 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. Untuk informasi umum tentang memuat data, termasuk contoh, lihat Memuat data dalam alur.

Menyembunyikan data sensitif

Anda dapat menggunakan tampilan materialisasi untuk menyembunyikan data sensitif dari pengguna yang mengakses tabel. Salah satu cara untuk melakukan ini adalah dengan membuat kueri sehingga tidak menyertakan data tersebut di tempat pertama. Tetapi Anda juga bisa menutupi kolom atau memfilter baris berdasarkan izin pengguna kueri. Misalnya, Anda dapat menyembunyikan tax_id kolom untuk pengguna yang tidak berada dalam grup HumanResourcesDept. Untuk melakukan ini, gunakan sintaks ROW FILTER dan MASK selama pembuatan tampilan materialisasi. Untuk informasi selengkapnya, lihat Filter baris dan masker kolom.

Memperbarui pandangan terwujud

Me-refresh tampilan materialisasi memperbarui tampilan untuk mencerminkan perubahan terbaru pada tabel dasar pada saat refresh.

Saat Anda menentukan view terwujud, pernyataan CREATE OR REPLACE MATERIALIZED VIEW digunakan baik untuk membuat view tersebut maupun memperbaruinya untuk setiap pembaruan terjadwal. Anda juga dapat menggunakan REFRESH MATERIALIZED VIEW pernyataan untuk me-refresh tampilan materialisasi tanpa perlu menyediakan kueri lagi. Lihat REFRESH (MATERIALIZED VIEW atau STREAMING TABLE) untuk detail tentang sintaks dan parameter SQL untuk perintah ini. Untuk mempelajari lebih lanjut tentang jenis tampilan materialisasi yang dapat diperbarui secara bertahap, lihat Penyegaran bertahap untuk tampilan materialisasi.

Untuk mengirimkan pernyataan refresh, gunakan editor SQL di UI Azure Databricks, notebook yang dilampirkan ke gudang SQL, Databricks SQL CLI, atau Databricks SQL API.

Pemilik, dan setiap pengguna yang telah diberikan REFRESH hak istimewa pada tabel, dapat me-refresh tampilan materialisasi.

Contoh berikut menyegarkan tampilan materialisasi mv1:

REFRESH MATERIALIZED VIEW mv1;

Operasi ini sinkron secara default, artinya perintah ditahan sampai operasi refresh selesai. Untuk menyegarkan secara asinkron, Anda dapat menambahkan ASYNC kata kunci:

REFRESH MATERIALIZED VIEW mv1 ASYNC;

Untuk mempelajari cara menjadwalkan refresh, lihat Menjadwalkan refresh.

Bagaimana tampilan materialisasi mandiri disegarkan?

Tampilan materialisasi secara otomatis membuat dan menggunakan alur tanpa server untuk memproses operasi refresh. Refresh dikelola oleh alur dan pembaruan dipantau oleh gudang Databricks SQL yang digunakan untuk membuat tampilan materialisasi. Tampilan materialisasi dapat diperbarui menggunakan alur yang berjalan sesuai jadwal. Tampilan materialisasi mandiri selalu berjalan dalam mode yang dipicu. Lihat Mode dipicu vs. mode jalur berkelanjutan.

Penyegaran terjadwal dapat memiliki pemberitahuan pembaruan, dan Anda dapat mengatur mode kinerja untuk penyegaran.

Penyegaran bertahap

Tampilan materialisasi di-refresh menggunakan salah satu dari dua metode.

  • Refresh bertahap - Sistem mengevaluasi kueri tampilan untuk mengidentifikasi perubahan yang terjadi setelah pembaruan terakhir dan hanya menggabungkan data baru atau yang dimodifikasi.
  • Refresh penuh - Jika refresh inkremental tidak dapat dilakukan atau tidak hemat biaya, sistem menjalankan seluruh kueri dan mengganti data yang ada dalam tampilan terwujud dengan hasil baru.

Struktur kueri dan jenis data sumber menentukan apakah refresh inkremental didukung. Untuk mendukung refresh bertahap, data sumber harus disimpan dalam tabel Delta dengan pelacakan baris diaktifkan. Mengaktifkan umpan data perubahan disarankan untuk performa refresh bertahap yang lebih baik. Untuk melihat apakah kueri dapat diinkrementalkan, gunakan pernyataan Databricks SQL EXPLAIN CREATE MATERIALIZED VIEW. Setelah membuat tampilan materialisasi, Anda dapat memantau perilaku refreshnya untuk memverifikasi apakah tampilan tersebut diperbarui secara bertahap atau melalui refresh penuh.

Secara default, Azure Databricks menggunakan model biaya untuk memilih opsi yang lebih hemat biaya antara refresh penuh dan inkremental. Anda dapat mengambil alih perilaku ini untuk lebih memilih refresh bertahap atau penuh dengan mengatur REFRESH POLICY dalam definisi SQL Anda dari tampilan materialisasi.

Untuk detail tentang jenis refresh, dan cara mengoptimalkan refresh inkremental, lihat Refresh inkremental untuk tampilan materialisasi.

Penyegaran asinkron

Secara default, operasi refresh dilakukan secara sinkron. Anda juga dapat mengatur operasi refresh agar terjadi secara asinkron. Ini dapat diatur menggunakan perintah refresh dengan ASYNC kata kunci. Lihat REFRESH (MATERIALIZED VIEW atau STREAMING TABLE). Perilaku yang terkait dengan setiap pendekatan adalah sebagai berikut:

  • Sinkron: Refresh sinkron mencegah operasi lain melanjutkan hingga refresh selesai. Jika hasilnya diperlukan untuk langkah berikutnya, seperti saat mengurutkan operasi refresh dalam tools orkestrasi seperti Lakeflow Jobs, gunakan refresh sinkron. Untuk mengatur tampilan materialisasi dengan tugas, gunakan jenis tugas SQL. Lihat Pekerjaan Lakeflow.
  • Asinkron: Refresh asinkron memulai pekerjaan latar belakang pada komputasi tanpa server saat refresh tampilan materialisasi dimulai, memungkinkan perintah untuk kembali sebelum pemuatan data selesai. Jenis refresh ini dapat menghemat biaya karena operasi tidak selalu menyimpan kapasitas komputasi di gudang tempat perintah dimulai. Jika pembaharuan menjadi tidak aktif dan tidak ada tugas lain yang berjalan, gudang dapat dimatikan saat pembaharuan menggunakan sumber daya komputasi lain yang tersedia. Selain itu, refresh asinkron mendukung memulai beberapa operasi secara paralel.

Menghapuskan rekaman secara permanen dari tampilan materialisasi dengan vektor penghapusan yang diaktifkan

Penting

Dukungan untuk pernyataan REORG dengan tampilan terwujud tersedia dalam Pratinjau Umum.

Nota

  • Menggunakan pernyataan REORG dengan tampilan terwujud memerlukan Databricks Runtime 15.4 atau lebih.
  • Meskipun Anda dapat menggunakan pernyataan REORG dengan tampilan materialisasi apa pun, itu hanya diperlukan saat menghapus catatan dari tampilan materialisasi dengan vektor penghapusan sudah diaktifkan. Perintah tidak akan berpengaruh ketika digunakan pada tampilan materialisasi yang tidak memiliki vektor penghapusan yang diaktifkan.

Untuk menghapus rekaman secara fisik dari penyimpanan yang mendasari untuk materialized view dengan vektor penghapusan diaktifkan, seperti untuk kepatuhan GDPR, langkah-langkah tambahan perlu dilakukan untuk memastikan bahwa operasi VACUUM dijalankan pada data materialized view.

Untuk menghapus rekaman secara fisik:

  1. Jalankan pernyataan REORG terhadap tampilan materialisasi dengan menentukan parameter APPLY (PURGE). Contoh: REORG TABLE <materialized-view-name> APPLY (PURGE);. Lihat REORG TABLE.
  2. Tunggu hingga periode retensi data tampilan terwujud berlalu. Periode retensi data default adalah tujuh hari, tetapi dapat dikonfigurasi dengan properti tabel delta.deletedFileRetentionDuration. Lihat Mengonfigurasi retensi data untuk kueri perjalanan lintas waktu.
  3. REFRESH tampilan terwujud. Lihat Refresh tampilan materialisasi. Dalam waktu 24 jam setelah operasi REFRESH, tugas pemeliharaan pipa saluran, termasuk operasi VACUUM yang dibutuhkan untuk memastikan catatan dihapus secara permanen, dieksekusi secara otomatis.

Menghilangkan tampilan materialisasi

Nota

Untuk mengirimkan perintah untuk menghilangkan tampilan materialisasi, Anda harus menjadi pemilik tampilan materialisasi tersebut atau memiliki hak istimewa MANAGE pada tampilan materialisasi.

Untuk menghilangkan tampilan materialisasi, gunakan pernyataan DROP VIEW. Untuk mengirimkan pernyataan DROP, 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;

Anda juga dapat menggunakan Catalog Explorer untuk menghilangkan tampilan materialisasi.

  1. Klik ikon Data.Katalog di bilah samping.
  2. Di pohon Catalog Explorer di sebelah kiri, buka katalog dan pilih skema tempat tampilan materialisasi Anda berada.
  3. Buka item Tabel di bawah skema yang Anda pilih, dan klik tampilan hasil materialisasi.
  4. Pada menu kebab ikon menu Kebab., pilih Hapus.

Memahami biaya tampilan materialisasi

Saat Anda menjalankan CREATE MATERIALIZED VIEW atau REFRESH MATERIALIZED VIEW, Azure Databricks secara otomatis membuat dan menjalankan alur tanpa server untuk memproses operasi. Alur ini independen dari gudang Databricks SQL atau sumber daya komputasi tempat Anda mengirimkan perintah. Ukuran kluster gudang Anda tidak membatasi komputasi atau biaya yang digunakan oleh refresh.

  • Pipeline refresh berjalan di komputasi nirserver dan ditagihkan sebagai DBU pipeline Lakeflow nirserver.
  • Alur tanpa server terpisah dari gudang Anda. Komputasi dari gudang Anda hanya digunakan untuk mengoordinasikan operasi, bukan untuk melakukan pemrosesan data.
  • Skala biaya dengan volume data yang diproses, bukan ukuran gudang SQL Anda.
  • Untuk memantau biaya refresh tampilan Materialisasi, gunakan tabel sistem. Lihat Apa konsumsi DBU dari tampilan terwujud atau tabel streaming?.
  • Untuk melihat alur yang mendasar yang mengelola tampilan materialisasi Anda:
    1. Klik Pekerjaan & Pipeline di bilah sisi kiri ruang kerja Azure Databricks Anda.
    2. Klik Tipe Pipeline. Kemudian, pilih MV/ST untuk melihat tampilan materialisasi mandiri.

Nota

Anda mungkin dikenakan biaya komputasi tanpa server bahkan ketika gudang asal menggunakan komputasi khusus.

Mengaktifkan pelacakan baris

Untuk mendukung refresh inkremental dari tabel Delta, pelacakan baris harus diaktifkan untuk tabel sumber tersebut. Jika Anda membuat ulang tabel sumber, Anda harus mengaktifkan kembali pelacakan baris.

Contoh berikut menunjukkan cara mengaktifkan pelacakan baris pada tabel:

ALTER TABLE source_table SET TBLPROPERTIES (delta.enableRowTracking = true);

Untuk detail selengkapnya, lihat Pelacakan baris di Azure Databricks

Batasan

  • Untuk opsi komputasi dan persyaratan ruang kerja, lihat Persyaratan untuk alur mandiri.
  • Untuk persyaratan refresh inkremental, lihat Refresh inkremental untuk tampilan materialisasi.
  • Tampilan terwujud tidak mendukung kolom identitas atau kunci pengganti.
  • Jika tampilan materialisasi menggunakan agregat jumlah atas kolom NULL-mampu dan hanya NULL nilai yang tetap ada di kolom tersebut, nilai agregat hasil tampilan materialisasi adalah nol bukan NULL.
  • Anda tidak dapat membaca umpan data perubahan dari tampilan terwujud, kecuali Anda mengaktifkan umpan data perubahan pada setiap tampilan terwujud yang ingin Anda aktifkan umpan data perubahannya. Lihat Membaca aliran data perubahan dari tampilan terwujud (Beta).
  • Kueri perjalanan waktu tidak didukung pada tampilan yang dimaterialisasi.
  • File dasar yang mendukung tampilan materialisasi mungkin menyertakan data dari tabel upstream (termasuk kemungkinan informasi pribadi yang dapat diidentifikasi) yang tidak muncul dalam definisi tampilan materialisasi. Data ini secara otomatis ditambahkan ke penyimpanan dasar untuk mendukung penyegaran tampilan materialisasi secara inkremental. Karena file dasar dari tampilan materialisasi mungkin berisiko mengekspos data dari tabel hulu yang bukan bagian dari skema tampilan materialisasi, Databricks merekomendasikan untuk tidak berbagi penyimpanan dasar dengan konsumen hilir yang tidak tepercaya. Misalnya, misalkan definisi tampilan materialisasi menyertakan COUNT(DISTINCT field_a) klausul. Meskipun definisi tampilan materialisasi hanya menyertakan klausa agregat COUNT DISTINCT, file yang mendasarinya berisi daftar dari nilai aktual field_a.
  • Anda mungkin dikenakan beberapa biaya komputasi tanpa server, bahkan saat menggunakan fitur ini pada komputasi khusus.
  • Jika Anda perlu menggunakan koneksi Azure Private Link dengan tampilan materialisasi, silakan hubungi perwakilan Databricks Anda.

Mengakses tampilan yang sudah dimaterialisasi oleh klien eksternal

Untuk mengakses tampilan materialisasi dari klien Delta Lake atau Iceberg eksternal yang tidak mendukung API terbuka, Anda dapat menggunakan Mode Kompatibilitas. Mode Kompatibilitas membuat versi baca-saja dari tampilan materialisasi Anda yang dapat diakses oleh klien Delta Lake atau Iceberg apa pun.

Sumber daya tambahan