Przeskocz do zawartości głównej

Funkcje agregacji

Rodzina funkcji określanych jako funkcje agregacji składa się z funkcji pobierających wiele wartości pola jako dane wejściowe i zwracających jeden wynik na grupę. Grupowanie jest natomiast definiowane przez wymiar wykresu lub klauzulę group by w instrukcji skryptu.

Do funkcji agregacji należą: Sum(), Count(), Min(), Max() i wiele innych.

Większość funkcji agregacji może być użyta zarówno w skrypcie ładowania danych, jak i w wyrażeniach wykresu, ale różnią się one składnią.

Ograniczenia:  

Parametr funkcji agregacji nie może zawierać innych funkcji agregacji, chyba że takie wewnętrzne agregacje zawierają kwalifikator TOTAL. W przypadku bardziej zaawansowanych agregacji zagnieżdżonych należy stosować zaawansowaną funkcję w Aggrpołączeniu z określonym wymiarem.

Używanie funkcji agregacji w skrypcie ładowania danych

Funkcji agregacji można używać tylko w instrukcjach LOAD i SELECT.

Używanie funkcji agregacji w wyrażeniach wykresu

Parametr funkcji agregacji nie może zawierać innych funkcji agregacji, chyba że takie wewnętrzne agregacje zawierają kwalifikator TOTAL. W przypadku bardziej zaawansowanych agregacji zagnieżdżonych należy stosować zaawansowaną funkcję w Aggrpołączeniu z określonym wymiarem.

Funkcja agregacji wykonuje agregacje na zestawie możliwych rekordów zdefiniowanym przez selekcję. Można jednak zdefiniować alternatywny zestaw rekordów za pomocą wyrażenia set w analizie zestawów.

Zob.: Analiza zestawów

Jak obliczane są agregacje

Funkcja agregacji agreguje w pętli rekordy określonej tabeli. Na przykład Count(<Field>) spowoduje policzenie rekordów w tabeli, w których znajduje się <Field>. Jeśli chcesz zagregować tylko odrębne wartości pól, musisz użyć klauzuli distinct, na przykład Count(distinct<Field>).

Jeśli funkcja agregacji będzie zawierać pola z różnych tabel, będzie przetwarzać w pętli rekordy iloczynu wektorowego tabel pól składowych. Ma to negatywny wpływ na wydajność i z tego powodu należy unikać takich agregacji, szczególnie w przypadku dużych ilości danych.

Agregacja pól kluczowych

Sposób obliczania agregacji oznacza, że nie można agregować pól kluczowych, ponieważ nie jest jasne, która tabela ma być używana do agregacji. Na przykład, jeśli pole <Key> łączy dwie tabele, nie jest jasne, czy Count(<Key>) ma zwrócić liczbę rekordów z pierwszej czy drugiej tabeli.

Jeśli jednak użyjesz klauzuli distinct, agregacja będzie dobrze zdefiniowana i można ją będzie obliczyć.

Jeżeli więc użyjesz pola kluczowego wewnątrz funkcji agregacji bez klauzuli distinct, Qlik Sense zwróci liczbę, która może być bez znaczenia. Rozwiązaniem jest użycie klauzuli distinct lub kopii klucza znajdującej się tylko w jednej tabeli.

Na przykład w poniższych tabelach ProductID jest kluczem między tabelami.

Klucz ProductID między tabelami Products i Details

Count(ProductID) można liczyć w tabeli Products (która zawiera po jednym rekordzie na produkt — ProductID jest kluczem podstawowym) lub w tabeli Details (która najprawdopodobniej ma po kilka rekordów na produkt). Jeśli chcesz policzyć liczbę odrębnych produktów, użyj Count(distinct ProductID). Jeśli chcesz policzyć liczbę wierszy w określonej tabeli, nie używaj tego klucza.

POWIĄZANE MATERIAŁY EDUKACYJNE: