from (조인용)

이 페이지에서는 join의 일부인 from 파라미터를 참조합니다.

from은 Explore의 일부로도 사용할 수 있으며, 이에 대한 설명은 from (Explore용) 매개변수 문서 페이지를 참고하세요.

사용


explore: view_name {
  join: join_name {
    from: view_name_2
  }
}
계층 구조
from
기본값
이름이 조인의 이름과 일치하는 뷰

수락
기존 뷰의 이름

정의

from은 조인에서 사용할 view을 지정합니다. from가 생략되면 Looker는 기본 뷰 이름이 조인 이름과 동일하다고 가정합니다.

일반적으로 from는 조인과 필드의 이름이 기본 뷰와 다른 경우에만 사용됩니다. 이해를 돕기 위해 underlying_view이라는 뷰에 order_value이라는 측정기준이 생성된 예를 살펴보겠습니다.

  • 이 필드는 일반적으로 Explore UI에 기본 뷰 주문 금액으로 표시되며 LookML에서 ${underlying_view.order_value}로 참조됩니다.
  • 사용 섹션의 LookML이 이 예에 적용되면 필드가 새 별칭 이름 주문 금액으로 표시되고 ${new_alias_name.order_value}로 참조됩니다.

이 기법은 동일한 뷰를 여러 가지 방법으로 탐색에 조인해야 할 때 특히 유용합니다.

예시

person 뷰를 order Explore에 조인하되 customer라고 호출합니다.

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

person를 Explore order에 두 번 조인합니다. 한 번은 customer로, 한 번은 representative로 조인합니다.

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
  join: representative {
    from: person
    sql_on: ${order.representative_id} = ${representative.id} ;;
  }
}

고려사항

from는 Explore 내에서 필드가 참조되는 방식을 변경합니다.

앞서 언급했듯이 from를 사용하면 필드가 참조되는 방식에 중요한 영향을 미칩니다. view이 여러 위치에서 사용되는 경우 문제가 발생할 수 있습니다. 다음 예를 참조하세요.

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

여기서 personorder에 조인되지만 customer로 호출됩니다. 따라서 order 내에서 customer의 필드를 참조해야 하는 경우 ${customer.field_name}를 사용합니다. 두 번째 Explore에서 person을 다시 order에 조인하지만 customer로 이름을 바꾸지 않으면 해당 두 번째 Explore에서 ${customer.field_name} 참조가 작동하지 않습니다. 이 문제에 대한 일반적인 접근 방식은 fields를 사용하여 두 번째 Explore에서 문제가 있는 필드를 제외하는 것입니다. URL에 태그를 추가하는 방법은 다음과 같습니다.

explore: the_second_explore {
  fields: [ALL_FIELDS*, -person.problem_field]
  join: person {
    sql_on: ${the_second_explore.some_field} = ${person.some_field} ;;
  }
}

from은 동일한 테이블을 Explore에 두 번 이상 조인하는 데 가장 자주 사용됩니다.

단일 테이블에 여러 유형의 항목이 포함된 경우 뷰를 Explore에 두 번 이상 조인할 수 있습니다. order 탐색이 있고 person 보기를 두 번 연결해야 한다고 가정해 보겠습니다. 한 번은 고객용이고 한 번은 고객 서비스 담당자용입니다. 다음과 같이 할 수 있습니다.

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
  join: representative {
    from: person
    sql_on: ${order.representative_id} = ${representative.id} ;;
  }
}

Looker가 이 LookML에서 생성하는 SQL은 다음과 같습니다.

SELECT    ...
FROM      order
LEFT JOIN person AS customer
ON        customer.id = order.customer_id
LEFT JOIN person AS representative
ON        representative.id = order.representative_id