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 プロジェクトでデータベース テーブル列を定義する。その後、プロジェクト内の別の場所で ${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
ディメンションを参照するほかのすべてのフィールドに自動的に伝播されます。