All Products
Search
Document Center

MaxCompute:Delta Live Materialized View (Delta Live MV) (Pratinjau Undangan)

Last Updated:Mar 20, 2026

MaxCompute memperkenalkan fitur Delta Live Materialized View untuk membantu Anda membangun pipeline pembaruan inkremental yang sederhana dan mudah digunakan. Topik ini menjelaskan cara menggunakan Delta Live Materialized View di MaxCompute.

Pengenalan Fungsi

Dibandingkan dengan materialized view berbasis full-refresh, Delta Live Materialized View menyeimbangkan kesegaran data dan biaya komputasi. Fitur ini menggunakan kembali hasil komputasi yang telah ada dan menerapkan algoritma inkremental cerdas untuk mengurangi biaya komputasi sekaligus meningkatkan kesegaran data.

Fitur ini saat ini dalam pratinjau undangan. Untuk informasi lebih lanjut tentang cara menggunakan fitur ini, lihat Petunjuk.

Ikhtisar Arsitektur

image

Keunggulan

Fitur Delta Live Materialized View di MaxCompute menawarkan keunggulan berikut:

  • SQL deklaratif, operasi sepenuhnya dikelola (fully managed), dan pelapisan gudang data otomatis.

  • Arsitektur gudang data yang disederhanakan. Satu logika komputasi dan satu engine mendukung komputasi inkremental maupun penuh, memenuhi kebutuhan latensi rendah dan throughput tinggi.

  • Hemat biaya. Menyeimbangkan kesegaran data dan biaya untuk ETL penuh maupun inkremental yang efisien.

Skenario Penggunaan

Fitur ini berlaku untuk skenario berikut:

  • Pemrosesan Real-time untuk layanan offline

    Beralih dari gudang data T+1 ke gudang data near-real-time dengan latensi tingkat menit.

  • Pemrosesan penuh dan inkremental terpadu

    • Komputasi inkremental near-real-time untuk partisi hari ini memenuhi persyaratan kesegaran data tinggi dengan biaya komputasi rendah.

    • (Opsional) Isi ulang (backfill) partisi historis untuk mengarsipkan atau memperbaiki data guna analitik skala besar di downstream.

Prasyarat

  • Anda telah membuat proyek MaxCompute.

  • Aktifkan Change Data Capture (CDC) pada tabel sumber. Jenis tabel sumber yang didukung meliputi:

    • Tabel inkremental Delta Table, dan harus memiliki fitur CDC yang diaktifkan.

    • Ini adalah materialized view dinamis. Fitur Change Data Capture (CDC) diaktifkan secara default.

Catatan Penting

  • Delta Live Materialized View tidak boleh mengandung komputasi non-deterministik, seperti fungsi RAND atau user-defined function (UDF).

  • Delta Live Materialized View mendukung penuh komputasi inkremental untuk semua logika SQL umum, termasuk operator berikut:

    • INNER JOIN pada dua stream

    • (LEFT/RIGHT) OUTER JOIN pada dua stream

    • Semua fungsi agregasi kecuali UDAF, termasuk fungsi tanpa GROUP BY atau agregasi

    • WINDOW

    • TableFunctionScan

    • UNION ALL

    • FILTER/Project

    • SUBQUERY

Membuat Delta Live Materialized View

Sintaksis

CREATE MATERIALIZED VIEW [IF NOT EXISTS][<project_name>.]<mv_name>
[LIFECYCLE <days>]    -- Tentukan siklus hidup
[BUILD DEFERRED]    -- Hasilkan hanya skema tabel, bukan data, saat pembuatan
[(<col_name> [COMMENT <col_comment>],...)]    -- Komentar kolom
[DISABLE REWRITE]    -- Tentukan apakah tampilan dapat digunakan untuk penulisan ulang kueri
[COMMENT <table comment>]    -- Komentar tabel
[PARTITIONED ON/BY (<col_name> [, <col_name>, ...])    -- Buat materialized view sebagai tabel partisi
[REFRESH EVERY <num> MINUTES/HOURS/DAYS] -- Atur interval refresh terjadwal
TBLPROPERTIES(
  "refresh_mode"="incremental"
  [,"enable_auto_refresh"="true"]    -- Aktifkan auto-refresh
  [,"refresh_cron"="xx"]             -- Konfigurasi refresh berbasis waktu, terjadwal, atau berbasis interval menggunakan ekspresi cron
  [,"refresh_job_settings"="xx"]
              )
AS <select_statement>;

Sintaksis Delta Live Materialized View kompatibel dengan sintaksis materialized view standar, dengan perbedaan berikut:

  • Anda tidak dapat membuat materialized view dinamis sebagai clustered table.

  • Anda tidak dapat mengatur parameter enable_auto_substitute ke true. Delta Live Materialized View bersifat asinkron. Data tabel dasar yang digunakan mungkin bukan versi terbaru, yang bertentangan dengan enable_auto_substitute = true.

Deskripsi Parameter

Parameter

Wajib

Deskripsi

project_name

Tidak

Nama proyek.

mv_name

Ya

Nama Delta Live MV.

LIFECYCLE <days>

Tidak

Tentukan siklus hidup.

BUILD DEFERRED

Tidak

Hasilkan hanya skema tabel, bukan data, saat pembuatan.

col_name

Tidak

Nama kolom.

col_comment

Tidak

Komentar kolom.

DISABLE REWRITE

Tidak

Tentukan apakah tampilan dapat digunakan untuk penulisan ulang kueri.

table comment

Tidak

Komentar tabel.

REFRESH EVERY <num> MINUTES/HOURS/DAYS

Tidak

Atur interval jadwal refresh. Nilai minimum adalah 1 menit.

enable_auto_refresh

Tidak

Aktifkan auto-refresh.

  • true: Aktifkan.

  • false: Nonaktifkan.

refresh_mode

Tidak

Mode refresh.

  • full: Full refresh.

  • incremental: Incremental refresh.

refresh_cron

Tidak

Tentukan ekspresi cron untuk mengatur laju refresh, seperti pembaruan interval terjadwal, pembaruan berbasis waktu tertentu, atau kombinasi keduanya.

Nilainya harus berupa string dalam format QUARTZ Cron. Untuk detail penggunaan, lihat Contoh ekspresi cron. Contohnya sebagai berikut:

TBLPROPERTIES(
  "enable_auto_refresh"="true",
  "refresh_cron"="xx"
)

refresh_job_settings

Tidak

  • Atur parameter tuning umum yang diterapkan secara otomatis selama refresh. Contoh:

    'refresh_job_settings'='set odps.sql.split.size=128;set odps.sql.reshuffle.dynamicpt
    =false;'
  • Parameter yang diatur dengan cara ini memiliki prioritas lebih tinggi daripada flag sesi saat ini.

select_statement

Ya

Pernyataan kueri SQL.

Contoh

Contoh 1: Membuat Dynamic Materialized View Sederhana

Buat Delta Live Materialized View bernama mv1 yang melakukan incremental refresh setiap 5 menit. Tabel sumber adalah Delta Table dengan CDC yang diaktifkan.

CREATE MATERIALIZED VIEW IF NOT EXISTS mv1
REFRESH EVERY 5 MINUTES
TBLPROPERTIES("enable_auto_refresh"="true", "refresh_mode"="incremental")
AS 
SELECT name, COUNT(*) FROM source GROUP BY name;

Contoh 2: Membuat dynamic materialized view dengan parameter tuning umum

CREATE MATERIALIZED VIEW IF NOT EXISTS part_dlmv_department
PRIMARY KEY(dept_id)
LIFECYCLE 10
BUILD DEFERRED
PARTITIONED BY (pt)
TBLPROPERTIES('refresh_mode'='incremental', 
'refresh_job_settings'='set odps.sql.split.size=128;set odps.sql.reshuffle.dynamicpt
=false;')
AS SELECT *, get_setting('odps.custom.setting.department.pt') AS pt FROM t_department;

Contoh 3: Membuat Delta Live Materialized View terpartisi dengan incremental refresh per partisi

Saat membuat Delta Live Materialized View terpartisi, tambahkan kata kunci BUILD DEFERRED untuk menunjukkan bahwa hanya operasi DDL yang dijalankan.

-- Buat Delta Live Materialized View
CREATE MATERIALIZED VIEW dlmv_pt
PRIMARY KEY(value) BUILD DEFERRED PARTITIONED BY (ds) TBLPROPERTIES
('refresh_mode'='incremental', 'enable_auto_refresh'='true') 
AS SELECT value, AVG(value2), ds FROM dlmv_pt_src GROUP BY value, ds;

-- Refresh satu partisi
ALTER MATERIALIZED VIEW dlmv_pt REBUILD PARTITION(ds='20250730');
Catatan

Untuk detail tentang merefresh Delta Live Materialized View, lihat Refresh manual.

Contoh 4: Membuat Delta Live Materialized View berparameter

Mendukung definisi berparameter untuk memigrasikan pekerjaan partisi offline ke pekerjaan inkremental.

  • Fungsi get_setting memungkinkan Anda mengambil nilai parameter yang diatur di Session Flag. Nama parameter harus diawali dengan awalan dps.custom.setting.

  • Ganti ${biz_date} dalam pekerjaan offline tradisional dengan get_setting(odps.custom.setting.xx) untuk mengaktifkan parameterisasi.

  • Tambahkan session flag sebelum merefresh Delta Live Materialized View: set odps.custom.setting.xx=yy.

  • Saat runtime, MaxCompute mengganti get_setting(odps.custom.setting.xx) dengan yy.

Contoh:

-- Buat Delta Live Materialized View
CREATE MATERIALIZED VIEW mv1 
BUILD DEFERRED -- Jalankan hanya DDL, tanpa pembuatan data
PARTITIONED BY (ds) 
REFRESH EVERY 5 minutes 
TBLPROPERTIES("enable_auto_refresh"="true", "refresh_mode"="incremental")
AS 
SELECT A.* FROM A JOIN B ON A.c1 = B.c1
  AND A.ds=get_setting('odps.custom.setting.bizdate.a')
  AND B.ds=get_setting('odps.custom.setting.bizdate.b');

-- Logika refresh. Penjadwalan DataWorks secara otomatis mengganti ${biz_date} dan ${yesterday}.
SET odps.custom.setting.bizdate.a=${biz_date};
SET odps.custom.setting.bizdate.b=${yesterday};
ALTER MATERIALIZED VIEW mv1 REBUILD PARTITION(ds=${biz_date});

Mengelola dynamic materialized views

Hapus

DROP MATERIALIZED VIEW [IF EXISTS] [<project_name>.]<mv_name>;

Pembaruan manual

Delta Live Materialized View mendukung refresh manual untuk partisi tunggal. Sintaksisnya sama dengan materialized view standar:

ALTER MATERIALIZED VIEW [<project_name>.]<mv_name>
      REBUILD [PARTITION(<ds>=max_pt(<table_name>),<expression1>...)];

Di sini, ds adalah kolom kunci partisi.

Nonaktifkan auto-refresh

Jalankan perintah berikut untuk menonaktifkan auto-refresh dengan memperbarui TBLPROPERTIES:

ALTER MATERIALIZED VIEW <mv_name> SET TBLPROPERTIES("enable_auto_refresh"="false");

Aktifkan atau lanjutkan auto-refresh

Jalankan perintah berikut untuk mengaktifkan atau melanjutkan auto-refresh:

ALTER MATERIALIZED VIEW <mv_name> SET TBLPROPERTIES("enable_auto_refresh"="true");

Ubah frekuensi refresh

Jalankan perintah berikut untuk mengubah frekuensi refresh:

ALTER MATERIALIZED VIEW <mv_name> 
SET TBLPROPERTIES("refresh_interval_minutes"="xx");
Catatan

Nilai minimum untuk refresh_interval_minutes adalah 1. Kami menyarankan mengaturnya kurang dari siklus hidup CDC tabel dasar.

Melihat Tampilan yang di-materialisasi dinamis

Lihat riwayat perubahan data

Jalankan perintah berikut untuk melihat catatan perubahan data pada Delta Live Materialized View:

SHOW HISTORY FOR TABLE <mv_name>;

Contoh output:

ObjectType      ObjectId                                ObjectName              VERSION(LSN)            Time                    Operation
TABLE           d95ec7015e8b432e8e0092d01da962a9        incremental_mv          0000000000000001        2024-08-18 21:06:32     CREATE
TABLE           d95ec7015e8b432e8e0092d01da962a9        incremental_mv          0000000000000002        2024-08-18 21:11:13     UPDATE

Lihat riwayat refresh

Jalankan perintah berikut untuk melihat riwayat refresh (hanya untuk operasi REFRESH):

SELECT * FROM 
Delta_Live_MV_Refresh_History(['<project_name>', '<schema_name>',]'<table_name>');

Deskripsi Parameter

Parameter

Deskripsi

project_name

Nama proyek.

schema_name

Nama skema.

table_name

Nama tabel.

Deskripsi Nilai Kembali

Nama Bidang

Deskripsi

project_name

Proyek yang memiliki Delta Live MV.

schema_name

Skema yang memiliki Delta Live MV.

name

Nama Delta Live MV.

refresh_start_time

Waktu mulai refresh.

refresh_end_time

Waktu akhir refresh. Nilai ini NULL ketika status pekerjaan RUNNING.

instance_id

ID pekerjaan. Gunakan untuk mengakses Logview.

duration_in_seconds

Durasi refresh.

state

Status pekerjaan.

  • RUNNING: Sedang berjalan.

  • TERMINATED: Selesai.

  • FAILED: Gagal.

  • CANCELLED: Dibatalkan.

refresh_trigger

Metode refresh.

  • MANUAL: Refresh dipicu secara manual ketika pengguna memanggil operasi Refresh. Untuk MaxCompute, penjadwalan dari DataWorks juga dianggap sebagai pemicu manual.

  • SYSTEM_SCHEDULED: Dipicu secara internal oleh MaxCompute.

refresh_mode

Mode refresh.

  • FULL: Full refresh.

  • INCREMENTAL: Incremental refresh.

  • NO_DATA: Tidak ada data inkremental yang tersedia.

error_message

Pesan error jika refresh gagal. Nilai ini NULL jika refresh berhasil.

source_tables

Nama dan versi tabel dasar yang digunakan oleh Delta Live MV.

numInsertedRows

Jumlah baris yang dimasukkan.

numDeletedRows

Jumlah baris yang dihapus.

Aturan Penagihan

Penagihan untuk Delta Live Materialized View mencakup biaya komputasi dan penyimpanan. Aturan ini sama dengan aturan penagihan untuk operasi materialized view standar.

  • Biaya komputasi

    • Sumber daya komputasi dikonsumsi—dan biaya komputasi dikenakan—ketika pekerjaan benar-benar dijalankan selama pembuatan atau refresh. Penagihan mengikuti aturan yang sama dengan pekerjaan SQL standar.

    • Jika tidak ada perubahan data inkremental, auto-refresh tidak memicu pekerjaan SQL dan tidak dikenai biaya.

    • Kami menyarankan menempatkan Delta Live Materialized View dalam proyek khusus untuk melacak pekerjaan auto-refresh, penggunaan sumber daya komputasi, dan biaya terkait.

  • Biaya penyimpanan

    • Delta Live Materialized View ditagih untuk penyimpanan seperti materialized view standar atau tabel biasa.

    • Materialized view dinamis dapat menggunakan algoritma komputasi inkremental berbasis status untuk operator tertentu, menghasilkan tabel status internal yang mengonsumsi storage space.

    • Delta Live Materialized View memerlukan penyimpanan CDC inkremental dan time travel, mirip dengan Delta Table standar.