Memecahkan masalah contoh kasus penggunaan ekstensi lanjutan

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.