always_join

使用状況

Explore: explore_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
  }
}

ユーザーがこれらのビューからフィールドを選択しない場合でも、memberpayment は常に 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 ;;
}

この方法により、ユーザーはすべてのイベントのみを表示するか、メンバーのイベントのみを表示するかを柔軟に選択できます。結合を介してメンバー イベントのみを参照するようにユーザーに強制していない。