用途
explore: view_name_1 {
join: view_name_2 { ... }
join: view_name_3 {
required_joins: [view_name_2, ...]
}
}
|
階層
required_joins |
デフォルト値
なし
許可
この Explore の結合のカンマ区切りリストを含む角かっこ
特別なルール
ビューを required_joins で参照するには、その前にビューを Explore に結合する必要があります。 |
定義
required_joins を使用すると、ユーザーが結合されたビューからフィールドを選択していない場合でも、Looker が生成する SQL に 1 つ以上の joins を含めることができます。この動作は、ユーザーが指定した関連ビューからフィールドを選択するたびにトリガーされます。[join_name_a, join_name_b, ...] のようなカンマ区切りのリストを使用して、複数の結合が必要になる場合があります。
Looker はクエリの SQL を生成する際、可能な限りクリーンな SQL の作成を試み、ユーザーが選択したフィールドに必要な結合のみを使用します。このページの上部にある構文図の例では、次のようになります。
- ユーザーが
view_name_2のフィールドのみを選択した場合、そのビューのみが Explore に結合されます。 - ユーザーが
view_name_3からフィールドを選択すると、その結合のrequired_joinsパラメータにより、view_name_2が Explore に結合されます。
required_joins の主なユースケースは次のとおりです。
sql_on を使用した古い構文スタイル
sql_on は、${view_name.looker_dimension_name} 構文で使用される場合、required_joins を必要としません。ただし、一部の古いモデルでは、引き続き view_name.native_column_name 構文が使用されています。次に例を示します。
explore: order_items {
join: order {
sql_on: order_items.order_id = order.id ;;
}
join: customer {
sql_on: order.customer_id = customer.id ;;
required_joins: [order]
}
}
この例では、ユーザーが customer からフィールドを選択するたびに、適切な結合関係を維持するために order ビューも結合する必要があります。このクエリを必須にすることを忘れても、ユーザーがすべての必須ビューからフィールドを選択した場合は、クエリが機能する可能性があります。ただし、他のクエリでは、結合が正しくないため、データが正しくない結果が生成される可能性があります。
required_joins を使用する代わりに、${view_name.looker_dimension_name} 構文を使用するようにモデルを変更することを検討してください。
生の SQL を記述する必要がある
sql_on で ${view_name.looker_dimension_name} 構文を使用できない場合や、使用したくない場合があります。通常、これはデータベースで未加工の値を使用し、${view_name.looker_dimension_name} 構文で発生するキャストやその他の操作を回避するためです。使用例を次に示します。
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
}
join: pre_sign_up_events {
from: event
sql_on:
${event.user_id} = ${user.id} AND
event.date BETWEEN user.creation_date AND user.sign_up_date ;;
required_joins: [user]
relationship: one_to_many
}
}
この例では、pre_sign_up_events 結合は user の日付に依存しています。したがって、required_joins を使用して user が結合されていることを確認することが重要です。
時間フィールドまたは日付フィールドでのキャストを回避するために required_joins を使用する代わりに、date_raw 型の使用を検討し、required_joins の使用を避けてください。
一般的な課題
ビューを required_joins で参照するには、その前にビューを Explore に結合する必要があります。
ビューを required_joins に配置するには、required_joins が使用されている explore に結合されていることを確認する必要があります。たとえば、次のコードは機能しません。
explore: order_items {
join: customer {
sql_on: order.customer_id = customer.id ;;
required_joins: [order]
}
}
ここでは order が order_items に結合されていないため、required_joins で使用できません。