사용
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]
}
}
여기서는 order이 order_items에 조인되지 않았으므로 required_joins에서 사용할 수 없습니다.