Używanie agregujących funkcji iteracyjnych
Każda funkcja służąca do podsumowania pojedynczej kolumny ma równoważną funkcję iteracyjną. W poniższych sekcjach opisano dwa scenariusze agregacji, gdy funkcje iteracyjne są przydatne: złożone podsumowania i podsumowania wyższego poziomu szczegółowość.
Złożone podsumowania
W tej sekcji utworzysz pierwszą miarę używającą funkcji iteracyjnej. Najpierw pobierz i otwórz plik Adventure Works DW 2020 M05.pbix. Następnie dodaj następującą definicję miary:
Revenue =
SUMX(
Sales,
Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)
Sformatuj miarę Revenue (Przychód ) jako walutę z dwoma miejscami dziesiętnymi, a następnie dodaj ją do wizualizacji tabeli znajdującej się na stronie 1 raportu.
Dzięki funkcji iteracyjnej formuła miary Revenue agreguje wartości nie tylko z jednej kolumny. Dla każdego wiersza używa ona wartości kontekstu wiersza trzech kolumn i na ich podstawie oblicza wysokość przychodu.
Teraz dodaj kolejną miarę:
Discount =
SUMX(
Sales,
Sales[Order Quantity]
* (
RELATED('Product'[List Price]) - Sales[Unit Price]
)
)
Miarę Discount (Zniżka) sformatuj jako walutę z dwoma miejscami dziesiętnymi i dodaj ją do wizualizacji tabeli.
Zwróć uwagę, że formuła używa RELATED
funkcji . Pamiętaj, że kontekst wiersza nie wykracza poza tabelę. Jeśli formuła musi odwoływać się do kolumn w innych tabelach, a relacje modelu istnieją między tabelami, użyj RELATED
funkcji dla relacji jednostronnej lub RELATEDTABLE
funkcji dla relacji po stronie wielu.
Podsumowanie na wyższym poziomie szczegółowości
Poniższy przykład dotyczy wymaganego raportowania średnich przychodów. Dodaj następującą miarę:
Revenue Avg =
AVERAGEX(
Sales,
Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)
Miarę Revenue Avg (Śr. przychód) sformatuj jako walutę z dwoma miejscami dziesiętnymi i dodaj ją do wizualizacji tabeli.
Średnia to suma wartości podzielona przez liczbę tych wartości. Nasuwa się jednak pytanie: co oznacza liczba wartości? W tym przypadku liczbą wartości jest liczba wyrażeń, które nie zwróciły pustego wyniku (BLANK). Ponadto, ponieważ funkcja iteratora wylicza wiersze tabeli Sales , średnia oznaczałaby przychód na wiersz. Wykonanie tej logiki o krok dalej, ponieważ każdy wiersz w tabeli Sales rejestruje wiersz zamówienia sprzedaży, można go dokładniej opisać jako przychód na wiersz zamówienia.
W związku z tym miarę Revenue Avg należy nazwać Revenue Avg Order Line (Śr. przychód z wiersza zamówienia), by użytkownicy raportu nie mieli wątpliwości, co jest podstawą średniej.
Poniższy przykład wykorzystuje funkcję iteracyjną do utworzenia nowej miary, która zwiększa stopień szczegółowości do poziomu wiersza zamówienia sprzedaży (zamówienie sprzedaży składa się z jednego lub kilku takich wierszy). Dodaj następującą miarę:
Revenue Avg Order =
AVERAGEX(
VALUES('Sales Order'[Sales Order]),
[Revenue]
)
Miarę Revenue Avg Order (Śr. przychód z zamówienia) sformatuj jako walutę z dwoma miejscami dziesiętnymi i dodaj ją do wizualizacji tabeli.
Zgodnie z oczekiwaniami średni przychód z zamówienia jest zawsze wyższy od średniego przychodu z pojedynczego wiersza zamówienia.
Zwróć uwagę, że formuła używa VALUES
funkcji języka DAX. Funkcja ta pozwala formule określić, jakie wartości znajdują się w kontekście filtru. W tym przypadku AVERAGEX
funkcja iteruje poszczególne zamówienia sprzedaży w kontekście filtru. Innymi słowy — dla każdego zamówienia sprzedaży w danym miesiącu. Kontekst filtru VALUES
i funkcja są wprowadzane w module kontekstu filtru.