외래 키

용도

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

결제 가능
Looker 측정기준 이름

특수 규칙
  • 이 필드에는 기본 테이블의 열 이름이 아닌 측정기준 이름이 필요합니다 (동일한 경우도 있지만).
  • 동일한 join 내에서 foreign_key, sql_foreign_key, sql_on를 동시에 사용할 수 없습니다.
  • 조인된 뷰의 측정기준 중 정확히 하나만 primary_key 매개변수를 사용하여 뷰의 기본 키로 정의해야 합니다.

정의

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

보기는 foreign_key를 사용할 때 탐색에 직접 결합되거나 이미 해당 탐색에 연결된 두 번째 보기를 통해 결합될 수 있습니다.

뷰가 탐색에 직접 조인되는 첫 번째 케이스의 예는 다음과 같습니다.

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: 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를 조인할 때 단순히 customer_id가 아닌 전체 범위 필드 참조 order.customer_id를 사용했음을 알 수 있습니다. customer_id만 사용했다면 Looker는 order.customer_id를 통하지 않고 customerorder_items.customer_id에 직접 조인하려고 시도했을 것입니다.

Examples

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

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

customer라는 뷰를 order라는 뷰를 통해 order_items라는 탐색에 조인합니다. 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라는 탐색에 조인합니다. 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를 대신 사용해야 합니다.

알아두어야 할 사항

foreign_key 외에도 Looker에서 참여하는 다양한 방법이 있습니다.

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