Memaksimalkan penggunaan kembali kode dengan DRY LookML: Menentukan kolom satu kali, menggunakan operator penggantian 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. Setiap kolom yang mereferensikan dimensi tersebut dapat rusak jika Anda lupa mengupdatenya, dan Looker akan menampilkan error:

Looker menampilkan error Kolom order_items.sale_price tidak diketahui dalam daftar kolom.

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

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

Produk

Prasyarat

Contoh: Mereferensikan kolom database yang mendasari hanya sekali untuk dimensi

Tentukan kolom tabel database dalam project LookML satu kali menggunakan sintaksis ${TABLE}.field_name dalam 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.

Sebagai contoh, Anda dapat menggunakan sintaksis ${TABLE}.sale_price untuk menentukan dimensi dasar yang disebut sale_price dalam 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 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 mereferensikan dimensi sale_price.