집계 함수
집계 함수로 알려진 함수 패밀리는 여러 필드 값을 입력으로 사용하고 그룹당 단일 결과를 반환하는 함수로 구성되며, 여기서 그룹화는 스크립트 문의 차트 차원 또는 group by 절에 의해 정의됩니다.
집계 함수에는 Sum(), Count(), Min(), Max() 등이 있습니다.
대부분의 집계 함수는 데이터 로드 스크립트와 차트 표현식에서 모두 사용할 수 있지만 구문이 다릅니다.
데이터 로드 스크립트에서 집계 함수 사용
집계 함수는 LOAD 및 SELECT 문 내부에서만 사용할 수 있습니다.
차트 표현식에서 집계 함수 사용
이러한 내부 집계에 TOTAL 한정자가 포함되지 않는 한 집계 함수의 매개 변수에는 다른 집계 함수가 포함되어서는 안 됩니다. 고급 중첩 집계의 경우 고급 함수 Aggr을 지정된 차원과 함께 사용합니다.
집계 함수는 선택에 의해 정의된 사용 가능한 레코드의 집합을 집계합니다. 하지만 집합 분석 시 집합 표현식을 사용하여 대체 레코드 집합을 정의할 수 있습니다.
집계 계산 방법
집계는 특정 테이블의 레코드를 반복하여 해당 테이블의 레코드를 집계합니다. 예를 들어, Count(<Field>)는 <Field>가 있는 테이블의 레코드 수를 계산합니다. 고유한 필드 값만 집계하려면 Count(distinct <Field>)와 같은 distinct 절을 사용해야 합니다.
집계 함수에 다른 테이블의 필드가 포함된 경우 집계 함수는 구성 필드 테이블의 교차곱 레코드를 반복합니다. 이는 성능 저하를 가져오므로 이러한 집계는 특히 데이터 양이 많을 때 피해야 합니다.
키 필드 집계
집계가 계산되는 방식은 집계에 사용해야 하는 테이블이 명확하지 않기 때문에 키 필드를 집계할 수 없음을 의미합니다. 예를 들어 <Key> 필드가 두 테이블을 연결하는 경우 Count(<Key>)가 첫 번째 테이블의 레코드 수를 반환해야 하는지 아니면 두 번째 테이블의 레코드 수를 반환해야 하는지 명확하지 않습니다.
그러나 distinct 절을 사용하면 집계가 잘 정의되어 계산할 수 있습니다.
따라서 distinct 절 없이 집계 함수 내부에서 키 필드를 사용하면 QlikView는 의미 없는 숫자를 반환합니다. 해결책은 distinct 절을 사용하거나 키의 복사본(한 테이블에만 있는 복사본)을 사용하는 것입니다.
예를 들어 다음 테이블에서 ProductID는 테이블 사이의 키입니다.
Count(ProductID)는 Products 테이블(제품당 하나의 레코드만 있음 - ProductID가 기본 키임)에서 계산되거나 Details 테이블(제품당 여러 레코드가 있을 가능성이 높음)에서 계산될 수 있습니다. 고유한 제품의 수를 계산하려면 Count(distinct ProductID)를 사용해야 합니다. 특정 테이블의 행 수를 계산하려면 키를 사용하면 안 됩니다.