Agregacje zagnieżdżone
Każda nazwa pola w wyrażeniu wykresu musi być zamknięta dokładnie jedną funkcją agregacji. Jeśli konieczne jest zagnieżdżenie agregacji, można użyć funkcji Aggr() w celu dodania drugiego poziomu agregacji. Aggr() zawiera funkcję agregacji w formie argumentu.
Zawsze jeden poziom agregacji w danej funkcji
Typowa aplikacja może zawierać:
- jeden milion rekordów w danych
- sto rzędów w tabeli przestawnej
- jeden KPI w mierniku lub polu tekstowym
Wszystkie trzy liczby mogą nadal reprezentować wszystkie dane, pomimo różnicy w ich wielkości. Liczby te to tylko różne poziomy agregacji.
Funkcje agregacji wykorzystują wartości z wielu rekordów jako dane wejściowe i zawijają je w jedną wartość, która może być postrzegana jako podsumowanie wszystkich rekordów. Jest jedno ograniczenie: nie można używać funkcji agregacji wewnątrz innej funkcji agregacji. Zazwyczaj każde odniesienie pola musi być otoczone dokładnie jedną funkcją agregacji.
Następujące wyrażenia będą działać:
- Sum(Sales)
- Sum(Sales)/Count(Order Number)
Poniższe wyrażenie nie będzie działać, ponieważ jest zagnieżdżoną agregacją:
- Count(Sum(Sales))
Rozwiązaniem tego problemu jest funkcja Aggr(). Mimo swojej nazwy nie jest to funkcja agregacji. Jest to funkcja „wiele do wielu”, przypominająca bardziej matematyczną macierz. Przekształca ona tabelę z rekordami N na tabelę z rekordami M. Zwraca tablicę wartości. Można ją również uznać za wirtualną tabelę prostą o jednej mierze i jednym lub kilku wymiarach.
Używanie funkcji Aggr() do zagnieżdżonych agregacji
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. W zaawansowanych agregacjach funkcja Aggr() jest zamknięta w innej funkcji agregacji wykorzystującej tablicę wyników z funkcji Aggr() jako dane wejściowe do agregacji, w której jest zagnieżdżona.
Kiedy jest używana, instrukcja Aggr() tworzy wirtualną tabelę, z jednym wyrażeniem pogrupowanym według jednego lub kilku wymiarów. Wynik tej wirtualnej tabeli może być następnie agregowany dalej przez funkcję agregacji zewnętrznej.
Obliczanie największej średniej wartości zamówienia
Użyjmy prostej instrukcji Aggr() w wyrażeniu wykresu.
Chcemy zobaczyć nie tylko nasze ogólne wskaźniki na poziomie regionalnym, ale także pokazać dwa bardziej złożone wyrażenia:
- Największa średnia wartość zamówienia według kierownika w każdym regionie.
- Kierownik odpowiedzialny za tę największą średnią wartość zamówienia.
Możemy łatwo obliczyć średnią wartość zamówienia dla każdego regionu za pomocą standardowego wyrażenia Sum(Sales)/Count([Order Number] )
Wewnątrz aplikacji w arkuszu Nested Aggregations znajduje się tabela zatytułowana Aggr() function.
Wykonaj następujące czynności:
- Wybierz dostępną tabelę Aggr() function.
Otworzy się panel właściwości. - Kliknij przycisk Dodaj kolumnę i wybierz Miara.
- Kliknij symbol .
Otwiera się edytor wyrażeń. - Wprowadź: Sum(Sales)/Count([Order Number])
- Kliknij przycisk Zastosuj.
Naszym celem jest uzyskanie największej średniej wartości zamówienia dla każdego regionu. Musimy użyć funkcji Aggr(), aby powiedzieć Qlik Sense, że chcemy uzyskać średnią wartość zamówienia dla każdego regionu, na kierownika, a następnie wyświetlić największą z nich. Aby uzyskać średnią wartość zamówienia dla każdego regionu, na kierownika, będziemy musieli uwzględnić te wymiary w naszej instrukcji Aggr():
Aggr(Sum(Sales)/Count([Order Number]), Region, Manager)
Wyrażenie to powoduje, że Qlik Sense tworzy wirtualną tabelę, która wygląda w ten sposób:
Kiedy Qlik Sense obliczy indywidualne średnie wartości zamówień dla każdego regionu, na kierownika, będziemy musieli znaleźć największą z tych wartości. W tym celu okalamy funkcję Aggr() opcją Max():
Max(Aggr(Sum(Sales)/Count([Order Number]), Manager, Region))
Wykonaj następujące czynności:
- Kliknij przycisk Dodaj kolumnę i wybierz Miara.
- Kliknij symbol .
Otwiera się edytor wyrażeń. - Wprowadź: Max(Aggr(Sum(Sales)/ Count([Order Number]), Manager, Region))
- Kliknij przycisk Zastosuj.
Można zobaczyć największą średnią wartość zamówienia dla wszystkich kierowników na poziomie regionu. To jest pierwsze z naszych dwóch złożonych wyrażeń! Następnym wymaganiem jest, aby nazwisko kierownika odpowiedzialnego za te duże średnie wartości zamówień było wyświetlane obok samych wartości.
W tym celu użyjemy tej samej funkcji Aggr(), co poprzednio, ale tym razem wraz z funkcją FirstSortedValue(). Funkcja FirstSortedValue() mówi Qlik Sense, aby dostarczył nam kierownika dla konkretnego wymiaru określonego w drugiej części funkcji:
FirstSortedValue(Manager,-Aggr(Sum(Sales)/Count(Order Number), Manager, Region))
Wykonaj następujące czynności:
- Kliknij przycisk Dodaj kolumnę i wybierz Miara.
- Kliknij symbol .
Otwiera się edytor wyrażeń. - Wprowadź: FirstSortedValue(Manager,-Aggr(Sum(Sales)/ Count([Order Number]), Manager, Region))
- Kliknij przycisk Zastosuj.
Więcej informacji, patrz Aggr
Więcej informacji, patrz FirstSortedValue