required_joins

用途

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]
  }
}

ここでは orderorder_items に結合されていないため、required_joins で使用できません。