Memaksimalkan penggunaan kembali kode dengan DRY LookML: Menentukan kolom sekali, menggunakan operator substitusi di mana saja

Definisi kolom LookML dapat berubah dari waktu ke waktu. Misalnya, nama kolom database dapat berubah, atau Anda mungkin perlu mengubah definisi kolom LookML karena alasan lain.

Jika menggunakan sintaksis {TABLE}.field_name untuk mereferensikan kolom database secara langsung di beberapa tempat, Anda harus memperbarui setiap referensi secara manual. Kolom apa pun yang merujuk dimensi tersebut dapat rusak jika Anda lupa memperbaruinya, dan Looker akan menampilkan error:

Looker menampilkan error Tidak diketahui kolom order_items.sale_price dalam daftar kolom.

Untuk membuat project LookML Anda lebih efisien dan lebih mudah dikelola, Anda dapat menentukan kolom di satu tempat dan menggunakan operator substitusi ($) untuk mereferensikan kolom tersebut di tempat lain.

Halaman ini memberikan contoh penggunaan operator substitusi (dengan sintaksis ${field_name}) untuk mereferensikan satu dimensi dalam definisi beberapa kolom LookML.

Produk

Prasyarat

Contoh: Mereferensikan kolom database pokok hanya sekali untuk sebuah dimensi

Tentukan kolom tabel database di project LookML sekali menggunakan sintaksis ${TABLE}.field_name di parameter sql dimensi. Kemudian, referensikan dimensi menggunakan sintaksis ${field_name} atau ${view_name.field_name} di tempat lain dalam project Anda. Hal ini memungkinkan Anda mempertahankan definisi LookML kolom database di satu tempat (dimensi ${TABLE}.field_name asli), yang berguna jika Anda perlu mereferensikannya di beberapa tempat dalam project Anda.

Sebagai contoh, Anda dapat menggunakan sintaksis ${TABLE}.sale_price untuk menentukan dimensi dasar yang disebut sale_price di tampilan yang disebut order_items:


  dimension: sale_price {
    type: number
    value_format_name: usd
    sql: ${TABLE}.sale_price ;;
    description: "The price at which an item is set to sell."
  }

Saat Anda menentukan kolom lain yang mereferensikan dimensi sale_price, Anda dapat menggunakan sintaksis ${sale_price} dalam tampilan order_items (atau menggunakan sintaksis ${order_items.sale_price} untuk mereferensikan dimensi sale_price di tampilan lain).


dimension: profit {
  type: number
  value_format_name: usd
  sql: ${sale_price} - ${inventory_items.cost} ;;
  description: "The difference between an item's sale price and an item's cost."
}

dimension: item_gross_margin {
  type: number
  value_format_name: percent_2
  sql: 1.0 * ${profit}/NULLIF(${sale_price},0) ;;
}

measure: total_sale_price {
  type: sum
  value_format_name: usd
  sql: ${sale_price} ;;
}

Dalam contoh ini, jika nama kolom untuk dimensi sale_price berubah, Anda hanya perlu memperbarui referensi ${TABLE}.sale_price satu kali, dalam definisi dimensi sale_price dasar. Perubahan ini kemudian akan otomatis diterapkan ke kolom profit, item_gross_margin, dan total_sale_price, serta semua kolom lain yang merujuk dimensi sale_price.