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에 하나 이상의 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에서 사용할 수 없습니다.