このページでは、join の一部である
from
パラメータについて説明します。
from
は、Explore の一部として使用することもできます(from
(Explore 用)パラメータのドキュメント ページを参照)。
使用状況
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}
を使用して参照されます。 - 上記の使用例では、このフィールドは NEW ALIAS NAME Order Value として表示され、
${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 回追加します(customer
で 1 回、representative
で 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} ;;
}
}
注意点
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 番目の Explore で再度 person
を order
に結合しても、名前を customer
に変更しないと、2 番目の Explore で ${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 回)結合する必要があるとします。次のようにできます。
explore: order {
join: customer {
from: person
sql_on: ${order.customer_id} = ${customer.id} ;;
}
join: representative {
from: person
sql_on: ${order.representative_id} = ${representative.id} ;;
}
}
Looker がこの LookML から生成する 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