用途
explore: explore_name {
always_join: [
view_name,
view_name,
...
]
}
|
階層
always_join |
デフォルト値
なし
許可
ビュー名のカンマ区切りリストを含む角かっこ
特別なルール
always_join で使用する前に、ビューを explore に結合する必要があります。 |
定義
always_join を使用すると、ユーザーが結合されたビューからフィールドを選択していない場合でも、Looker が生成する SQL に 1 つ以上の結合が強制的に含まれます。[view_name_a, view_name_b, etc] のようなカンマ区切りのリストを使用して、複数の結合が必要になる場合があります。
Looker はクエリの SQL を生成する際、可能な限りクリーンな SQL の作成を試み、ユーザーが選択したフィールドに必要な結合のみを使用します。always_join を使用すると、強制的に結合を実行できます。
always_join は、type パラメータを使用して結合が実行され、結合が LEFT JOIN でない場合に役立ちます。このような状況では、返される行を正しく制限するために結合が不可欠になることがあります。
例
ユーザーが member からフィールドを選択しなかった場合でも、member が常に event に結合されるようにします。これにより、結果がメンバーが生成したイベントのみに制限されます。
explore: event {
always_join: [member]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
}
ユーザーがこれらのビューのいずれかのフィールドを選択しなくても、member と payment が常に event に結合されるようにします。これにより、メンバーがすでに支払い済みのメンバー生成イベントのみが結果として返されます。
explore: event {
always_join: [member, payment]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
join: payment {
sql_on: ${member.payment_id} = ${payment.id} ;;
type: inner
}
}
一般的な課題
ビューを always_join で参照するには、その前にビューを Explore に結合する必要があります。
ビューを always_join に配置するには、always_join が使用されている Explore に結合されていることを確認します。たとえば、次のコードは機能しません。
explore: event {
always_join: [member]
}
ここでは、member ビューが event に結合されていないため、always_join で使用できません。
知っておくべきこと
可能な場合は結合でビジネス ロジックを適用しない
結合の標準的な Looker のアプローチは、可能な限り LEFT JOIN を使用することです。上記の例では、結合自体の中でビジネス ロジックを適用できるように、LEFT JOIN を回避しています。たとえば、メンバーに関連付けられたイベントのみを含む Explore を作成しました。
explore: event {
always_join: [member]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
}
Looker でこの処理を実行する推奨の方法は、LEFT JOIN を使用してイベントデータとメンバーデータを簡単に結合することです。
explore: event {
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
}
}
次に、メンバー イベントのみを表示するように、yes または no に設定できるディメンションを作成します。
dimension: is_member_event {
type: yesno
sql: ${member.id} IS NOT NULL ;;
}
この方法では、すべてのイベントを表示するか、メンバーのイベントのみを表示するかをユーザーが柔軟に選択できます。ユーザーが結合を介してメンバー イベントのみを参照するように強制していない。
Explore に always_join が含まれている場合、full_suggestions のデフォルト値が yes に切り替わる
Explore に always_join パラメータが含まれている場合、full_suggestions のデフォルト値は yes に切り替わります。これにより、候補クエリが Explore ロジックを使用して実行されます。つまり、always_join が適用されて返される候補が絞り込まれ、候補リストがユーザーがアクセスできるデータのみに制限されます。
full_suggestions を no に手動で設定すると、フィルタ候補クエリは実行されません。