Penggunaan
datagroup: datagroup_name {
max_cache_age: "24 hours"
sql_trigger: SELECT max(id) FROM my_tablename ;;
interval_trigger: "12 hours"
label: "desired label"
description: "description string"
}
|
Hierarki
datagroup |
Nilai Default
Tidak ada
Menerima
ID untuk grup data Anda, ditambah sub-parameter yang menentukan properti grup data Anda.
|
Definisi
Gunakan datagroup untuk menetapkan kebijakan penyimpanan ke dalam cache untuk Eksplorasi dan/atau untuk menentukan strategi persistensi untuk tabel turunan persisten (PDT). Jika Anda menginginkan beberapa kebijakan untuk Eksplorasi dan PDT yang berbeda, gunakan parameter datagroup terpisah untuk menentukan setiap kebijakan.
Berikan nama unik untuk grup data hanya menggunakan huruf, angka, dan garis bawah. Karakter lain tidak diizinkan.
Anda dapat menambahkan label dan deskripsi untuk grup data:
label: Menentukan label opsional untuk grup data. Lihat bagianlabeldandescriptiondi halaman ini untuk mengetahui detailnya.description: Menentukan deskripsi opsional untuk grup data yang dapat digunakan untuk menjelaskan tujuan dan mekanisme grup data. Lihat bagianlabeldandescriptiondi halaman ini untuk mengetahui detailnya.
Tentukan detail kebijakan penyimpanan data dalam cache dan persistensi menggunakan subparameter datagroup:
max_cache_age: Menentukan string yang menentukan jangka waktu. Jika usia cache kueri melebihi jangka waktu, Looker akan membatalkan validasi cache. Saat kueri dikeluarkan lagi, Looker akan mengirimkan kueri ke database untuk mendapatkan hasil terbaru. Lihat bagianmax_cache_agedi halaman ini untuk mengetahui detailnya.sql_trigger: Menentukan kueri SQL yang menampilkan satu baris dengan satu kolom. Jika nilai yang ditampilkan oleh kueri berbeda dengan hasil kueri sebelumnya, grup data akan memasuki status dipicu. Lihat bagiansql_triggerdi halaman ini untuk mengetahui detailnya.interval_trigger: Menentukan jadwal waktu untuk memicu grup data, seperti"24 hours". Lihat bagianinterval_triggerdi halaman ini untuk mengetahui detailnya.
Sering kali, solusi terbaik adalah menggunakan max_cache_age bersama dengan sql_trigger atau interval_trigger. Tentukan nilai sql_trigger atau interval_trigger yang cocok dengan pemuatan data (ETL) ke dalam database Anda, lalu tentukan nilai max_cache_age yang akan membatalkan data lama jika ETL Anda gagal. Parameter max_cache_age memastikan bahwa jika cache untuk grup data tidak dihapus oleh sql_trigger atau interval_trigger, entri cache akan habis masa berlakunya pada waktu tertentu. Dengan begitu, mode kegagalan untuk grup data adalah melakukan kueri database, bukan menyajikan data usang dari cache Looker.
Grup data tidak boleh memiliki parameter
sql_triggerdaninterval_triggersekaligus. Jika Anda menentukan grup data dengan kedua parameter, grup data akan menggunakan nilaiinterval_triggerdan mengabaikan nilaisql_trigger, karena parametersql_triggermemerlukan penggunaan resource database saat mengkueri database.Untuk koneksi yang menggunakan atribut pengguna untuk menentukan parameter koneksi, Anda harus membuat koneksi terpisah menggunakan kolom penggantian PDT jika ingin menentukan kebijakan caching grup data menggunakan pemicu kueri SQL.
Tanpa penggantian PDT, Anda tetap dapat menggunakan grup data untuk model dan Eksplorasinya, selama Anda menentukan kebijakan penyimpanan cache grup data hanya menggunakanmax_cache_age, bukansql_trigger.
max_cache_age
Parameter max_cache_age menentukan string yang berisi bilangan bulat yang diikuti dengan "detik", "menit", atau "jam". Jangka waktu ini adalah jangka waktu maksimum agar hasil yang di-cache dapat digunakan oleh kueri Jelajahi yang menggunakan grup data.
Saat usia cache kueri melebihi max_cache_age, Looker akan membatalkan validasi cache. Saat kueri dikeluarkan lagi, Looker akan mengirimkan kueri ke database untuk mendapatkan hasil terbaru. Lihat halaman dokumentasi Meng-cache kueri untuk mengetahui informasi tentang durasi penyimpanan data di cache.
Parameter max_cache_age hanya menentukan kapan cache dibatalkan; parameter ini tidak memicu pembangunan ulang PDT. Jika Anda menentukan grup data hanya dengan max_cache_age, Anda akan mendapatkan peringatan validasi LookML jika ada tabel turunan yang ditetapkan ke grup data. Jika Anda membiarkan tabel turunan ditetapkan ke grup data hanya dengan parameter max_cache_age, tabel turunan akan dibuat saat tabel pertama kali dikueri, tetapi tabel turunan akan berada di skema sementara tanpa batas waktu dan tidak pernah dibangun kembali, meskipun dikueri lagi. Jika Anda ingin PDT dibangun kembali pada interval waktu tertentu, Anda harus menambahkan parameter interval_trigger ke grup data untuk menentukan jadwal pembangunan kembali PDT.
sql_trigger
Gunakan parameter sql_trigger untuk menentukan kueri SQL yang menampilkan tepat satu baris dengan satu kolom. Looker menjalankan kueri SQL pada interval yang ditentukan di kolom Datagroup and PDT Maintenance Schedule pada koneksi database. Jika kueri menampilkan nilai yang berbeda dari hasil sebelumnya, grup data akan memasuki status yang dipicu. Setelah grup data dipicu, Looker akan membangun ulang PDT apa pun dengan grup data yang ditentukan dalam parameter datagroup_trigger-nya. Setelah pembangunan ulang PDT selesai, grup data akan memasuki status siap dan Looker akan membatalkan validasi hasil yang di-cache dari Eksplorasi yang menggunakan grup data tersebut.
Biasanya, sql_trigger menentukan kueri SQL yang menunjukkan kapan pemuatan data (ETL) baru telah terjadi, misalnya dengan membuat kueri max(ID) dalam tabel. Anda juga dapat menggunakan sql_trigger untuk menentukan waktu tertentu dalam sehari dengan membuat kueri tanggal saat ini dan menambahkan jam tambahan ke stempel waktu tersebut sesuai kebutuhan untuk mencapai waktu yang Anda inginkan, misalnya pukul 04.00.
Perhatikan poin-poin penting berikut tentang sql_trigger:
- Anda tidak dapat menggunakan
sql_triggerjika koneksi database Anda menggunakan OAuth atau atribut pengguna dan Anda telah menonaktifkan PDT untuk koneksi tersebut. Hal ini karena Looker memerlukan kredensial statis untuk mengakses database Anda guna menjalankan kueri yang ditentukan dalam parametersql_trigger. Jika PDT diaktifkan, Anda dapat menggunakan kolom Penggantian PDT untuk memberikan kredensial login statis yang terpisah untuk proses PDT, meskipun koneksi Anda menggunakan kredensial dinamis seperti OAuth atau atribut pengguna. Namun, jika PDT dinonaktifkan, dan koneksi Anda menggunakan OAuth atau atribut pengguna, Anda tidak dapat memberikan kredensial pengguna statis yang diperlukan untuk kuerisql_triggerke Looker. - Looker tidak melakukan konversi zona waktu untuk
sql_trigger. Jika Anda ingin memicu grup data pada waktu tertentu dalam sehari, tetapkan pemicu di zona waktu tempat database Anda dikonfigurasi.
Lihat contoh dari dokumentasi parameter sql_trigger ini untuk mendapatkan ide tentang cara menyiapkan kueri SQL guna memicu kelompok data.
interval_trigger
Anda dapat menggunakan subparameter interval_trigger opsional untuk menentukan durasi waktu pembangunan ulang. Dalam parameter interval_trigger, Anda meneruskan string yang berisi bilangan bulat yang diikuti dengan "seconds", "minutes", atau "hours".
label dan description
Anda dapat menggunakan subparameter label dan description opsional untuk menambahkan label yang disesuaikan dan deskripsi grup data. Anda juga dapat melokalkan subparameter ini menggunakan file string lokal.
Subparameter ini ditampilkan di halaman Grup data di bagian Database pada panel Admin. Lihat halaman dokumentasi Setelan admin - Grup data untuk mengetahui informasi selengkapnya tentang cara grup data ditampilkan.
Contoh
Contoh berikut menyoroti kasus penggunaan datagroup, termasuk:
- Membuat kebijakan caching untuk mengambil hasil baru
- Membuat grup data untuk menjadwalkan pengiriman pada hari terakhir setiap bulan
- Menggunakan grup data dengan PDT bertingkat
- Membagikan grup data di seluruh file model
Membuat kebijakan penyiapan cache untuk mengambil hasil baru setiap kali ada data baru yang tersedia atau setidaknya setiap 24 jam
Untuk membuat kebijakan penayangan yang mengambil hasil baru setiap kali ada data baru atau setidaknya setiap 24 jam, lakukan hal berikut:
- Gunakan grup data
orders_datagroup(dalam file model) untuk memberi nama kebijakan penyimpanan cache. - Gunakan parameter
sql_triggeruntuk menentukan kueri yang menunjukkan bahwa ada data baru:select max(id) from my_tablename. Setiap kali data diperbarui, kueri ini akan menampilkan angka baru. - Gunakan setelan
max_cache_ageuntuk membatalkan validasi data jika telah di-cache selama 24 jam. - Gunakan parameter
labeldandescriptionopsional untuk menambahkan label yang disesuaikan dan deskripsi grup data.
datagroup: orders_datagroup {
sql_trigger: SELECT max(id) FROM my_tablename ;;
max_cache_age: "24 hours"
label: "ETL ID added"
description: "Triggered when new ID is added to ETL log"
}
Untuk menggunakan kebijakan penyimpanan cache orders_datagroup sebagai default untuk Eksplorasi dalam model, gunakan parameter persist_with di tingkat model, dan tentukan orders_datagroup:
persist_with: orders_datagroup
Untuk menggunakan kebijakan caching orders_datagroup untuk Eksplorasi tertentu, tambahkan parameter persist_with di bawah parameter explore, lalu tentukan orders_datagroup. Jika ada grup data default yang ditentukan di tingkat model, Anda dapat menggunakan parameter persist_with di bagian explore untuk mengganti setelan default.
explore: customer_facts {
persist_with: orders_datagroup
...
}
Untuk menggunakan kebijakan caching grup data orders_datagroup guna membangun kembali PDT, Anda dapat menambahkan datagroup_trigger di bagian parameter derived_table, dan menentukan orders_datagroup:
view: customer_order_facts {
derived_table: {
datagroup_trigger: orders_datagroup
...
}
}
Membuat grup data untuk menjadwalkan pengiriman pada hari terakhir setiap bulan
Anda mungkin ingin membuat jadwal yang mengirimkan penayangan konten di akhir setiap bulan. Namun, tidak semua bulan memiliki jumlah hari yang sama. Anda dapat membuat grup data untuk memicu penayangan konten di akhir setiap bulan — terlepas dari jumlah hari dalam bulan tertentu.
Buat grup data menggunakan pernyataan SQL untuk dipicu di akhir setiap bulan:
datagroup: month_end_datagroup { sql_trigger: SELECT (EXTRACT(MONTH FROM DATEADD( day, 1, GETDATE()))) ;; description: "Triggered on the last day of each month" }Contoh ini ada di Redshift SQL dan mungkin memerlukan sedikit penyesuaian untuk database yang berbeda.
Pernyataan SQL ini menampilkan bulan yang akan datang besok — pada hari terakhir bulan, besok adalah bulan berikutnya — sehingga grup data akan dipicu. Untuk setiap hari lainnya, besok berada di bulan yang sama, sehingga grup data tidak dipicu.
Pilih grup data dalam jadwal baru atau yang sudah ada.
Jadwal yang didasarkan pada grup data hanya dikirim setelah proses regenerasi selesai untuk semua PDT yang dipertahankan dengan parameter grup data tersebut, sehingga memastikan pengiriman Anda menyertakan data terbaru.
Menggunakan grup data dengan PDT bertingkat
Dalam kasus tabel turunan bertingkat persisten, di mana satu tabel turunan persisten (PDT) dirujuk dalam definisi tabel turunan persisten lainnya, Anda dapat menggunakan grup data untuk menentukan strategi persistensi untuk rangkaian PDT bertingkat.
Misalnya, berikut adalah bagian dari file model yang menentukan grup data bernama user_facts_etl dan Eksplorasi bernama user_stuff. Eksplorasi user_stuff tetap ada dengan grup data user_facts_etl:
datagroup: user_facts_etl {
sql_trigger: SELECT max(ID) FROM etl_jobs ;;
}
explore: user_stuff {
persist_with: user_facts_etl
from: user_facts_pdt_1
join: user_facts_pdt_2 {
...
}
...
}
Eksplorasi user_stuff menggabungkan tampilan user_facts_pdt_1 dengan tampilan user_facts_pdt_2. Kedua tampilan ini didasarkan pada PDT yang menggunakan grup data user_facts_etl sebagai pemicu persistensi. Tabel turunan user_facts_pdt_2 mereferensikan tabel turunan user_facts_pdt_1, sehingga ini adalah PDT bertingkat. Berikut beberapa LookML dari file tampilan untuk PDT ini:
view: user_facts_pdt_1 {
derived_table: {
datagroup_trigger: user_facts_etl
explore_source: users {
column: customer_ID {field:users.id}
column: city {field:users.city}
...
}
}
}
view: user_facts_pdt_2 {
derived_table: {
sql:
SELECT ...
FROM ${users_facts_pdt_1.SQL_TABLE_NAME} ;;
datagroup_trigger: user_facts_etl
}
}
Jika memiliki PDT bertingkat, Anda harus memastikan bahwa PDT tidak memiliki kebijakan caching grup data yang tidak kompatibel.
Regenerator Looker memeriksa status dan memulai build ulang PDT ini sebagai berikut:
- Secara default, regenerator Looker memeriksa kueri
sql_triggergrup data setiap lima menit (admin Looker Anda dapat menentukan interval ini menggunakan setelan Jadwal Pemeliharaan Grup Data dan PDT pada koneksi database Anda). - Jika nilai yang ditampilkan oleh kueri
sql_triggerberbeda dengan hasil kueri pada pemeriksaan sebelumnya, grup data akan memasuki status dipicu. Dalam contoh ini, jika tabeletl_jobsmemiliki nilaiIDbaru, grup datauser_facts_etlakan dipicu. Setelah grup data
user_facts_etldipicu, regenerator Looker akan membangun kembali semua PDT yang menggunakan grup data (dengan kata lain, semua PDT yang ditentukan dengandatagroup_trigger: user_facts_etl). Dalam contoh ini, regenerator akan membangun kembaliuser_facts_pdt_1, lalu membangun kembaliuser_facts_pdt_2.Jika PDT berbagi
datagroup_triggeryang sama, regenerator akan membangun ulang PDT dalam urutan dependensi, dengan membangun tabel yang direferensikan oleh tabel lain terlebih dahulu. Lihat halaman dokumentasi Tabel turunan di Looker untuk mengetahui informasi selengkapnya tentang cara Looker membangun kembali tabel turunan bertingkat.Saat meregenerasi ulang semua PDT dalam grup data, regenerator akan mengeluarkan grup data
user_facts_etldari status yang dipicu.Setelah grup data
user_facts_etltidak lagi dalam status yang dipicu, Looker akan mereset cache untuk semua model dan Eksplorasi yang menggunakan grup datauser_facts_etl(dengan kata lain, semua model dan Eksplorasi yang ditentukan denganpersist_with: user_facts_etl). Dalam contoh ini, artinya Looker mereset cache untuk Eksplorasiuser_stuff.Pengiriman konten terjadwal apa pun yang didasarkan pada grup data
user_facts_etlakan dikirim. Dalam contoh ini, jika ada pengiriman terjadwal yang menyertakan kueri dariuser_stuffJelajahi, kueri terjadwal akan diambil dari database untuk mendapatkan hasil terbaru.
Membagikan grup data di seluruh file model
Contoh ini menunjukkan cara membagikan grup data dengan beberapa file model. Pendekatan ini menguntungkan karena, jika Anda perlu mengedit grup data, Anda hanya perlu mengedit grup data di satu tempat agar perubahan tersebut diterapkan di semua model Anda.
Untuk membagikan grup data dengan beberapa file model, buat terlebih dahulu file terpisah yang hanya berisi grup data, lalu gunakan parameter include untuk include file grup data dalam file model Anda.
Membuat file grup data
Buat file .lkml terpisah untuk berisi grup data Anda. Anda dapat membuat file grup data .lkml dengan cara yang sama seperti membuat file Eksplorasi .lkml terpisah.
Dalam contoh ini, file datagroups diberi nama datagroups.lkml:
datagroup: daily {
max_cache_age: "24 hours"
sql_trigger: SELECT CURRENT_DATE();;
}
Menyertakan file datagroups dalam file model Anda
Setelah membuat file grup data, Anda dapat include-nya di kedua model dan menggunakan persist_with, baik untuk menerapkan grup data ke setiap Eksplorasi dalam model atau menerapkan grup data ke semua Eksplorasi dalam model.
Misalnya, dua file model berikut keduanya include file datagroups.lkml.
File ini diberi nama ecommerce.model.lkml. Grup data daily digunakan di tingkat explore sehingga hanya berlaku untuk Eksplorasi orders:
include: "datagroups.lkml"
connection: "database1"
explore: orders {
persist_with: daily
}
File berikutnya ini diberi nama inventory.model.lkml. Grup data daily digunakan di tingkat model sehingga berlaku untuk semua Eksplorasi dalam file model:
include: "datagroups.lkml"
connection: "database2"
persist_with: daily
explore: items {
}
explore: products {
}