LookML에서 조인 작업하기

조인을 사용하면 서로 다른 를 연결하여 둘 이상의 뷰에서 동시에 데이터를 탐색하고 데이터의 여러 부분이 서로 어떻게 연관되어 있는지 확인할 수 있습니다.

예를 들어 데이터베이스에 order_items, orders, users 테이블이 포함될 수 있습니다. 조인을 사용하여 모든 테이블의 데이터를 동시에 탐색할 수 있습니다. 이 페이지에서는 특정 조인 매개변수와 조인 패턴을 포함하여 LookML의 조인을 설명합니다.

참여는 탐색으로 시작

조인은 모델 파일에서 정의되며, 탐색 간의 관계를 설정합니다. 조인은 단일 탐색에 직접 또는 연결된 다른 뷰를 통해 하나 이상의 보기를 연결합니다.

두 개의 데이터베이스 테이블인 order_itemsorders을 살펴보겠습니다. 두 테이블의 뷰를 생성한 후 모델 파일의 explore 매개변수에서 하나 이상의 뷰를 선언합니다.

explore: order_items { ... }

order_items 탐색에서 쿼리를 실행하면 생성된 SQL의 FROM 절에 order_items가 나타납니다.

SELECT ...
FROM order_items

order_items 탐색에 추가 정보를 포함할 수 있습니다. 예를 들어 order_item가 속한 order에 관한 데이터를 추가하려면 다음과 같이 하면 됩니다.

explore: order_items {
  join: orders {
    type: left_outer
    relationship: many_to_one
    sql_on: ${order_items.order_id} = ${orders.id} &#59;&#59;
  }
}

위의 LookML은 두 가지 작업을 실행합니다. 먼저 UI에서 ordersorder_items의 필드를 모두 볼 수 있습니다.

둘째, LookML은 ordersorder_items를 함께 연결하는 방법을 설명합니다. 이 LookML은 다음 SQL로 변환됩니다.

SELECT ...
FROM order_items
LEFT JOIN orders
ON order_items.order_id = orders.id

이러한 LookML 매개변수는 다음 섹션에서 더 자세히 설명합니다. 이 LookML이 SQL로 변환되는 방법에 대한 자세한 내용은 join 매개변수 참조 페이지를 확인하세요.

채팅팀 도움말: 사용자는 조인 누락으로 인해 발생할 수 있는 유효성 검사 오류, '알 수 없음 또는 액세스할 수 없는 필드'에 대해 가장 많이 물어봅니다. 자세한 내용은 이 오류에 관한 고객센터 도움말을 참고하세요.

조인 매개변수

조인에 사용되는 4가지 기본 매개변수는 joins, join, type, relationship, sql_on입니다.

1단계: 탐색 시작하기

먼저 order_items 탐색 분석을 만듭니다.

explore: order_items { ... }

2단계: join

테이블을 조인하려면 먼저 뷰에서 선언해야 합니다. 이 예에서 orders는 모델의 기존 뷰입니다.

그런 다음 join 매개변수를 사용하여 orders 뷰를 order_items에 조인하겠다고 선언합니다.

explore: order_items {
  join: orders { ... }
}

3단계: type

실행할 조인의 type를 고려합니다. Looker는 LEFT JOIN, INNER JOIN, FULL OUTER JOIN, CROSS JOIN를 지원합니다. 이는 left_outer, inner, full_outer, crosstype 매개변수 값에 해당합니다.

explore: order_items {
  join: orders {
    type: left_outer
  }
}

type의 기본값은 left_outer이며 일반적으로 많이 사용되는 조인 유형입니다.

4단계: relationship

order_itemsorders 사이에 조인 relationship을 정의합니다. Looker에서 정확한 측정을 계산하려면 조인의 relationship를 올바르게 선언하는 것이 중요합니다. 관계는 order_items 탐색에서 orders~로 정의됩니다. 가능한 옵션은 one_to_one, many_to_one, one_to_many, many_to_many입니다.

이 예시에서는 단일 order에 여러 order_items가 있을 수 있습니다. order_items에서 orders로의 관계는 many_to_one입니다.

explore: order_items {
  join: orders {
    type: left_outer
    relationship: many_to_one
  }
}

조인에 relationship를 포함하지 않으면 Looker의 기본값은 many_to_one입니다.

조인에 맞게 relationship 매개변수를 올바르게 정의하는 방법에 관한 추가 도움말은 relationship 매개변수를 올바르게 가져오기 고객센터 도움말을 참고하세요.

5단계: sql_on

이 두 테이블을 sql_on 또는 foreign_key 매개변수와 함께 조인하는 방법을 선언합니다. 일반적으로 sql_onforeign_key이 할 수 있는 모든 작업을 할 수 있기 때문에 이해하는 것이 좋습니다.

sql_on은 쿼리에 대해 생성된 SQL의 ON 절과 같습니다. 이 매개변수를 사용하면 조인을 수행하기 위해 매칭해야 하는 필드를 선언할 수 있습니다.

explore: order_items {
  join: orders {
    type: left_outer
    relationship: many_to_one
    sql_on: ${order_items.order_id} = ${orders.id} &#59;&#59;
  }
}

더 복잡한 조인을 작성할 수도 있습니다. 예를 들어 id이 1, 000보다 큰 주문만 조인할 수 있습니다.

explore: order_items {
  join: orders {
    type: left_outer
    relationship: many_to_one
    sql_on: ${order_items.order_id} = ${orders.id} AND ${orders.id} > 1000 &#59;&#59;
  }
}

이 예에서 ${ ... } 구문에 대한 자세한 내용은 대체 연산자를 참고하세요.

6단계: 테스트

주문 항목 탐색으로 이동하여 이 조인이 예상대로 작동하는지 테스트합니다. order_itemsorders의 필드가 모두 표시됩니다.

LookML 변경사항 테스트에 관해 자세히 알아보려면 모델 개발을 참조하세요.

다른 뷰를 통해 참여

다른 보기를 통해 탐색에 보기에 참여할 수 있습니다. 위의 예시에서는 order_id 필드를 통해 ordersorder_items를 조인했습니다. 공통 필드를 공유하지 않더라도 users라는 뷰의 데이터를 order_items 탐색 분석에 조인할 수도 있습니다. orders 뷰를 통해 조인하면 됩니다.

sql_on 또는 foreign_key을 사용하여 order_items 대신 ordersusers를 조인합니다. orders의 필드를 orders.user_id로 올바르게 범위를 지정하면 됩니다.

다음은 sql_on를 사용하는 예입니다.

explore: order_items {
  join: orders {
    type: left_outer
    relationship: many_to_one
    sql_on: ${order_items.order_id} = ${orders.id} &#59;&#59;
  }
  join: users {
    type: left_outer
    relationship: many_to_one
    sql_on: ${orders.user_id} = ${users.id} &#59;&#59;
  }
}

두 번 이상 뷰에 참여

users 뷰에는 구매자판매자 모두의 데이터가 포함됩니다. 이 보기에서 order_items로 데이터를 결합하지만 구매자와 판매자에 대해 개별적으로 조인하려면 from 매개변수를 사용하여 다른 이름으로 users를 두 번 조인할 수 있습니다.

from 매개변수를 사용하면 조인에 사용할 뷰를 지정하면서 조인에 고유한 이름을 지정할 수 있습니다. 예를 들면 다음과 같습니다.

explore: order_items {
  join: orders {
    type: left_outer
    relationship: many_to_one
    sql_on: ${order_items.order_id} = ${orders.id} ;;
  }
  join: buyers {
    from: users
    type: left_outer
    relationship: many_to_one
    sql_on: ${orders.buyer_id} = ${buyers.id} ;;
  }
  join: sellers {
    from: users
    type: left_outer
    relationship: many_to_one
    sql_on: ${orders.seller_id} = ${sellers.id} ;;
  }
}

이 경우 구매자 데이터만 buyers로 조인되고 판매자 데이터만 sellers로 조인됩니다.

참고: 이제 users 뷰가 조인에서 별칭 buyerssellers으로 참조되어야 합니다.

조인에서 필드 제한

fields 매개변수를 사용하면 조인에서 탐색으로 가져올 필드를 지정할 수 있습니다. 기본적으로 뷰의 모든 필드는 조인될 때 가져옵니다. 하지만 일부 필드만 가져오는 것이 좋습니다.

예를 들어 ordersorder_items에 조인되면 조인을 통해 shippingtax 필드만 가져오는 것이 좋습니다.

explore: order_items {
  join: orders {
    type: left_outer
    relationship: many_to_one
    sql_on: ${order_items.order_id} = ${orders.id} ;;
    fields: [shipping, tax]
  }
}

[set_a*]와 같은 필드를 참조할 수도 있습니다. 각 세트는 set 매개변수를 사용하여 뷰 내에 정의됩니다. orders 뷰에 다음 집합이 정의되어 있다고 가정해 보겠습니다.

set: orders_set {
  fields: [created_date, shipping, tax]
}

ordersorder_items를 조인할 때 다음 세 가지 필드만 가져오도록 선택할 수 있습니다.

explore: order_items {
  join: orders {
    type: left_outer
    relationship: many_to_one
    sql_on: ${order_items.order_id} = ${orders.id} ;;
    fields: [orders_set*]
  }
}

대칭 집계

조인은 조인으로 인해 팬아웃이 발생하더라도 '대칭 집계'라고 하는 특성으로 집계 (예: 합계 및 평균)를 정확하게 계산합니다. 대칭 집계는 대칭 집계에 대한 간단한 설명 고객센터 도움말에 자세히 설명되어 있으며, 팬아웃 문제는 SQL 팬아웃 문제 도움말에 설명되어 있습니다.

기본 키는 필수 항목입니다.

조인을 통해 집계 (집계)를 수행하려면 조인과 관련된 모든 뷰에서 기본 키를 정의해야 합니다.

이렇게 하려면 각 뷰의 기본 키 필드 정의에 primary_key 매개변수를 추가하면 됩니다.

dimension: id {
  type: number
  primary_key: yes
}

조인된 조치를 올바르게 처리하기 위해 Looker에서는 NULL이 아닌 완전히 고유한 값을 갖는 기본 키를 지정합니다. 데이터에 기본 키가 포함되어 있지 않은 경우 여러 필드를 연결하면 완전히 NULL이 아닌 고유한 값의 기본 키가 될 수 있는지 고려하세요. 기본 키가 고유하지 않거나 NULL 값을 포함하고 있고 쿼리에 이러한 문제를 드러내는 데이터가 포함되어 있는 경우 Looker는 이 고객센터 도움말에 설명된 대로 오류를 반환합니다.

지원되는 SQL 언어

Looker 프로젝트에서 대칭 집계를 지원하려면 데이터베이스 언어에서도 대칭 집계를 지원해야 합니다. 다음 표는 최신 출시 버전의 Looker에서 대칭 집계를 지원하는 언어를 보여줍니다.

방언이 대칭 집계를 지원하지 않는 경우 Looker에서 조인을 실행할 때 주의해야 합니다. 일부 조인 유형으로 인해 합계 및 평균과 같은 부정확한 집계가 발생할 수 있습니다. 이 문제 및 해결 방법은 SQL 팬아웃 문제 고객센터 도움말에 자세히 설명되어 있습니다.

조인 자세히 알아보기

LookML의 조인 매개변수에 관한 자세한 내용은 조인 참조 문서를 확인하세요.