Halaman ini membahas topik lanjutan dan mengasumsikan pembaca memiliki pengetahuan yang kuat tentang LookML.
Extends adalah fitur LookML yang berharga yang memungkinkan Anda mempertahankan kode LookML DRY (don't repeat yourself). Di Looker, Jelajah, tampilan, dan dasbor LookML semuanya dapat diperluas dengan parameter extends
dalam file model, seperti dalam contoh berikut:
explore: orders { view_name: orders join: users { type: left_outer sql_on: %{orders.user_id} = ${users.id} ;; relationship: many_to_one } } explore: transactions { extends: [orders] }
Dalam contoh ini, parameter extends
digunakan dalam definisi transactions
Jelajahi untuk memperluas orders
Jelajahi.
Halaman ini merujuk pada objek yang diperluas sebagai objek dasar, dan objek yang melakukan perluasan disebut sebagai objek perluasan.
Memperluas objek LookML adalah proses yang cukup mudah, seperti yang dijelaskan di halaman dokumentasi Menggunakan kembali kode dengan ekstensi. Namun, ada beberapa kasus penggunaan lanjutan yang dapat menyebabkan error referensi LookML dan duplikasi objek yang tidak diinginkan. Halaman ini memberikan contoh bagaimana memperluas Jelajah berdasarkan tampilan yang memperluas tampilan lain dapat menyebabkan error referensi LookML, serta tips yang dapat membantu menghilangkan masalah tersebut.
Kasus penggunaan: Memperluas Jelajah berdasarkan tampilan yang diperluas
Misalnya, Anda ingin memperluas Jelajahi events
, dan Anda ingin tampilan yang menjadi dasar Jelajahi yang diperluas menggunakan kolom dari tampilan yang memperluas tampilan events
dasar. Dalam contoh ini, events_extended
Jelajah memperluas extends
Jelajah, seperti yang ditunjukkan dalam contoh LookML berikut:
explore: events { view_name: events join: users { type: left_outer sql_on: ${events.user_id} = ${users.id} ;; relationship: many_to_one } } explore: events_extended { extends: [events] join: orders { sql_on: ${events_extended.test_id} = ${orders.id} ;; relationship: many_to_one }
Dalam contoh ini, tampilan users
digabungkan ke Jelajah events
dasar, sedangkan tampilan orders
digabungkan ke Jelajah yang diperluas, events_extended
. Namun, join yang ditentukan di Jelajah events
dasar mereferensikan events.user_id
, yang merupakan kolom dari tampilan events
dasar. Sementara itu, join yang ditentukan dalam Jelajahi events_extended
yang diperluas mereferensikan kolom events_extended.test_id
, dengan events_extended
adalah nama tampilan yang diperluas berdasarkan tampilan events
. Kolom test_id
yang dirujuk dalam join di definisi Jelajah events_extended
ditentukan dalam tampilan events_extended
yang diperluas sebagai berikut:
include: "events.view.lkml" view: events_extended { extends: [events] dimension: test_id {}
Karena join yang ditentukan dalam Jelajah events_extended
mereferensikan nama tampilan yang diperluas, events_extended
, LookML Validator akan menampilkan error inaccessible view
.
Untuk mengatasi hal ini, Anda dapat menambahkan parameter from
ke LookML untuk Jelajah yang diperluas dan menetapkan nilainya ke nama tampilan yang diperluas, events_extended
. Parameter from
mengalikan nama tabel asli dalam SQL yang dihasilkan, sebagai FROM schema.name AS alias
.
Ini adalah satu-satunya kasus penggunaan yang direkomendasikan untuk menerapkan parameter from
di tingkat Jelajahi.
Untuk mengambil dari tampilan yang diperluas (events_extended
) tanpa merusak referensi join dari Jelajah dasar (events
), Anda dapat menambahkan parameter from
yang dipetakan ke tampilan yang diperluas:
explore: events_extended { extends: [events] from: events_extended join: orders { relationship: many_to_one sql_on: ${events.test_id} = ${orders.id} ;; } }
Dalam contoh ini, menerapkan from: events_extended
LookML ke LookML untuk Jelajah yang diperluas memungkinkan Anda terus mereferensikan tampilan dasar (events
) di Jelajah yang diperluas, sekaligus mengalihkan referensi tersebut untuk diambil dari versi yang diperluas dari tampilan tersebut (events_extended
).
Dengan menggunakan parameter from
, Anda dapat terus mereferensikan nama tampilan dasar events
di awalan join, tetapi referensi ini akan diambil dari tampilan yang diperluas events_extended
, yang berisi semua kolom di events
, ditambah kolom test_id
baru.