Aggr - funkcja wykresu

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.

Składnia:  

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

Typ zwracanych danych: podwójny

Argumenty:  

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 działanie funkcji Aggr() można porównać do tworzenia tymczasowego przemieszczonego zbioru wyników (tabeli wirtualnej), który może posłużyć do przeprowadzenia kolejnej agregacji. 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 korzystać w wymiarach wyliczanych, jeśli na wielu poziomach ma być utworzona zagnieżdżona agregacja wykresów.

Ograniczenia:  

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 kolejności ASCENDING i ORIGINAL są równoważne.

Przykłady i wyniki:  

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 musi być wybrana wartość Sumy w menu Presentation).

Aggr(NODISTINCT Max(UnitPrice), Customer)

Szereg 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życie 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 w jednym miesiącu (co podaje MonthYear) z łączną liczbą z poprzedniego miesiąca.

Z wymiarem używamy kryteriów sortowania: (MonthYear,(NUMERIC, ASCENDING)), dlatego mamy pewność, że Aggr porównuje liczby klientów w kolejnych miesiącach w tabeli wirtualnej, sortując miesiące rosnąco według wartości liczbowej, a nie w kolejności alfabetycznej.

Dane używane 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 '|');