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 cache untuk Eksplorasi dan/atau 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. Tidak ada karakter lain yang 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 cache dan persistensi menggunakan sub-parameter datagroup:
max_cache_age: Menentukan string yang menentukan jangka waktu. Jika usia cache kueri melebihi jangka waktu, Looker akan membatalkan cache. Saat kueri dikeluarkan berikutnya, Looker akan mengirimkan kueri ke database untuk mendapatkan hasil baru. 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 masuk ke status yang 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 yang dikombinasikan 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 berakhir masa berlakunya pada waktu tertentu. Dengan begitu, mode kegagalan untuk grup data adalah mengkueri database, bukan menyajikan data lama dari cache Looker.
Grup data tidak dapat memiliki parameter
sql_triggerdaninterval_trigger. Jika Anda menentukan grup data dengan kedua parameter, grup data akan menggunakan nilaiinterval_triggerdan mengabaikan nilaisql_trigger, karena parametersql_triggermengharuskan 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 penyimpanan cache grup data menggunakan pemicu kueri SQL.
Tanpa penggantian PDT, Anda masih 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 "seconds", "minutes", atau "hours". Jangka waktu ini adalah jangka waktu maksimum untuk hasil yang di-cache yang akan digunakan oleh kueri Eksplorasi yang menggunakan grup data.
Jika usia cache kueri melebihi max_cache_age, Looker akan membatalkan cache. Saat kueri dikeluarkan berikutnya, Looker akan mengirimkan kueri ke database untuk mendapatkan hasil baru. Lihat halaman dokumentasi Kueri penyimpanan cache untuk mengetahui informasi tentang berapa lama data disimpan dalam cache.
Parameter max_cache_age hanya menentukan kapan cache dibatalkan; parameter ini tidak memicu pembangunan kembali 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 dalam 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 koneksi database. Jika kueri menampilkan nilai yang berbeda dari hasil sebelumnya, grup data akan masuk ke status yang dipicu. Setelah grup data dipicu, Looker akan membangun kembali PDT apa pun dengan grup data yang ditentukan dalam parameter datagroup_trigger. Setelah pembangunan kembali PDT selesai, grup data akan masuk ke status siap dan Looker akan membatalkan hasil yang di-cache dari Eksplorasi apa pun yang menggunakan grup data tersebut.
Biasanya, sql_trigger menentukan kueri SQL yang menunjukkan kapan pemuatan data (ETL) baru terjadi, misalnya dengan mengkueri max(ID) dalam tabel. Anda juga dapat menggunakan sql_trigger untuk menentukan waktu tertentu dalam sehari dengan mengkueri 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. Saat PDT diaktifkan, Anda dapat menggunakan kolom PDT Overrides untuk memberikan kredensial login statis terpisah kepada Looker 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_triggerkepada 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-contoh ini dari dokumentasi parameter sql_trigger untuk mendapatkan ide tentang cara menyiapkan kueri SQL untuk memicu grup data.
interval_trigger
Anda dapat menggunakan sub-parameter interval_trigger opsional untuk menentukan durasi waktu untuk pembangunan kembali. Dalam parameter interval_trigger, Anda meneruskan string yang berisi bilangan bulat yang diikuti dengan "seconds", "minutes", atau "hours".
label dan description
Anda dapat menggunakan sub-parameter label dan description opsional untuk menambahkan label yang disesuaikan dan deskripsi grup data. Anda juga dapat melokalkan sub-parameter ini menggunakan file string lokal.
Sub-parameter ini ditampilkan di halaman Datagroups di bagian Database pada panel Admin. Lihat halaman dokumentasi Setelan admin - Grup data untuk mengetahui informasi selengkapnya tentang cara sub-parameter ini ditampilkan.
Contoh
Contoh berikut menunjukkan kasus penggunaan datagroup, termasuk:
- Membuat kebijakan penyimpanan cache 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 penyimpanan cache untuk mengambil hasil baru setiap kali ada data baru yang tersedia atau setidaknya setiap 24 jam
Untuk membuat kebijakan penyimpanan cache yang mengambil hasil baru setiap kali ada data baru yang tersedia 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 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 penyimpanan cache orders_datagroup untuk Eksplorasi tertentu, tambahkan parameter persist_with di bagian parameter explore, dan 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 penyimpanan cache grup data orders_datagroup untuk 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 pengiriman konten pada akhir setiap bulan. Namun, tidak semua bulan memiliki jumlah hari yang sama. Anda dapat membuat grup data untuk memicu pengiriman konten pada akhir setiap bulan, terlepas dari jumlah hari dalam bulan tertentu.
Buat grup data menggunakan pernyataan SQL untuk memicu pada 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 — pada hari terakhir bulan, besok adalah bulan berikutnya — sehingga grup data akan dipicu. Untuk setiap hari lainnya, besok adalah 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 pengiriman Anda menyertakan data terbaru.
Menggunakan grup data dengan PDT bertingkat
Dalam kasus tabel turunan bertingkat persisten, dengan satu tabel turunan persisten (PDT) yang direferensikan dalam definisi tabel turunan persisten lainnya, Anda dapat menggunakan grup data untuk menentukan strategi persistensi untuk rantai 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 dipertahankan 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 adalah 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 Anda memiliki PDT bertingkat, Anda harus memastikan bahwa PDT tidak memiliki kebijakan penyimpanan cache grup data yang tidak kompatibel.
Regenerator Looker memeriksa status dan memulai pembangunan kembali PDT ini sebagai berikut:
- Secara default, regenerator Looker memeriksa kueri grup data
sql_triggersetiap lima menit (admin Looker Anda dapat menentukan interval ini menggunakan setelan Datagroup and PDT Maintenance Schedule pada koneksi database Anda). - Jika nilai yang ditampilkan oleh kueri
sql_triggerberbeda dengan hasil kueri pada pemeriksaan sebelumnya, grup data akan masuk ke status yang 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 tersebut (dengan kata lain, semua PDT yang ditentukan dengandatagroup_trigger: user_facts_etl). Dalam contoh ini, regenerator membangun kembaliuser_facts_pdt_1, lalu membangun kembaliuser_facts_pdt_2.Saat PDT berbagi
datagroup_triggeryang sama, regenerator akan membangun kembali PDT dalam urutan dependensi, pertama-tama membangun tabel yang direferensikan oleh tabel lain. Lihat halaman dokumentasi Tabel turunan di Looker untuk mengetahui informasi selengkapnya tentang cara Looker membangun kembali tabel turunan bertingkat.Saat regenerator membangun kembali 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 terjadwalapa pun yang didasarkan pada grup data
user_facts_etlakan dikirim. Dalam contoh ini, jika ada pengiriman terjadwal yang menyertakan kueri dari Eksplorasiuser_stuff, kueri terjadwal akan diambil dari database untuk mendapatkan hasil baru.
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 berlaku di semua model Anda.
Untuk membagikan grup data dengan beberapa file model, pertama-tama buat file terpisah yang hanya berisi grup data, lalu gunakan parameter include untuk include file grup data di 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 Anda dapat membuat file Eksplorasi .lkml terpisah.
Dalam contoh ini, file grup data diberi nama datagroups.lkml:
datagroup: daily {
max_cache_age: "24 hours"
sql_trigger: SELECT CURRENT_DATE();;
}
Menyertakan file grup data di file model Anda
Setelah membuat file grup data, Anda dapat include file tersebut di kedua model dan menggunakan persist_with, baik untuk menerapkan grup data ke Eksplorasi individual dalam model Anda maupun untuk menerapkan grup data ke semua Eksplorasi dalam model.
Misalnya, dua file model berikut 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 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 {
}