여러 쿼리의 데이터 조인

Looker에서 Explore는 Looker 개발자가 데이터 필드와 테이블 간에 정의된 관계를 사용하여 가장 효과적인 방법으로 데이터베이스 테이블의 데이터를 결합하도록 설계되었습니다. 따라서 일반적으로 단일 Explore를 사용하여 데이터를 검사하는 것이 좋습니다.

그러나 Looker 개발자가 필요한 관계를 만들지 않았거나 기술적 제한이 발생했을 수 있습니다. 이러한 경우 데이터 조인 페이지를 사용하면 서로 다른 Explore(다른 모델 또는 프로젝트에서도)의 두 개 이상의 쿼리 결과를 조인 (또는 병합)하고 쿼리 결과를 하나의 쿼리인 것처럼 표시할 수 있습니다. 조인된 쿼리를 사용하여 Explore 및 시각화 만들기를 수행할 데이터 테이블을 만들고 개념 증명으로 LookML 프로젝트와 모델을 추가로 개발하고 정의할 수 있습니다.

조인된 결과 이해

쿼리를 조인하거나 병합할 때는 단일 Explore에서 단일 쿼리를 만든 다음 다른 쿼리를 첫 번째 쿼리와 결합합니다.

기본적으로 첫 번째 쿼리는 기본 쿼리로 간주됩니다. 기본 쿼리는 Looker가 데이터를 일치시켜 조인된 결과를 만들 때 추가된 각 쿼리를 다른 추가된 쿼리가 아닌 기본 쿼리와 일치시키기 때문에 중요합니다. 쿼리를 추가할 때마다 기본 쿼리의 측정기준과 일치할 수 있는 측정기준을 포함해야 합니다.

예를 들어, 다음 쿼리를 살펴보겠습니다.

기본 쿼리는 다음 결과를 반환합니다.

제품 카테고리 제품 카운트
활성 5
청바지 9
정장 3

보조 쿼리는 다음 결과를 반환합니다.

제품 카테고리 인벤토리 카운트의 항목
활성 11
청바지 16
정장 6

이러한 쿼리를 제품 카테고리 필드에 조인하면 Looker가 다음과 같은 조인된 결과를 생성합니다.

제품 카테고리 제품 카운트 인벤토리 카운트의 항목
활성 5 11
청바지 9 16
정장 3 6

조인된 결과는 실제 SQL 조인을 수행하지 않습니다(데이터베이스 내 병합 쿼리를 사용하지 않는 경우). 하지만 SQL 조인에 익숙한 사용자를 위해 쿼리 조인은 여러 개의 Explore 결과를 왼쪽 조인과 비슷한 방식으로 결합합니다. 추가된 쿼리의 결과가 기본 쿼리에 조인된 것처럼 기본 쿼리의 결과와 결합됩니다.

조인된 결과가 어떻게 작동하는지 이해하기 위해 왼쪽 조인의 개념에 대해 잘 알아야 하는 것은 아닙니다. 실질적으로 기본 쿼리 지정은 다음과 같은 이유로 중요합니다.

하나의 쿼리에 일치하는 데이터 값이 없으면 어떻게 해야 하나요?

기본 쿼리가 중요한 또 다른 이유는 일치하는 측정기준에서 null 값이 처리되는 방식 때문입니다.

  • 기본 쿼리에 행이 있지만 추가 쿼리에 없는 경우, 추가된 쿼리의 해당 행에 대한 필드에는 NULL (∅)이 표시됩니다.
  • 추가된 쿼리에 행이 있지만 기본 쿼리에는 없는 경우 행이 결과에 전혀 표시되지 않습니다.

이 동작을 설명하기 위해 다음 쿼리 예시를 살펴보세요.

기본 쿼리는 다음 결과를 반환합니다.

제품 카테고리 제품 부문 제품 카운트
활성 어린이 522
활성 성인 545
드레스 성인 878
정장 성인 349

보조 쿼리는 다음 결과를 반환합니다.

제품 카테고리 제품 브랜드 이름 인벤토리 카운트의 항목
활성 브랜드 1 223
드레스 브랜드 2 80
드레스 브랜드 3 3
청바지 브랜드 3 8
청바지 브랜드 2 19

이러한 쿼리를 제품 카테고리 필드에 조인하면 Looker가 다음과 같은 조인된 결과를 생성합니다.

제품 카테고리 제품 부문 제품 브랜드 이름 제품 카운트 인벤토리 카운트의 항목
활성 성인 브랜드 1 545 223
활성 어린이 브랜드 1 522 223
드레스 성인 브랜드 2 878 80
드레스 성인 브랜드 3 878 3
정장 성인 ∅ 349 ∅

기본 쿼리에는 정장 행이 있으므로 조인된 결과에 이 행이 표시됩니다. 추가된 쿼리에는 정장 행이 없으므로 추가된 쿼리의 필드에는 정장에 대한 NULL (∅)이 표시됩니다.

추가된 쿼리에는 청바지에 대한 행이 두 개 있지만 기본 쿼리에는 청바지에 대한 행이 없습니다. 따라서 이러한 행은 조인된 결과에 전혀 표시되지 않습니다.

이 예시에서 추가된 쿼리를 새 기본 쿼리로 만들기 위해 기본 쿼리를 전환하면 Looker가 다음과 같은 조인된 결과를 대신 생성합니다.

제품 카테고리 제품 브랜드 이름 제품 부문 인벤토리 카운트의 항목 제품 카운트
활성 브랜드 1 성인 223 545
활성 브랜드 1 어린이 223 522
드레스 브랜드 2 성인 80 878
드레스 브랜드 3 성인 3 878
청바지 브랜드 2 ∅ 19 ∅
청바지 브랜드 3 ∅ 8 ∅

정장 행은 더 이상 새 기본 쿼리에 없으므로 Looker가 표시하지 않습니다. 하지만 Looker는 이제 청바지 행을 표시하고 기본 쿼리에 추가된 쿼리에만 있는 측정기준 및 측정에 대해 이러한 행은 NULL (∅)을 표시합니다.

누락되거나 null 조인된 결과 값에 대한 추가적인 문제 해결 팁을 보려면 보조 조인 결과 쿼리에 null이 있는 이유는 무엇인가요?를 참조하세요. 권장사항 페이지

하나의 쿼리에 동일한 값의 행이 여러 개 있으면 어떻게 해야 하나요?

일치하는 값이 있는 여러 행이 처리되는 방식으로 인해 기본 쿼리를 지정하는 것도 중요합니다. 추가된 쿼리에 기본 쿼리의 행과 일치하는 값이 있는 행이 2개 이상 있으면 기본 쿼리 행이 해당 횟수로 중복됩니다.

아래 예에서, 추가된 쿼리에 드레스 행이 2개 있습니다. 조인된 결과에서 기본 쿼리의 드레스 값은 추가된 쿼리의 각 드레스 행에 1번씩 총 2번 표시됩니다.

기본 쿼리는 다음 결과를 반환합니다.

제품 카테고리 제품 부문 제품 카운트
활성 어린이 522
활성 성인 545
드레스 성인 878
정장 성인 349

보조 쿼리는 다음 결과를 반환합니다.

제품 카테고리 제품 브랜드 이름 인벤토리 카운트의 항목
활성 브랜드 1 223
드레스 브랜드 2 80
드레스 브랜드 3 3
청바지 브랜드 3 8
청바지 브랜드 2 19

제품 카테고리 필드에 병합되는 조인된 결과 쿼리는 다음 결과를 반환합니다.

제품 카테고리 제품 부문 제품 브랜드 이름 제품 카운트 인벤토리 카운트의 항목
활성 성인 브랜드 1 545 223
활성 어린이 브랜드 1 522 223
드레스 성인 브랜드 2 878 80
드레스 성인 브랜드 3 878 3
정장 성인 ∅ 349 ∅

이 경우 기본 쿼리를 전환하면 새로 지정된 기본 쿼리에 드레스에 대한 행이 2개 있으므로 여전히 드레스 행이 2개 남게 됩니다. 쿼리를 조인할 때 결과에 기본 쿼리보다 더 많은 행이 있을 수 있지만 행이 더 적은 경우는 없습니다.

데이터베이스 내 병합 쿼리

기본적으로 조인된 쿼리는 Looker 메모리에서 처리되므로 각 쿼리는 조인할 수 있는 행이 5,000개로 제한됩니다. Looker 관리자가 데이터베이스 내 병합 쿼리 Looker Labs 기능을 사용 설정한 경우 동일한 BigQuery 연결에 있는 두 쿼리 간의 조인이 BigQuery 데이터베이스 자체에서 수행됩니다. 데이터베이스에서 조인을 수행하면 성능이 향상되고 무제한 행을 조인할 수 있습니다.

또한 조인된 결과에 대해 각 Explore 쿼리를 만들 때 Looker UI에는 행 제한 필드가 포함됩니다. Looker는 조인된 결과 쿼리가 처리되는 방식에 따라 행 한도 필드를 다양한 방식으로 사용합니다.

  • Looker 메모리에서 계산되는 조인된 쿼리의 경우 Looker는 각 쿼리의 행 한도 필드에 지정된 행 수를 검색하고 해당 데이터를 조인하여 조인된 결과를 만듭니다.
  • 데이터베이스 내 병합된 쿼리의 경우 Looker는 각 소스 쿼리의 행 한도 값을 무시하고 각 소스 쿼리의 전체 데이터 세트를 조인합니다.

Looker가 조인된 쿼리에 대해 데이터베이스 내 조인을 수행할 수 있는 경우 쿼리가 데이터베이스에서 실행되고 있으며 Looker가 각 소스 쿼리에서 행 한도를 생략하고 있음을 나타내는 배너가 표시됩니다.

그런 다음 데이터베이스 내 병합된 쿼리의 결과 테이블에서 Looker는 행 제한 필드 대신 병합된 결과 필드를 표시합니다. 병합된 결과 필드는 처리되는 행이 아니라 결과 테이블에 표시되는 행을 제한합니다. 데이터베이스 내 병합된 결과 쿼리에는 처리할 수 있는 행 수에 제한이 없기 때문입니다.

쿼리 조인

여러 쿼리의 결과를 조인하려면 다음 단계를 따르세요.

  1. 기본 쿼리라는 첫 번째 소스 쿼리를 만듭니다.
  2. 다음 소스 쿼리를 추가합니다.
  3. 원하는 경우 조인된 쿼리에 대한 조인 규칙을 구성합니다.
  4. 선택적으로 조인된 쿼리를 시각화합니다.
  5. 조인된 쿼리를 만든 후 조인된 쿼리를 저장하거나 공유합니다.
  6. 원하는 경우 조인된 쿼리를 수정합니다.

기본 쿼리 만들기

여러 쿼리의 결과를 조인하려면 먼저 Explore 메뉴에서 Explore를 선택한 후 필드 선택 도구에서 관심 있는 측정기준 및 측정값을 선택하여 기본 쿼리를 준비합니다. 이 단계에서는 측정기준을 피벗하지 마세요. 또는 Look 또는 대시보드를 선택하고 Look 또는 대시보드 타일에서 여기에서 탐색을 클릭합니다.

이제 병합된 결과 병합을 시작할 수 있습니다. 하지만 다음과 같은 선택적 방법으로 쿼리를 더 세분화할 수도 있습니다.

  • 데이터의 필터를 추가합니다.
  • 테이블 계산을 포함하여 임시 측정항목을 만듭니다. 소스 쿼리의 테이블 계산은 조인된 결과에 표준 측정기준으로 표시됩니다.
  • 실행을 클릭하여 기본 쿼리의 결과를 보고 필터와 테이블 계산을 테스트합니다.

다음 소스 쿼리 추가

기본 Explore 쿼리를 만든 후 다음 단계에 따라 다른 소스 쿼리를 추가합니다.

  1. Explore 구성 패널에서 쿼리 병합 (데이터 조인)을 클릭하여 데이터 조인 페이지를 엽니다.
  2. 조인 추가 창에서 다른 소스 쿼리를 추가하는 데 사용할 방법을 선택합니다.

    • Explore에서 새 쿼리 빌드: Looker에 Explore 목록이 표시됩니다. 소스 쿼리로 사용할 Explore를 선택하고 쿼리 추가를 클릭합니다. Looker에 조인된 필드 구성 페이지가 표시됩니다. 새 쿼리의 측정기준 및 측정값을 선택하고 필터 또는 커스텀 필드를 추가합니다. 소스 쿼리에서 측정기준을 피벗하지 마세요. 대신 조인된 결과에서 측정기준을 피벗하세요. 값이 기본 쿼리의 측정기준과 정확하게 일치하는 측정기준이 하나 이상 포함되어야 합니다. 새 소스 쿼리 구성을 완료하면 저장하고 계속하기를 클릭합니다.
    • 사전 빌드된 쿼리 URL 붙여넣기: 사전 빌드된 쿼리 URL 추가 필드에 소스 쿼리로 사용할 쿼리, Look 또는 대시보드 타일의 URL을 입력하고 쿼리 추가를 클릭합니다.
    • Look 선택: Looker에 Look 목록이 표시됩니다. 소스 쿼리로 사용할 Look을 선택하고 쿼리 추가를 클릭합니다.
    • 대시보드 타일 선택: Looker에 대시보드 목록이 표시됩니다. 대시보드를 선택하면 Looker가 해당 대시보드의 타일 목록을 표시합니다. 타일을 선택하고 쿼리 추가를 클릭합니다.

조인 규칙 구성

두 개 이상의 쿼리를 조인하기 위해 Looker는 값이 일치할 수 있는 쿼리에서 측정기준을 찾습니다. 추가된 각 쿼리에는 기본 쿼리의 측정기준과 정확하게 일치할 수 있는 공통 측정기준이 하나 이상 있어야 합니다. 예를 들어 주문 Explore에 고객 데이터를 추가하려는 경우 주문 Explore와 고객 쿼리 모두에 일치하는 값이 있는 고객 ID 필드가 있으면 고객 ID 필드를 사용하여 쿼리를 조인할 수 있습니다. 하지만 두 쿼리 모두 날짜 측정기준이 있지만 한 쿼리는 값으로 "2017-10-01"을 사용하고 다른 쿼리는 값으로 "October 2017"을 사용하는 경우 Looker가 쿼리를 조인할 때 사용할 수 없습니다.

기본 및 추가 소스 쿼리를 선택하고 구성하면 Looker가 가장 일치하는 조인 필드를 자동으로 선택하고 데이터 조인 페이지의 조인 구성 창에 조인 규칙을 만듭니다. 기본 쿼리와 각 조인 규칙은 소스 쿼리 및 조인 규칙 아래에 별도의 항목으로 표시됩니다.

소스 쿼리 및 조인 규칙 섹션에서 다음과 같은 방법으로 조인 규칙을 수정할 수 있습니다.

  • 기본 쿼리 또는 소스 쿼리의 조인 필드를 변경합니다.
  • 새 조인 필드를 추가합니다.
  • 조인 필드를 삭제합니다.
  • 소스 쿼리를 기본 쿼리로 설정합니다. 기본 쿼리를 전환하면 조인된 결과가 변경될 가능성이 높습니다. 기본 쿼리의 역할을 이해하려면 조인된 결과 이해를 참조하세요.
  • 조인 추가를 클릭하여 새 소스 쿼리를 추가합니다.

차트 스타일 구성

조인된 쿼리를 시각화하려면 차트 선택을 클릭하여 시각화 유형을 선택합니다. 또는 자동 시각화 옵션을 사용하여 Gemini가 적절한 시각화를 선택하도록 할 수 있습니다. 그런 다음 차트 스타일을 선택하여 해당 차트 유형의 차트 옵션을 구성합니다.

사용 가능한 모든 시각화 설정 및 지원되는 차트 유형에 대한 전체 가이드는 시각화 구성 및 수정을 참조하세요.

조인된 쿼리 저장 또는 공유

조인된 쿼리를 만든 후 저장 또는 공유를 클릭하여 다음 작업을 수행할 수 있습니다.

  • 새 대시보드에 저장: Looker에 새 대시보드로 저장 창이 표시됩니다. 새 대시보드에 제목을 지정하고 새 대시보드를 저장할 폴더를 선택합니다.
  • 기존 대시보드에 저장: Looker에 이 폴더의 대시보드에 추가 창이 표시됩니다. 새 대시보드 타일의 제목을 입력하고 쿼리를 저장할 대시보드를 선택합니다.
  • URL 복사: Looker에 URL 공유 창이 표시되고 쿼리의 단축 URL 및 확장 URL이 표시됩니다. URL을 공유하거나 브라우저에서 북마크하여 나중에 동일한 조인된 쿼리를 다시 실행할 수 있습니다. 조인된 결과를 Look으로 저장할 수 없습니다.

조인된 쿼리를 대시보드에 추가하면 조인된 쿼리 타일에 대시보드 필터를 추가 또는 적용하거나, 타일 재정렬, 타일 수정 또는 새 타일 추가를 할 수 있습니다. 조인된 결과를 기반으로 하는 타일에서 데이터를 직접 다운로드할 수 없지만 대시보드를 PDF로 다운로드하거나 CSV 파일 모음으로 다운로드할 수 있습니다.

조인된 쿼리 수정

조인된 쿼리를 만든 후에는 데이터 조인 페이지에서 다음과 같은 방법으로 결과와 상호작용하고 쿼리를 수정할 수 있습니다.

  • 데이터 분석을 포함한 데이터 검토 및 정렬 그러나 두 Explore를 조인하는 데 사용하는 측정기준을 자세히 분석하면 Looker는 기본 Explore의 드릴 필드만 표시합니다.
  • 조인 구성 창에서 기본 쿼리 옆에 있는 쿼리 수정을 선택하여 쿼리의 데이터 테이블을 열고 필드 선택 도구를 사용하여 필드 추가 또는 삭제, 테이블 계산 추가, 소스 쿼리의 필터 변경과 같은 변경을 수행합니다 (조인된 결과에 필터를 직접 추가할 수 없음). 기본 쿼리 옆에 있는 옵션을 선택하여 기본 쿼리의 이름을 바꾸거나 삭제할 수도 있습니다.
  • 조인 구성 창에서 조인 규칙에서 수정할 쿼리 옆에 있는 쿼리 수정을 선택합니다. 각 추가 소스 쿼리에 대해 옵션을 선택하고 쿼리 이름을 바꾸거나 삭제할 수도 있습니다 (쿼리를 삭제한 후 조인된 결과에 쿼리를 다시 추가하려면 브라우저에서 뒤로 버튼을 사용하면 됩니다). 또는 해당 소스 쿼리를 조인된 쿼리의 기본 쿼리로 만들 수 있습니다.
  • 조인된 필드 및 차트 스타일 창의 조인된 필드 탭에서 조인된 쿼리 필드 중 하나 이상을 피벗하고 테이블 계산을 추가합니다. 소스 쿼리의 테이블 계산은 조인된 결과에 표준 측정기준으로 표시됩니다.
  • 조인된 필드 및 차트 스타일 창의 차트 스타일 탭에서 조인된 쿼리 시각화 설정을 변경합니다.
  • 합계 전환을 사용하여 조인된 쿼리에서 합계를 추가하거나 삭제합니다. Looker는 각 구성요소 쿼리의 총계를 계산하고 이 총계를 조인된 결과에 사용합니다. 따라서 표시되는 결과가 총합이 너무 많아 보일 수 있습니다. 결과가 조인되기 전에 합계가 계산되기 때문입니다. 항상 최신 데이터를 표시하는 한 가지 방법은 각 쿼리에서 필터를 정렬하는 것입니다.
  • 차트 변경을 클릭하여 조인된 쿼리에 다른 시각화를 선택합니다.

변경한 후 실행하여 업데이트를 클릭하여 업데이트된 조인된 쿼리의 결과를 볼 수 있습니다.

대시보드에서 조인 쿼리 타일 수정

대시보드에서 조인 쿼리 타일을 수정하려면 다음 단계를 따르세요.

  1. 대시보드를 수정 모드로 전환합니다.
  2. 타일에서 병합된 쿼리 수정을 선택합니다.
  3. Looker가 대시보드 수정 캔버스 내에서 데이터 조인 페이지를 직접 엽니다.
  4. 기본 쿼리, 추가 소스 쿼리, 조인 규칙 또는 시각화를 변경합니다.
  5. 저장을 선택하여 조인된 쿼리 설정을 업데이트한 후 저장을 선택하여 대시보드의 타일을 업데이트합니다.

삽입된 Look, 대시보드, Explore에서 쿼리 병합

적절한 권한이 있는 경우 삽입된 Look, 대시보드, Explore 내에서 쿼리를 조인할 수 있습니다.

  • 삽입된 Look 또는 삽입된 대시보드 타일의 쿼리를 다른 쿼리와 조인하려면 여기에서 Explore를 클릭하여 Look 또는 대시보드 타일에서 Explore를 연 다음 쿼리 조인 단계를 따릅니다.
  • 삽입된 Explore에서 구성 패널의 쿼리 병합(데이터 조인)을 클릭하고 쿼리 조인 단계를 따릅니다.

참고

  • 모든 기본 쿼리의 필드는 조인된 결과에 표시되며, 필드에 기본 쿼리의 이름을 사용합니다. 기본 쿼리와 추가된 쿼리가 일치하는 측정기준에 대해 다른 이름을 사용하면 결과에 기본 쿼리의 측정기준 이름만 표시됩니다.
  • 조인된 쿼리에 행 한도가 있을 수 있습니다.

    • 기본적으로 조인된 쿼리의 조인은 Looker 메모리에서 처리되므로 조인되는 각 쿼리는 조인할 수 있는 행이 5,000개로 제한됩니다 (또는 관리자가 더 높은 한도를 지정한 경우 최대 50,000개 행). 행 한도에서 허용하는 것보다 더 많은 행을 반환하는 쿼리를 조인하는 경우 조인된 결과에는 행 한도를 초과하는 행이 표시되지 않습니다.
    • Looker 관리자가 데이터베이스 내 병합 쿼리 Looker 실험실 기능을 사용 설정했고 동일한 BigQuery 연결에 있는 두 쿼리의 결과를 병합하는 경우 두 쿼리 간의 조인이 BigQuery 데이터베이스 자체에서 수행됩니다. 데이터베이스 내 병합 쿼리는 성능을 개선하고 무제한 행을 조인할 수 있습니다. 자세한 내용은 이 페이지의 데이터베이스 내 병합 쿼리 섹션을 참조하세요.
  • Looker 메모리에서 처리되는 조인된 쿼리의 경우 쿼리 병합은 쿼리 후 처리 기능으로, 신중하게 사용하지 않을 경우 Looker 인스턴스 리소스를 오버로드하고 Looker 인스턴스가 모든 사용자에 대해 더 느리게 응답하게 될 수 있습니다. 데이터베이스 내 병합 쿼리를 활용할 수 없는 경우 데이터베이스에서 처리하는 SQL을 생성하는 LookML에서 함수와 로직을 정의하는 것이 좋습니다. Looker 성능 최적화에 대한 자세한 내용은 Looker 성능 최적화 권장사항 페이지를 참조하세요.

결론

Looker 개발자가 여러 데이터베이스 테이블의 데이터를 결합하는 방법을 신중하게 고려했으므로 가능한 모든 경우에 단일 Explore의 데이터를 사용해야 합니다. 그러나 필요한 경우 여러 Explore 및 데이터베이스의 데이터를 결합할 수 있는 강력한 기법이 쿼리 조인입니다.