LookML 欄位定義可能會隨時間而變更。舉例來說,資料庫欄位名稱可能會變更,或者您可能需要基於其他原因變更 LookML 欄位的定義。
如果您使用 {TABLE}.field_name
語法直接在多個位置參照資料庫資料欄,則必須手動更新每個參照。如果您忘記更新參照該維度的欄位,Looker 就會顯示錯誤訊息,導致這些欄位無法正常運作:
如要讓 LookML 專案更有效率且更易於維護,您可以在單一位置定義欄位,並使用替換運算子 ($
) 在其他位置參照這些欄位。
本頁提供使用替換運算子 (使用 ${field_name}
語法) 的範例,說明如何在多個 LookML 欄位的定義中參照單一維度。
食材
- 替換運算子
- LookML
dimension
參數 - LookML
sql
參數 - LookML
sql_table_name
參數
事前準備
範例:針對維度僅參照基礎資料庫資料欄一次
在 LookML 專案中使用維度的 sql
參數,一次使用 ${TABLE}.field_name
語法定義資料庫資料欄。接著,在專案的其他位置使用 ${field_name}
或 ${view_name.field_name}
語法來參照維度。這樣一來,您就能在同一個位置 (原始 ${TABLE}.field_name
維度) 維護資料庫資料欄的 LookML 定義,如果您需要在專案的多個位置參照該資料欄,這項做法就很實用。
舉例來說,您可以使用 ${TABLE}.sale_price
語法,在名為 order_items
的檢視畫面中定義名為 sale_price
的基本維度:
dimension: sale_price {
type: number
value_format_name: usd
sql: ${TABLE}.sale_price ;;
description: "The price at which an item is set to sell."
}
定義參照 sale_price
維度的其他欄位時,可以在 order_items
檢視畫面中使用 ${sale_price}
語法 (或使用 ${order_items.sale_price}
語法參照其他檢視畫面中的 sale_price
維度)。
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} ;;
}
在這個範例中,如果維度 sale_price
的欄名稱有所變更,您只需要在基礎 sale_price
維度的定義中更新 ${TABLE}.sale_price
參照一次。這項變更會自動套用至 profit
、item_gross_margin
和 total_sale_price
欄位,以及參照 sale_price
維度的所有其他欄位。