foreign_key

사용

explore: view_name_1 {
  join: view_name_2 {
    foreign_key: dimension_name
  }
}
계층 구조
foreign_key
기본값
없음

수락
Looker 측정기준 이름

특별 규칙
  • 이 필드에는 기본 테이블의 열 이름이 아닌 측정기준 이름이 필요합니다 (열 이름과 동일한 경우도 있음).
  • foreign_key, sql_foreign_key, sql_on은 동일한 join 내에서 동시에 사용할 수 없습니다.
  • 조인된 뷰의 측정기준 중 정확히 하나가 primary_key 파라미터를 사용하여 뷰의 기본 키로 정의되어야 합니다.

정의

foreign_key는 뷰와 Explore 간의 조인 관계를 설정합니다. Looker는 foreign_key로 참조되는 측정기준을 조인된 뷰의 기본 키와 일치시킵니다. 기본 키 역할을 하는 필드에 대해 primary_key를 사용 설정하여 조인된 뷰의 기본 키를 설정합니다.

foreign_key를 사용하는 경우 뷰를 Explore에 직접 조인할 수도 있고, 이미 해당 Explore에 조인된 두 번째 뷰를 통해 조인할 수도 있습니다.

뷰가 Explore에 직접 조인되는 첫 번째 사례의 예는 다음과 같습니다.

explore: order {
  join: customer {
    foreign_key: customer_id
  }
}

customer의 기본 키가 id로 지정되었다고 가정하면 Looker에서 생성한 SQL은 다음과 같습니다.

SELECT    ...
FROM      order
LEFT JOIN customer
ON        order.customer_id = customer.id

두 번째 경우에는 이미 해당 Explore에 조인된 중간 뷰를 통해 뷰가 Explore에 조인됩니다. 예를 들면 다음과 같습니다.

explore: order_items {
  join: order {
    foreign_key: order_id
  }
  join: customer {
    foreign_key: order.customer_id
  }
}

여기서는 customerorder_items에 직접 연결할 수 없습니다. 대신 order를 통해 결합해야 합니다. ordercustomer의 기본 키 이름이 모두 id라고 가정하면 Looker가 생성한 SQL은 다음과 같습니다.

SELECT    ...
FROM      order_items
LEFT JOIN order
ON        order_items.order_id = order.id
LEFT JOIN customer
ON        order.customer_id = customer.id

이 작업을 올바르게 수행하려면 customer_id 대신 customer을 조인할 때 완전히 범위가 지정된 필드 참조 order.customer_id를 사용해야 합니다. customer_id만 사용했다면 Looker는 order.customer_id을 통하지 않고 customerorder_items.customer_id에 직접 조인하려고 시도했을 것입니다.

예시

customer의 기본 키를 order.customer_id와 일치시켜 customer라는 뷰를 order라는 Explore에 조인합니다.

explore: order {
  join: customer {
    foreign_key: customer_id
  }
}

order 뷰를 통해 customer 뷰를 order_items Explore에 조인합니다. customer의 기본 키를 order.customer_id와 일치시키고 order의 기본 키를 order_items.order_id와 일치시킵니다.

explore: order_items {
  join: order {
    foreign_key: order_id
  }
  join: customer {
    foreign_key: order.customer_id
  }
}

orderinventory_item이라는 뷰를 order_items라는 Explore에 조인합니다. order의 기본 키를 order_items.order_id와 일치시키고 inventory_item의 기본 키를 order_items.inventory_id와 일치시킵니다.

explore: order_items {
  join: order {
    foreign_key: order_id
  }
  join: inventory_item {
    foreign_key: inventory_id
  }
}

일반 과제

foreign_key은 열 이름이 아닌 측정기준 이름을 참조해야 합니다.

foreign_key 매개변수는 기본 SQL 데이터베이스의 열 이름이 아닌 측정기준 이름만 사용합니다. 측정기준 이름과 열 이름이 동일한 경우가 많아 열 이름을 사용할 수 있다는 잘못된 결론을 내릴 수 있습니다.

foreign_key로 조인된 뷰에 기본 키가 정의되어 있어야 합니다.

foreign_key가 올바르게 작동하려면 조인된 뷰의 측정기준 중 하나가 해당 뷰의 기본 키로 정의되어야 합니다. 기본 키는 primary_key 매개변수를 통해 정의됩니다.

단일 측정기준만 기본 키로 정의할 수 있으므로 다중 열 기본 키가 있는 뷰에는 foreign_key를 사용할 수 없습니다. 이러한 경우에는 sql_on를 대신 사용해야 합니다.

알아 두어야 할 사항

Looker에서 참여하는 방법은 foreign_key뿐만이 아닙니다.

foreign_key로는 일부 조인 관계를 설정할 수 없습니다. 예를 들어 조인이 조인된 뷰의 기본 키를 사용하지 않거나 여러 조건이 조인의 일부여야 할 수 있습니다. 이러한 상황에서는 대신 sql_on를 사용하세요.