Jak wykorzystać kombinację funkcji DAX: CALCULATE i ALLSELECTED?

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:Jak wykorzystać kombinację funkcji DAX: CALCULATE i ALLSELECTED? 1

Wybierzmy pojedynczy rok, np. 2011 i dodajmy fragmentator pozwalający na wybór miesiąca:

Jak wykorzystać kombinację funkcji DAX: CALCULATE i ALLSELECTED? 2

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:

Jak wykorzystać kombinację funkcji DAX: CALCULATE i ALLSELECTED? 3Zwróćmy uwagę, jak zachowuje się nowa miara, kiedy wybierzemy tylko miesiące pierwszego kwartału:

Jak wykorzystać kombinację funkcji DAX: CALCULATE i ALLSELECTED? 4

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 wykorzystać kombinację funkcji DAX: CALCULATE i ALLSELECTED? 5Jak widać, z niewielką pomocą funkcji CALCULATE i jej znajomych z rodziny ALL można budować użyteczne formuły.

Bartosz Czapiewski

Bartosz Czapiewski

Założyciel SkuteczneRaporty.pl, doświadczony ekspert oraz trener Excela, Power Query, Power BI i DAX. Od ponad 15 lat pomaga specjalistom i firmom lepiej pracować z danymi, automatyzować raporty oraz rozwijać kompetencje analityczne.

Jest autorem programów szkoleniowych dla Analityków: JUNIOR, POWER PRO i EXPERT oraz twórcą społeczności I❤️DATA, w której poprzez mentoring, spotkania LIVE z ekspertami i praktyczne wyzwania pomaga rozwijać umiejętności, budować portfolio, przygotować się do rekrutacji i zrobić kolejny krok w stronę pracy jako Analityk Danych.

Na blogu dzieli się praktycznym podejściem do analityki: od układania danych w Excelu, przez automatyzację pracy z Power Query, aż po zaawansowane raportowanie w Power BI, DAX i rozwój kariery Analityka Danych.

Brak komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *