LookML フィールドの定義は時間の経過とともに変化する可能性があります。たとえば、データベースの列名が変更されたり、他の理由で LookML フィールドの定義を変更する必要が生じたりします。
構文 {TABLE}.field_name
を使用して複数の場所からデータベース列を直接参照する場合は、各参照を手動で更新する必要があります。ディメンションの更新を忘れると、そのディメンションを参照するフィールドが失われ、Looker によってエラーが表示されます。
LookML プロジェクトをより効率的で保守しやすいものにするには、フィールドを 1 か所で定義し、そうしたフィールドを置換演算子($
)を使用して他の場所で参照します。
このページでは、置換演算子の使用例(構文 ${field_name}
)を使用して、複数の LookML フィールドの定義で 1 つのディメンションを参照する例を示します。
材料
- 置換演算子
- LookML の
dimension
パラメータ - LookML の
sql
パラメータ - LookML の
sql_table_name
パラメータ
前提条件
例: ディメンションで基になるデータベース列を 1 回だけ参照する
ディメンションの sql
パラメータで構文 ${TABLE}.field_name
を使用して、LookML プロジェクトでデータベース テーブル列を 1 回定義します。次に、プロジェクトの他の場所で構文 ${field_name}
または ${view_name.field_name}
を使用してディメンションを参照します。これにより、データベース列の LookML 定義を 1 か所(元の ${TABLE}.field_name
ディメンション)で維持できます。これは、プロジェクト内の複数の場所から参照する必要がある場合に役立ちます。
たとえば、構文 ${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}
を使用できます(または、他のビューで sale_price
ディメンションを参照するには構文 ${order_items.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
ディメンションを参照するほかのすべてのフィールドに自動的に伝播されます。