기본 콘텐츠로 건너뛰기

중첩 집계

차트 표현식에 포함되는 모든 필드 이름은 정확히 하나의 집계 함수로 둘러싸야 합니다. 집계를 중첩해야 하는 경우 Aggr()을 사용하여 두 번째 집계 수준을 추가할 수 있습니다. Aggr()은 집계 함수를 인수로 포함합니다.

항상 한 수준의 집계 함수

일반적인 앱에는 다음이 포함될 수 있습니다.

  • 데이터에 100만 개의 레코드
  • 피벗 테이블에 100개의 행
  • 게이지 또는 텍스트 상자에 단일 KPI

크기는 다르지만 세 숫자 모두 여전히 모든 데이터를 나타낼 수 있습니다. 숫자는 서로 다른 집계 수준입니다.

집계 함수는 많은 레코드의 값을 입력으로 사용하고 모든 레코드의 요약으로 볼 수 있는 단일 값으로 축소합니다. 한 가지 제한 사항이 있습니다. 집계 함수는 다른 집계 함수 내에서 사용할 수 없습니다. 일반적으로 모든 필드 참조를 하나의 집계 함수로 정확히 래핑해야 합니다.

다음 표현식이 작동합니다.

  • Sum(Sales)
  • Sum(Sales)/Count(Order Number)

다음 표현식은 중첩 집계이므로 작동하지 않습니다.

  • Count(Sum(Sales))

이에 대한 해결책은 Aggr() 함수의 형태로 제공됩니다. 해당 이름과 달리 집계 함수가 아닙니다. 수학의 행렬과 같은 "다대다" 함수입니다. N 레코드가 있는 테이블을 M 레코드가 있는 테이블로 변환합니다. 값으로 구성된 배열을 반환합니다. 하나의 측정값과 하나 이상의 차원이 있는 가상 일반표로 간주될 수도 있습니다.

팁: Aggr() 함수를 계산된 차원에서 사용하여 다양한 수준의 중첩 차트 집계를 생성할 수 있습니다.

중첩 집계를 위해 Aggr() 사용

Aggr()은 지정된 하나 또는 여러 차원에서 계산된 표현식에 대한 값의 배열을 반환합니다. 판매량, 고객 및 지역별 최대값을 예로 들 수 있습니다. 고급 집계에서 Aggr() 함수는 중첩된 집계에 대한 입력으로 Aggr() 함수의 결과로 구성된 배열을 사용하는 다른 집계 함수 안에 포함될 수 있습니다.

이 함수를 사용하면 Aggr() 문은 하나 이상의 차원으로 그룹화된 하나의 표현식으로 가상 테이블을 생성합니다. 그런 다음 이 가상 테이블의 결과는 외부 집계 함수가 더 집계할 수 있습니다.

최대 평균 주문 값 계산

차트 표현식에 간단한 Aggr() 문을 사용하겠습니다.

지역 수준에서 전체 척도뿐만 아니라 두 가지 더 복잡한 표현식도 표시하고 싶습니다.

  • 각 지역 내 관리자별 가장 큰 평균 주문 값.
  • 가장 큰 평균 주문 값을 담당하는 관리자.

표준 표현식 Sum(Sales)/Count([Order Number])를 사용하여 각 지역의 평균 주문 값을 쉽게 계산할 수 있습니다.

앱 내의 Nested Aggregations 시트에서 제목이 Aggr() function인 테이블을 찾습니다.

다음과 같이 하십시오.

  1. 사용 가능한 Aggr() function 테이블을 선택합니다.
    속성 패널이 열립니다.
  2. 열 추가를 클릭하고 측정값을 선택합니다.
  3. 3 기호를 클릭합니다.
    식 편집기를 엽니다.
  4. 다음을 입력합니다. Sum(Sales)/Count([Order Number])
  5. 적용을 클릭합니다.

지역별 평균 주문 값을 보여주는 테이블.

Table showing average order value per region.

팁: 데이터 형식이 올바른지 확인하는 것이 가장 좋습니다. 이 경우 각 열에서 계산을 나타내도록 레이블을 변경합니다. 통화 값이 있는 열에서 숫자 서식화폐로 변경하고 서식 패턴$ #,##0;-$ #,##0으로 변경합니다.

목표는 각 지역의 가장 큰 평균 주문 값을 검색하는 것입니다. Qlik Sense에서 관리자별로 각 지역의 평균 주문 값을 가져와서 가장 큰 값을 표시하도록 Aggr()을 사용해야 합니다. 관리자별로 각 지역의 평균 주문 값을 가져오려면 Aggr() 문에 다음 차원을 포함해야 합니다.

Aggr(Sum(Sales)/Count([Order Number]), Region, Manager)

이 표현식으로 인해 Qlik Sense는 다음과 같은 가상 테이블을 생성합니다.

관리자별로 각 지역의 평균 주문 값을 보여주는 Aggr() 함수의 가상 테이블.

table with AGGR function showing average order value for each region, per manager.

Qlik Sense가 관리자별로 각 지역의 개별 평균 주문 값을 계산할 때 이러한 값 중 가장 큰 값을 찾아야 합니다. Aggr() 함수를 Max()로 래핑하여 이 작업을 수행합니다.

Max(Aggr(Sum(Sales)/Count([Order Number]), Manager, Region))

다음과 같이 하십시오.

  1. 열 추가를 클릭하고 측정값을 선택합니다.
  2. 3 기호를 클릭합니다.
    식 편집기를 엽니다.
  3. 다음을 입력합니다. Max(Aggr(Sum(Sales)/ Count([Order Number]), Manager, Region))
  4. 적용을 클릭합니다.

관리자별로 지역, 평균 주문 값 및 각 지역의 가장 큰 평균 주문 값을 보여주는 테이블.

Table showing region, average order value, and largest average order value for each region, per manager.

지역 수준에서만 모든 관리자의 가장 큰 평균 주문 값을 볼 수 있습니다. 이는 두 가지 복잡한 표현식 중 첫 번째입니다. 다음 요구 사항은 이러한 큰 평균 주문 값을 담당하는 관리자 이름이 해당 값 옆에 표시되도록 하는 것입니다.

이를 위해 이전과 동일한 Aggr() 함수를 사용하지만 이번에는 FirstSortedValue() 함수를 사용합니다. Qlik Sense에서 관리자를 가져오도록 FirstSortedValue() 함수를 사용합니다. 이 함수의 두 번째 부분에 지정된 특정 차원의 경우 다음과 같습니다.

FirstSortedValue(Manager,-Aggr(Sum(Sales)/Count(Order Number), Manager, Region))

팁: 표현식에서 작지만 매우 중요한 부분이 있습니다. Aggr() 표현식 앞에 빼기 기호를 사용하는 것입니다. FirstSortedValue() 함수 내에 데이터 배열의 정렬 순서를 지정할 수 있습니다. 이 경우 빼기 기호를 사용하면 Qlik Sense에서 가장 큰 값부터 가장 작은 값으로 정렬합니다.

다음과 같이 하십시오.

  1. 열 추가를 클릭하고 측정값을 선택합니다.
  2. 기호 Expression 를 클릭합니다.
    식 편집기를 엽니다.
  3. 다음을 입력합니다. FirstSortedValue(Manager,-Aggr(Sum(Sales)/ Count([Order Number]), Manager, Region))
  4. 적용을 클릭합니다.

지역, 평균 주문 값 및 각 지역의 가장 큰 평균 주문 값과 해당 주문 값을 담당하는 관리자를 보여주는 테이블.

Table showing region, average order value, largest average order value for each region, and manager responsible for that order value.

자세한 내용은 Aggr를 참조하십시오.

자세한 내용은 FirstSortedValue를 참조하십시오.