QlikWorld 2020 Global Conference. Weź udział i dowiedz się, jak w pełni wykorzystać dane. Nie zwlekaj. Zarejestruj się już teraz, by zaoszczędzić.

Aggr

Funkcja Aggr() zwraca tablicę wartości wyrażenia obliczonego po wskazanych wymiarach. Może to na przykład być wartość maksymalna sprzedaży według klienta i regionu. Funkcji Aggr używa się w agregacjach złożonych, w których wywołanie funkcji Aggr jest osadzone w innej funkcji agregującej, która wykorzystuje tablicę wyników z funkcji Aggr jako dane wejściowe dla własnej agregacji.

Syntax:  

Aggr({SetExpression}[DISTINCT] [NODISTINCT ] expr, StructuredParameter{, StructuredParameter})

Return data type: podwójny

Arguments:  

Argument Opis
expr

Wyrażenie zawierające funkcję agregacji. Funkcja agregacji będzie domyślnie dokonywać agregacji na zbiorze możliwych rekordów zdefiniowanym przez daną selekcję.

StructuredParameter

Argument StructuredParameter składa się z wymiaru i opcjonalnie może zawierać kryteria sortowania w formacie: (Dimension(Sort-type, Ordering))

Wymiar ten musi zajmować jedno pole i nie może być wyrażeniem. Wymiar służy do ustalania szeregu wartości, dla których wyliczane jest wyrażenie Aggr.

Jeśli uwzględnione są kryteria sortowania, wówczas szereg wartości utworzony przez funkcję Aggr i wyliczany dla wymiaru, jest sortowany. Jest to istotne, gdy kolejność sortowania wpływa na wynik wyrażenia, które obejmuje funkcję Aggr.

Szczegółowe informacje na temat sposobu używania kryteriów sortowania zawiera temat Dodawanie kryteriów sortowania do wymiaru w parametrze ustrukturyzowanym.

SetExpression Funkcja agregacji będzie domyślnie dokonywać agregacji na zbiorze możliwych rekordów zdefiniowanym przez daną selekcję. Alternatywny zestaw wierszy można zdefiniować za pomocą wyrażenia analizy zestawów.
DISTINCT Jeśli argument wyrażenia jest poprzedzony kwalifikatorem distinct lub w ogóle nie ma kwalifikatora, dla każdej odrębnej kombinacji wartości wymiarów będzie generowana tylko jedna wartość zwracana. W ten sposób są standardowo dokonywane agregacje. Każda odrębna kombinacja wartości wymiarów będzie generować jeden wiersz na wykresie.
NODISTINCT

Jeśli argument wyrażenia jest poprzedzony kwalifikatorem nodistinct, każda kombinacja wartości wymiarów może generować więcej niż jedną wartość zwracaną (w zależności od bazowej struktury danych). Jeśli występuje tylko jeden wymiar, funkcja aggr zwróci szereg z tą samą liczbą elementów co liczba wierszy w źródle danych.

Podstawowe funkcje agregacji, takie jak Sum, Min i Avg, zwracają jedną wartość liczbową, podczas gdy funkcja Aggr() może zostać poddana porównaniu w celu tymczasowego przeniesienia wyników (tabela wirtualna), względem których może zostać wykonana kolejna agregacja. Na przykład przez obliczenie wartości średniej sprzedaży przez zsumowanie wartości sprzedaży według klientów w ramach instrukcji Aggr(), a następnie obliczenie średniej z zsumowanych wyników za pomocą wyrażenia: Avg(TOTAL Aggr(Sum(Sales), Customer)).

Porada: Z funkcji Aggr() można skorzystać w wymiarach wyliczanych, jeśli na wielu poziomach ma być utworzona zagnieżdżona agregacja wykresów.

Limitations:  

Każdy wymiar w funkcji Aggr() musi być pojedynczym polem i nie może być wyrażeniem (wymiarem wyliczanym).

Dodawanie kryteriów sortowania do wymiaru w parametrze ustrukturyzowanym

W formie podstawowej argument StructuredParameter w składni funkcji Aggr jest wymiarem pojedynczym. Wyrażenie: Aggr(Sum(Sales, Month)) znajduje łączną wartość sprzedaży w każdym miesiącu. Jednak gdy to wyrażenie zostanie umieszczone w innej funkcji agregacji, wówczas wyniki mogą być nieoczekiwane, chyba że używane będą kryteria sortowania. Przyczyną takiego działania jest to, że niektóre wymiary mogą być sortowanie w porządku liczbowym lub alfabetycznym itd.

W argumencie StructuredParameter w funkcji Aggr można określić kryteria sortowania w wymiarze zawartym w wyrażeniu. W ten sposób można narzucić kolejność sortowania w tabeli wirtualnej, którą zwraca funkcja Aggr.

Argument StructuredParameter ma następującą składnię:

(FieldName, (Sort-type, Ordering))

Parametry ustrukturyzowane mogą być zagnieżdżane:

(FieldName, (FieldName2, (Sort-type, Ordering)))

Typy sortowania mogą być następujące: NUMERIC, TEXT, FREQUENCY lub LOAD_ORDER.

Typy kolejności powiązane z poszczególnymi typami sortowania są następujące:

Typ sortowania Dozwolone typy kolejności
NUMERIC ASCENDING, DESCENDING lub REVERSE
TEXT ASCENDING, A2Z, DESCENDING, REVERSE lub Z2A
FREQUENCY DESCENDING, REVERSE lub ASCENDING
LOAD_ORDER ASCENDING, ORIGINAL, DESCENDING lub REVERSE

Typy kolejności REVERSE i DESCENDING są równoważne.

W przypadku typu sortowania TEXT typy kolejności ASCENDING i A2Z są równoważne, podobnie jak typy DESCENDING, REVERSE i Z2A, które również są równoważne.

W przypadku typu sortowania LOAD_ORDER typy sortowania ASCENDING i ORIGINAL są równoważne.

Examples and results:  

Przykład Wynik
Avg(Aggr(Sum(UnitSales*UnitPrice), Customer))

Wyrażenie Aggr(Sum(UnitSales*UnitPrice), Customer) znajduje łączną wartość sprzedaży wg klienta (Customer), a następnie zwraca szereg wartości: 295, 715 i 120 dla trzech wartości Customer.

W ten sposób zbudowaliśmy tymczasową listę wartości bez konieczności tworzenia jawnej tabeli ani kolumny zawierającej te wartości.

Wartości te są stosowane jako dane wejściowe dla funkcji Avg(), aby znaleźć wartość średniej sprzedaż:, 376,6667. (W panelu właściwości należy wcześniej wybrać wartość Totals w menu Presentation).

Aggr(NODISTINCT Max(UnitPrice), Customer)

Tablica wartości: 16, 16, 16, 25, 25, 25, 19 i 19. Kwalifikator nodistinct oznacza, że szereg zawiera po jednym elemencie dla każdego wiersza w danych źródłowych: każdy jest maksymalną ceną UnitPrice dla każdego klienta (Customer ) i produktu (Product).

max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

Używanie kryteriów sortowania w argumencie StructuredParameter w wyrażeniu: max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear,(NUMERIC, ASCENDING))))

Bez kryteriów sortowania wynik wyrażenia max(aggr(sum(Customers)-above(Sum(Customers)), (MonthYear))) jest zależny od sposobu sortowania wymiaru MonthYear. W takim przypadku wynik może być niezgodny z oczekiwaniami.

Dodanie do wymiaru wartości określających typ sortowania i typ kolejności powoduje dodanie kryteriów sortowania do parametru ustrukturyzowanego: (MonthYear, (NUMERIC, ASCENDING)), gdzie typ sortowania NUMERIC i kolejność ASCENDING określają, że wymiar MonthYear jest sortowany rosnąco według wartości liczbowej.

W tym przypadku szukamy największego wzrostu liczby klientów z miesiąca na miesiąc. Można to wykorzystać na przykład w wizualizacji wskaźnika KPI.

Część Aggr wyrażenia porównuje łączną liczbę klientów z jednego miesiąca (co określa MonthYear) z łączną liczbą z poprzedniego miesiąca.

Z wymiarem: (MonthYear,(NUMERIC, ASCENDING)) używamy kryteriów sortowania, dzięki czemu mamy pewność, że Aggr porównuje liczby klientów w kolejnych miesiąca w tabeli wirtualnej poprzez sortowanie miesięcy w kolejności rosnącej według wartości liczbowej, a nie rosnąco w kolejności alfabetycznej.

Dane zastosowane w przykładach:

Utwórz tabelę z wymiarami Customer, Product, UnitPrice i UnitSales. Dodaj to wyrażenie do tabeli jako miarę.

ProductData:

LOAD * inline [

Customer|Product|UnitSales|UnitPrice

Astrida|AA|4|16

Astrida|AA|10|15

Astrida|BB|9|9

Betacab|BB|5|10

Betacab|CC|2|20

Betacab|DD|25|25

Canutility|AA|8|15

Canutility|CC||19

] (delimiter is '|');