W dwóch poprzednich artykułach na temat funkcji CALCULATE (Królowa funkcji DAX oraz CALCULATE i czas) pisałem o tym, jakie daje możliwości i jakie efekty można osiągnąć, kiedy połączymy ją z funkcjami analizy czasowej. Czas na kolejny przykład wykorzystania funkcji CALCULATE w praktyce: połączenie tej funkcji z rodziną funkcji ALL.
W ramach przypomnienia – funkcja CALCULATE pozwala nakładać na pola obliczeniowe różne filtry. Zobaczmy, jakie efekty można osiągnąć stosując jako filtr funkcję ALLSELECTED.
Rodzina funkcji ALL w DAX
Funkcja ALLSELECTED jest funkcją posiłkową, która ignoruje kontekst wiersza i zawsze bierze pod uwagę wszystkie wybrane elementy. Z tej samej rodziny pochodzą tej funkcje ALL i ALLEXCEPT. Cała ta rodzina idealnie współpracuje z funkcją CALCULATE, pozwalając na modyfikację kontekstu naszych obliczeń.
Spróbujmy zbudować prost zestawienie sprzedażowe, które za chwilę urozmaicimy miarą pozwalającą na dynamiczne analizowanie zmian. Zacznijmy od zbudowania tabeli pokazującej sprzedaż po miesiącach z możliwością filtrowania lat:
Wybierzmy pojedynczy rok, np. 2011 i dodajmy fragmentator pozwalający na wybór miesiąca:
Spróbujmy teraz dodać taką miarę, która pozwoli na analizę sezonowości sprzedaży – niech pokaże nam, jaki procent z całorocznej sprzedaży stanowi sprzedaż z danego miesiąca. W tym celu zbudujmy formułę opartą na CALCULATE, która dodatkowo wykorzysta funkcję ALLSELECTED:
=CALCULATE([Suma Sprzedaż];ALLSELECTED(Kalendarz[Miesiąc]))
W skrócie – na miarę [Suma Sprzedaż] nałożyliśmy „antyfiltr” w postaci funkcji ALLSELECTED, którą poprosiliśmy o to, aby brała pod uwagę wszystkie te miesiące, które akurat są wybrane na fragmentatorze.
Daje to następujący efekt:
Zwróćmy uwagę, jak zachowuje się nowa miara, kiedy wybierzemy tylko miesiące pierwszego kwartału:
Miara pokazuje teraz w każdej linii sumę całego kwartału – jest to efekt, o który nam chodziło.
Jak teraz pokazać każdy miesiąc jako procent całości? Wystarczy dodać kolejną miarę, która będzie ilorazem dwóch poprzednio użytych:
=[Suma Sprzedaż]/[Sprzedaż wszystkie wybrane miesiące]
Oto efekt:
Jak widać, z niewielką pomocą funkcji CALCULATE i jej znajomych z rodziny ALL można budować użyteczne formuły.
Skąd można pobrać dane ?
Oto plik do pobrania:
https://excelbi.pl/wp-content/uploads/2020/12/Funkcja-CALCULATE-i-ALLSELECTED.xlsx
Racja .Szkoda ,że nie udostępniono danych 🙁