使用状況
]
階層
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 ;;
}
この方法により、ユーザーはすべてのイベントのみを表示するか、メンバーのイベントのみを表示するかを柔軟に選択できます。結合を介してメンバー イベントのみを参照するようにユーザーに強制していない。