보조 병합된 결과 쿼리에 null이 있는 이유는 무엇인가요?

병합된 결과는 LookML에서 개발하지 않고도 여러 Explore의 데이터를 빠르게 통합할 수 있는 편리한 기능입니다. 병합된 결과는 기본 쿼리와 보조 쿼리 간에 왼쪽 조인을 효과적으로 수행합니다. 즉, 필드 이름, 일치 값, 최종 결과 테이블은 보조 쿼리의 데이터가 기본 쿼리와 일치하는 방식에 따라 달라집니다.

이로 인해 Explore 간에 병합을 수행할 때 예기치 않은 결과가 발생할 수 있습니다. 병합된 결과 문서에서는 다음과 같은 몇 가지 조건을 다룹니다.

하지만 보조 쿼리의 값이 기본 쿼리의 값과 일치할 것으로 예상되지만 최종 결과에 null 값이 표시되면 어떻게 해야 할까요?

이 페이지에서는 이 예기치 않은 결과의 문제를 해결하는 방법을 설명합니다.

사용 사례

다음 사용 사례는 사용자 및 주문 정보가 포함된 샘플 전자상거래 데이터 세트를 기반으로 합니다. 이 예시에서는 하나의 쿼리(도시당 사용자 수(사용자 도시별로 그룹화된 사용자 수))와 보조 쿼리(사용자 도시사용자 주별로 그룹화된 주문 수(주문 수))를 병합합니다.

기본 쿼리

기본 쿼리는 사용자 도시별로 그룹화된 사용자 수입니다.

기본 쿼리 결과를 보여주는 Explore 병합된 결과 데이터 테이블

보조 쿼리

보조 쿼리는 사용자 도시사용자 주별로 그룹화된 주문 수입니다.

보조 쿼리 결과를 보여주는 Explore 병합된 결과 데이터 테이블

병합 규칙은 두 쿼리가 모두 공통되는 필드인 사용자 도시를 기준으로 두 쿼리를 병합하도록 설정됩니다. 앞에서 연결된 문서에 설명된 데이터 세트 및 예상되는 병합된 결과 동작을 숙지하고 있다면 각 행의 모든 도시에 부합하는 주 및 사용자 수가 있어야 한다는 것을 알 수 있습니다. 병합된 결과가 모든 값과 일치하고 null 값이 표시되지 않을 것으로 예상합니다.

하지만 결과에 null이 있습니다. 절반 이상의 도시에 부합하는 주 또는 주문 수가 없습니다.

보조 쿼리 필드의 null 값을 보여주는 병합된 결과 데이터 테이블

솔루션

걱정하지 마세요. 데이터에 일치하는 값이 있다고 확신하는 경우(별도의 쿼리를 실행하여 이 경우에 해당하는지 확인) 다음과 같은 여러 가지 방법으로 이 문제를 해결할 수 있습니다.

  • 각 소스 쿼리를 동일한 방식으로 정렬합니다.
  • 소스 쿼리 행 한도를 늘립니다.

각 소스 쿼리를 동일한 방식으로 정렬

병합된 결과는 기본적으로 행 500개로 제한되는 Explore를 기반으로 하므로 병합하는 쿼리 결과가 최종 결과에 포함되지 않는 경우가 있습니다.

이 문제를 해결하려면 개별 소스 쿼리가 서로 일치하도록 수정하고 정렬하면 됩니다. 

사용 사례에서 기본 쿼리가 사용자 도시를 기준으로 오름차순으로 정렬됩니다. 보조 쿼리는 그렇지 않습니다. 두 쿼리의 결과와 더 잘 일치시키려면 기본 쿼리와 동일한 방식으로 보조 쿼리를 정렬할 수 있습니다(이 경우 사용자 도시 기준으로 오름차순 정렬).

보조 쿼리를 기본 쿼리와 비슷하게 정렬하면 최종 병합에서 결과와 더 정확하게 일치합니다.

기본 및 보조 쿼리 필드에 null이 아닌 값을 표시하는 병합된 결과 데이터 테이블

소스 쿼리 행 한도 늘리기

앞에서 설명한 첫 번째 솔루션과 마찬가지로, 소스 쿼리에 설정된 행 한도로 인해 예상치 못한 null이 발생할 수 있습니다. 특히 이 경우 보조 쿼리(기본값 행 500개로 제한됨)에 기본 쿼리로 생성된 모든 행에 부합할 행이 부족하여 null 결과가 최종 병합에 표시됩니다.

보조 쿼리의 행 수를 기본 쿼리와 일치시키기 위해 늘리려면 보조 쿼리 행 한도를 늘리면 됩니다. 이렇게 하면 기본 쿼리와 일치할 수 있는 행이 늘어나고 보조 쿼리 열의 null 값이 줄어듭니다. 

기본 및 보조 쿼리 필드에 null이 아닌 값을 표시하는 병합된 결과 데이터 테이블

요약

예상치 못한 병합된 결과가 발생할 경우 다음 단계를 따라 문제를 해결할 수 있습니다.

  1. Explore의 톱니바퀴 메뉴에서 캐시 삭제 및 새로고침 옵션을 선택하여 쿼리가 최신 결과를 가져오도록 합니다.
  2. 병합된 결과 문서의 하나의 쿼리에 일치하는 데이터 값이 없으면 어떻게 해야 하나요? 섹션에 설명된 대로 null이 표시된 소스 쿼리 간에 일치하는 값이 있는지 확인합니다.
  3. 소스 쿼리가 서로 더 잘 일치하도록 정렬합니다.
  4. 일치 및 병합될 수 있는 더 많은 행을 노출하려면 소스 쿼리의 행 한도를 기본값보다 늘립니다.
  5. 여기서 설명하는 솔루션이 동작을 해결하지 못한다면 가능한 경우 더 정확한 결과를 얻기 위해 조인 로직을 LookML로 하드코딩합니다.