AutoExist en de zaak van de ontbrekende werkdagen

Dit artikel is een vervolg op het inleidende bericht van AutoExists en een artikel met een voorbeeld van tijdintelligentie op basis van werkdagen. In het laatste geval hebben we het onderstaande maand-tot-datum-diagram gemaakt, waarbij we de gegevens van één maand (in dit geval juni 2020) vergelijken met de voorgaande maand. Ziet er goed uit, toch? […]

Dit artikel is een vervolg op het inleidende bericht van AutoExists en een artikel met een voorbeeld van tijdintelligentie op basis van werkdagen. In het laatste geval hebben we het onderstaande maand-tot-datum-diagram gemaakt, waarbij we de gegevens van één maand (in dit geval juni 2020) vergelijken met de voorgaande maand.

Ziet er goed uit, toch? Zoals je ziet loopt de rode lijn ‘laatste maand’ alleen door tot werkdag 21. Dit komt omdat de maand mei 2020 maar 21 werkdagen telt, dus vanaf werkdag 22 in juni kun je geen maand terug. Laten we nu naar dezelfde grafiek kijken, maar dan voor mei 2020:

Zoals je ziet toont de X-as nu alleen gegevens tot en met werkdag 21. De rode lijn, die nu april 2020 is, toont ook gegevens tot en met werkdag 21. Maar hier is het probleem: april heeft geen 21 werkdagen, maar 22! Het is duidelijk dat we in deze grafiek één dag aan gegevens missen.

Dit is een geval waarin we AutoExist op onze weg tegenkomen. Omdat we het rapport hebben gefilterd op het jaar ‘2020’ en de maand ‘mei’, en de kolom [Werkdag in maand] in dezelfde tabel, Kalender, staat als [Jaar] en [Maand], besluit Power BI dat er geen evaluatie van werkdag 22 is nodig.

Er is eigenlijk geen manier om dit te omzeilen, behalve door het model zo te wijzigen dat de kolom [Werkdag in maand] niet in de kalendertabel staat. Dit zorgt ervoor dat Power BI alle geselecteerde combinaties van [Jaar], [Maand] en [Werkdag in maand] evalueert, inclusief werkdag 22 met mei 2020 (uiteraard staan ​​[Jaar] en [Maand] nog steeds in dezelfde tabel, wat betekent pas mei 2020 wordt geëvalueerd).

Om dit te laten werken, hebben we een aparte Workday-tabel nodig. Dit is eenvoudigweg een tabel met één kolom en de cijfers 1 tot en met 23 (het maximale aantal werkdagen in een maand). Het model ziet er nu als volgt uit:

Ja, dat is de nieuwe modelweergave daar… We hebben een relatie tussen de tabellen Agenda en Werkdag, omdat Power BI uiteraard moet kunnen bepalen welke datum overeenkomt met een bepaald werkdagnummer.

De meetwaardeformule moet worden gewijzigd om aan te geven dat wanneer de kolom [Werkdag in maand] wordt gebruikt, deze uit de nieuwe tabel Werkdag wordt gehaald:

Met deze maatregel kunnen we het onderstaande diagram maken.

Wat? Nog steeds geen werkdag 22 in zicht. Waarom is dit?

Houd er rekening mee dat hoewel werkdag 22 nu wordt geëvalueerd, we nog steeds zoals gewoonlijk met de gecreëerde context moeten werken. De filters in deze context zijn:

  • [Jaar] = 2020
  • [Maand] = Mei
  • [Werkdag in maand] = 22

Omdat er in mei 2020 geen werkdag 22 is, bevat deze context geen rijen in de kalendertabel. Dit betekent dat in de maatregel [Orders LM (werkdagen 2)] de variabele ThisMonth de waarde BLANK heeft. Daarom zegt het filterargument in regel 8 dat de kolom [MonthCounter] de waarde -1 moet hebben. Er is geen rij in de Agenda-tabel die aan deze vereiste voldoet. Daarom is het resultaat van de berekening BLANK en vindt de visual dat het niet nodig is om werkdag 22 op de as weer te geven.

We moeten de DAX-formule als volgt wijzigen:

Nu negeert de variabele ThisMonth de filters in de Workday-tabel, zodat de huidige maand correct wordt berekend. Deze maatregel werkt nu zoals verwacht:

Dit laat zien dat, hoewel AutoExist een goede aanpak is om berekeningen in Power BI te minimaliseren, we niet zonder manieren kunnen om dit te omzeilen.

2024. Quanto B.V.