このページでは、結合の一部である
fromパラメータについて説明します。
fromは、from(Explore 用)パラメータのドキュメント ページで説明されているように、Explore の一部としても使用できます。
用途
explore: view_name {
join: join_name {
from: view_name_2
}
}
|
階層
from |
デフォルト値
名前が結合の名前と一致するビュー
許可
既存のビューの名前
|
定義
from は、結合で使用する view を指定します。from が省略されている場合、Looker は基盤となるビュー名が結合名と同じであると想定します。
通常、from は、結合とそのフィールドに基盤となるビューとは異なる名前を付ける場合にのみ使用されます。これを明確にするために、underlying_view というビューに order_value というディメンションが作成されている例を考えてみましょう。
- このフィールドは通常、Explore UI で [UNDERLYING VIEW Order Value] として表示され、LookML で
${underlying_view.order_value}を使用して参照されます。 - 使用状況セクションの LookML がこの例に適用された場合、フィールドは 新しいエイリアス名「注文額」として表示され、
${new_alias_name.order_value}として参照されます。
この手法は、同じビューを複数の異なる方法で Explore に結合する必要がある場合に特に便利です。
例
ビュー person を Explore order に結合しますが、代わりに customer を呼び出します。
explore: order {
join: customer {
from: person
sql_on: ${order.customer_id} = ${customer.id} ;;
}
}
ビュー person を Explore order に 2 回結合します。1 回は customer として、もう 1 回は representative として結合します。
explore: order {
join: customer {
from: person
sql_on: ${order.customer_id} = ${customer.id} ;;
}
join: representative {
from: person
sql_on: ${order.representative_id} = ${representative.id} ;;
}
}
注意点
from は、Explore 内でフィールドが参照される方法を変更します。
前述したように、from を使用すると、フィールドの参照方法に大きな影響があります。view がさまざまな場所で使用されている場合、このことが原因で問題が発生する可能性があります。次の例を考えてみましょう。
explore: order {
join: customer {
from: person
sql_on: ${order.customer_id} = ${customer.id} ;;
}
}
ここでは、person が order に結合されていますが、customer と呼ばれています。したがって、order 内の customer からフィールドを参照する必要がある場合は、${customer.field_name} を使用します。2 つ目のデータ探索で person を order に再度結合し、customer に名前を変更しないと、2 つ目のデータ探索で ${customer.field_name} 参照は機能しません。この問題の一般的なアプローチは、fields を使用して、問題のあるフィールドを 2 番目の Explore から除外することです。これは次のようになります。
explore: the_second_explore {
fields: [ALL_FIELDS*, -person.problem_field]
join: person {
sql_on: ${the_second_explore.some_field} = ${person.some_field} ;;
}
}
from は、同じテーブルを Explore に複数回結合する場合に最もよく使用されます。
1 つのテーブルに異なるタイプのエンティティが含まれている場合は、ビューを Explore に複数回結合できます。order Explore があり、person ビューを 2 回結合する必要があるとします。1 回は顧客用、もう 1 回はカスタマー サービス担当者用です。次のようにできます。
explore: order {
join: customer {
from: person
sql_on: ${order.customer_id} = ${customer.id} ;;
}
join: representative {
from: person
sql_on: ${order.representative_id} = ${representative.id} ;;
}
}
この LookML から Looker が生成する SQL は次のとおりです。
SELECT ...
FROM order
LEFT JOIN person AS customer
ON customer.id = order.customer_id
LEFT JOIN person AS representative
ON representative.id = order.representative_id