집계 함수
집계 함수로 알려진 함수 제품군은 여러 필드 값을 입력으로 사용하고 그룹당 단일 결과를 반환하는 함수로 구성됩니다. 여기서 그룹화는 차트 차원 또는 스크립트 문에서 group by 절로 정의됩니다.
집계 함수에는 Sum(), Count(), Min(), Max() 등이 있습니다.
대부분의 집계 함수는 데이터 로드 스크립트와 차트 표현식에서 모두 사용할 수 있지만 구문이 다릅니다.
제한 사항:
집계 함수의 매개 변수는 이러한 내부 집계에 TOTAL 한정자가 포함되어 있지 않는 한 다른 집계 함수를 포함하지 않아야 합니다. 고급 중첩 집계가 필요한 경우는 고급 함수 Aggr을 지정된 차원과 함께 사용하십시오.
엔터티 이름을 지정할 때 둘 이상의 필드, 변수 또는 측정값에 동일한 이름을 지정하지 마십시오. 동일한 이름을 가진 엔터티 간의 충돌을 해결하기 위한 엄격한 우선 순위가 있습니다. 이 순서는 이러한 엔터티가 사용되는 모든 개체 또는 컨텍스트에 반영됩니다. 이 우선 순위는 다음과 같습니다.
-
집계 내에서 필드는 변수보다 우선합니다. 측정값 레이블은 집계와 관련이 없으며 우선 순위가 지정되지 않습니다.
-
집계 외부에서 측정값 레이블은 변수보다 우선 순위가 높으며, 이 변수는 필드 이름보다 우선합니다.
-
또한 집계 외부에서 레이블이 실제로 계산된 것이 아닌 한 해당 레이블을 참조하여 측정값을 재사용할 수 있습니다. 이 경우 자체 참조의 위험을 줄이기 위해 측정값의 중요성이 떨어지며, 이 경우 이름은 항상 첫 번째는 측정값 레이블, 두 번째는 필드 이름, 세 번째는 변수 이름으로 해석됩니다.
데이터 로드 스크립트에서 집계 함수 사용
집계 함수는 LOAD 및 SELECT 문 내에서만 사용할 수 있습니다.
차트 표현식에서 집계 함수 사용
집계 함수의 매개 변수는 이러한 내부 집계에 TOTAL 한정자가 포함되어 있지 않는 한 다른 집계 함수를 포함하지 않아야 합니다. 고급 중첩 집계가 필요한 경우는 고급 함수 Aggr을 지정된 차원과 함께 사용하십시오.
집계 함수는 선택에 의해 정의된 사용 가능한 레코드의 집합을 집계합니다. 하지만 집합 분석 시 집합 표현식을 사용하여 대체 레코드 집합을 정의할 수 있습니다.
참조: 집합 분석
집계 계산 방법
집계는 특정 테이블의 레코드를 반복하여 그 안의 레코드를 집계합니다. 예를 들어 Count(<Field>)는 <Field>가 있는 테이블의 레코드 수를 계수합니다. 고유 필드 값만 집계하려는 경우 distinct 절을 사용해야 합니다(예: Count(distinct<Field>)).
집계 함수에 다른 테이블의 필드가 포함된 경우 집계 함수는 필드로 구성된 테이블의 교차곱 레코드를 반복합니다. 이러한 집계 방식을 사용하면 성능이 저하되므로, 특히 대량의 데이터가 있는 경우에는 이러한 집계를 사용하지 않는 것이 좋습니다.
키 필드 집계
집계가 계산되는 방식은 집계에 사용해야 하는 테이블이 명확하지 않아 키 필드를 집계할 수 없음을 의미합니다. 예를 들어 <Key> 필드가 두 테이블을 연결하는 경우 Count(<Key>)는 첫 번째 테이블의 레코드 수를 반환해야 할지 두 번째 테이블의 레코드 수를 반환해야 할지 명확하지 않습니다.
하지만 distinct 절을 사용하면 집계는 잘 정의되고 계산할 수 있습니다.
따라서 distinct 절 없이 집계 함수 내에 키 필드를 사용하는 경우 Qlik Sense가 반환하는 숫자는 의미가 없을 수 있습니다. 해결 방법은 distinct 절을 사용하거나 하나의 테이블에만 있는 키 사본을 사용하는 것입니다.
예를 들어 다음 표에서는 ProductID는 테이블 간의 키입니다.
Count(ProductID)는 Products 테이블(제품당 하나의 레코드만 있음 – ProductID가 기본 키임)에서 계산되거나 Details 테이블(제품당 여러 레코드가 있을 가능성이 가장 높음)에서 계산될 수 있습니다. 고유한 제품의 수를 계산하려면 Count(distinct ProductID)를 사용해야 합니다. 특정 테이블의 행 수를 계산하려면 키를 사용하지 않아야 합니다.