Kasus penggunaan tampilan materialisasi
Tampilan materialisasi mengekspos kueri agregasi melalui tabel sumber atau tampilan materialisasi lainnya. Artikel ini membahas kasus penggunaan umum dan tingkat lanjut untuk tampilan materialisasi.
Kasus penggunaan umum
Berikut ini adalah skenario umum yang dapat diatasi dengan menggunakan tampilan materialisasi:
Perbarui data: Perbarui data dengan mengembalikan rekaman terakhir per entitas menggunakan
arg_max()
(fungsi agregasi). Misalnya, buat tampilan yang hanya mewujudkan rekaman yang diserap mulai sekarang:.create materialized-view ArgMax on table T { T | summarize arg_max(Timestamp, *) by User }
Mengurangi resolusi data Kurangi resolusi data dengan menghitung statistik berkala atas data mentah. Gunakan berbagai fungsi agregasi berdasarkan periode waktu. Misalnya, pertahankan rekam jepret terbaru pengguna yang berbeda per hari:
.create materialized-view UsersByDay on table T { T | summarize dcount(User) by bin(Timestamp, 1d) }
Catatan deduplikasi: Deduplikasi rekaman dalam tabel menggunakan
take_any()
(fungsi agregasi). Misalnya, buat tampilan materialisasi yang mendeduplikasi tabel sumber berdasarkanEventId
kolom, menggunakan lookback 6 jam. Rekaman dideduplikasi hanya terhadap rekaman yang diserap 6 jam sebelum rekaman saat ini..create materialized-view with(lookback=6h) DeduplicatedTable on table T { T | summarize take_any(*) by EventId }
Catatan
Anda dapat menyembunyikan tabel sumber dengan membuat fungsi dengan nama yang sama dengan tabel yang mereferensikan tampilan materialisasi sebagai gantinya. Pola ini memastikan bahwa penelepon yang mengkueri tabel mengakses tampilan materialisasi deduplikasi karena fungsi mengambil alih tabel dengan nama yang sama. Untuk menghindari referensi siklik dalam definisi tampilan, gunakan fungsi table() untuk mereferensikan tabel sumber:
.create materialized-view DeduplicatedTable on table T { table('T') | summarize take_any(*) by EventId }
Untuk contoh selengkapnya, lihat perintah .create materialized-view.
Skenario tingkat lanjut
Anda dapat menggunakan tampilan materialisasi untuk membuat/memperbarui/menghapus pemrosesan peristiwa. Saat menangani rekaman dengan informasi yang tidak lengkap atau usang untuk setiap kolom, tampilan materialisasi dapat memberikan pembaruan terbaru untuk setiap kolom, tidak termasuk entitas yang telah dihapus.
Pertimbangkan tabel input berikut bernama Events
:
Input
Tanda waktu | Cud | ID | col1 | col2 | col3 |
---|---|---|---|---|---|
2023-10-24 00:00:00.0000000 | C | 1 | 1 | 2 | |
2023-10-24 01:00:00.0000000 | U | 1 | 22 | 33 | |
2023-10-24 02:00:00.0000000 | U | 1 | 23 | ||
2023-10-24 00:00:00.0000000 | C | 2 | 1 | 2 | |
2023-10-24 00:10:00.0000000 | U | 2 | 4 | ||
2023-10-24 02:00:00.0000000 | D | 2 |
Buat tampilan materialisasi untuk mendapatkan pembaruan terbaru per kolom, menggunakan fungsi agregasi arg_max():
.create materialized-view ItemHistory on table Events
{
Events
| extend Timestamp_col1 = iff(isnull(col1), datetime(1970-01-01), Timestamp),
Timestamp_col2 = iff(isnull(col2), datetime(1970-01-01), Timestamp),
Timestamp_col3 = iff(isnull(col3), datetime(1970-01-01), Timestamp)
| summarize arg_max(Timestamp_col1, col1), arg_max(Timestamp_col2, col2), arg_max(Timestamp_col3, col3), arg_max(Timestamp, cud) by id
}
Output
ID | Timestamp_col1 | col1 | Timestamp_col2 | col2 | Timestamp_col3 | col3 | Tanda waktu | Cud |
---|---|---|---|---|---|---|---|---|
2 | 2023-10-24 00:00:00.0000000 | 1 | 2023-10-24 00:10:00.0000000 | 4 | 1970-01-01 00:00:00.0000000 | 2023-10-24 02:00:00.0000000 | D | |
1 | 2023-10-24 00:00:00.0000000 | 1 | 2023-10-24 02:00:00.0000000 | 23 | 2023-10-24 01:00:00.0000000 | 33 | 2023-10-24 02:00:00.0000000 | U |
Anda dapat membuat fungsi tersimpan untuk membersihkan hasilnya lebih lanjut:
ItemHistory
| project Timestamp, cud, id, col1, col2, col3
| where cud != "D"
| project-away cud
Output Akhir
Pembaruan terbaru untuk setiap kolom untuk ID 1
, karena ID 2
dihapus.
Tanda waktu | ID | col1 | col2 | col3 |
---|---|---|---|---|
2023-10-24 02:00:00.0000000 | 1 | 1 | 23 | 33 |
Tampilan materialisasi vs. kebijakan pembaruan
Tampilan materialisasi dan kebijakan pembaruan bekerja secara berbeda dan melayani kasus penggunaan yang berbeda. Gunakan panduan berikut untuk mengidentifikasi mana yang harus Anda gunakan:
Tampilan materialisasi cocok untuk agregasi, sementara kebijakan pembaruan tidak. Kebijakan pembaruan berjalan secara terpisah untuk setiap batch penyerapan, dan oleh karena itu hanya dapat melakukan agregasi dalam batch penyerapan yang sama. Jika Anda memerlukan kueri agregasi, selalu gunakan tampilan materialisasi.
Kebijakan pembaruan berguna untuk transformasi data, pengayaan dengan tabel dimensi (biasanya menggunakan operator pencarian) dan manipulasi data lainnya yang dapat berjalan dalam cakupan penyerapan tunggal.
Kebijakan pembaruan berjalan selama waktu penyerapan. Data tidak tersedia untuk kueri dalam tabel sumber atau tabel target hingga semua kebijakan pembaruan berjalan. Tampilan materialisasi, di sisi lain, bukan bagian dari alur penyerapan. Proses materialisasi berjalan secara berkala di latar belakang, pasca penyerapan. Rekaman dalam tabel sumber tersedia untuk kueri sebelum diwujudkan.
Kebijakan pembaruan dan tampilan materialisasi dapat menggabungkan gabungan, tetapi efektivitasnya terbatas pada skenario tertentu. Secara khusus, gabungan hanya cocok ketika data yang diperlukan untuk gabungan dari kedua sisi dapat diakses pada saat kebijakan pembaruan atau proses materialisasi. Jika entitas yang cocok diserap saat kebijakan pembaruan atau materialisasi berjalan, ada risiko mengabaikan data. Lihat selengkapnya tentang
dimension tables
dalam parameter kueri tampilan materialisasi dan pada tabel fakta dan dimensi.
Catatan
Jika Anda perlu mewujudkan gabungan, yang tidak cocok untuk kebijakan pembaruan dan tampilan materialisasi, Anda dapat mengatur proses Anda sendiri untuk melakukannya, menggunakan alat orkestrasi dan menyerap dari perintah kueri.
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk