Laten we genieten van het weekend: werkdaganalyse met DAX

In dit bericht laat ik een benadering zien van niet-standaard analyse van tijdintelligentie. Dit is in feite het tweede artikel over AutoExist. In de eerste heb ik het algemene principe van AutoExist uitgelegd. In dit artikel bekijken we een praktijkvoorbeeld. Er is echter enige uitleg voor nodig en je zult AutoExist pas in het derde […]

In dit bericht laat ik een benadering zien van niet-standaard analyse van tijdintelligentie. Dit is in feite het tweede artikel over AutoExist. In de eerste heb ik het algemene principe van AutoExist uitgelegd. In dit artikel bekijken we een praktijkvoorbeeld. Er is echter enige uitleg voor nodig en je zult AutoExist pas in het derde bericht over dit onderwerp vinden.

Ons model bevat verkoopgegevens voor QuantoBikes. Voor dit voorbeeld wordt slechts een eenvoudig deel van het model gebruikt:

We have a fact table fSales with sales records which is related to a Calendar table on the OrderDate column. QuantoBikes employees spend their weekends with their families, meaning most of the orders are booked on workdays. Below is a typical chart of order value per day in May 2020:

We willen een analyse maken van de bestellingen gedurende de maand en de huidige maand vergelijken met voorgaande maanden. Er liggen uitdagingen in het verschiet, zoals u zult zien. Laten we eerst een maand-doe-datumgrafiek maken met de formule

Meting [Orders MTD] gebruikt de basismeting [BaseSales], die eenvoudigweg een SOM is in de kolom fSales[Sales Price]. Zo ziet de grafiek eruit:

Het is nogal een hobbelige weg, en de reden is natuurlijk de weekenden zonder enige verkoop. Dit kun je eenvoudig wijzigen door simpelweg de weekenden eruit te filteren. Onze kalendertabel bevat handig een kolom [Werkdag] die 0 is voor zaterdag en zondag (u kunt ook feestdagen en andere feestdagen toevoegen als niet-werkdagen, maar voor dit voorbeeld blijven we bij de weekenden). Zorg ervoor dat je de X-as op ‘Categorisch’ zet, anders zie je nog steeds alle datums.

Geweldig. Laten we nu een maatstaf toevoegen om de bestellingen van de maand tot nu toe voor de voorgaande maand weer te geven. De eenvoudige manier om dit te doen is met een tijdintelligentiefunctie:

DATEADD() verschuift de context op de kalendertabel met een aantal eenheden, in dit geval een maand terug in de tijd. Wanneer we dit aan de grafiek toevoegen, krijgen we dit (nu worden de resultaten voor juni 2020 weergegeven):

De rode lijn, die de resultaten voor mei 2020 weergeeft, ziet er duidelijk heel anders uit dan de lijn in de vorige grafiek. Waarom is dat? Nou ja, de weekenden zorgen weer voor problemen. 16 juni staat bijvoorbeeld in de grafiek en is dus een werkdag, terwijl 16 mei een zaterdag is. Dus in de rode lijn voor [Orders LM] krijgen we de weekendresultaten te zien en missen we enkele werkdagresultaten.

We hebben een andere berekening nodig om een ​​goede analyse van maand tot maand te kunnen maken. Je zou kunnen discussiëren over wat de beste vergelijking zou zijn, maar een redelijke aanpak zou er als volgt uit kunnen zien: we tellen de werkdagen in elke maand en vergelijken de eerste werkdag van de maand met de eerste werkdag in de voorgaande maand, zonder ons druk te maken over de werkelijke datums. We vergelijken de tweede werkdag met de tweede werkdag van de voorgaande maand, enzovoort.

Er zijn geen ingebouwde DAX-tijdintelligentiefuncties die dit doen, dus we staan ​​er hier alleen voor. Om het simpel te houden, heb ik twee kolommen in de kalendertabel gemaakt:

  • [Werkdag in maand] is een volgnummer van de datum als werkdag in de maand: 16 juni 2020 is de 12e werkdag van die maand. Mogelijk wilt u niet-werkdagen een volgnummer geven van een aangrenzende werkdag, voor het geval er op die dagen bestellingen zijn. Maar omdat onze berekeningen allemaal gebruik maken van de resultaten van de maand tot nu toe, is dat hier niet echt nodig.
  • [MonthCounter] is een kolom met een volgnummer van een maand in de totale kalendertabel. Hiermee kunnen we naar de vorige maand gaan door simpelweg 1 af te trekken van de huidige MonthCounter-waarde, zonder dat we ons zorgen hoeven te maken dat we in het voorgaande jaar terechtkomen.

Met deze twee kolommen kan een meting van werkdag op werkdag van de afgelopen maand worden gemaakt met de volgende formule:

We slaan de grootste waarden voor [MonthCounter] en [Workday in Month] op in DAX-variabelen en gaan een maand terug in de tijd door 1 af te trekken van de huidige [MonthCounter], waarbij dezelfde waarde voor [Workday in Month] behouden blijft. Merk op dat we geen tijdintelligentiefunctie meer gebruiken en daarom expliciet andere filters uit de Kalendertabel moeten verwijderen met behulp van ALL.

Het is zinvol om nu de [Werkdag in maand] op de X-as te zetten in plaats van de [Datum], hoewel beide hetzelfde beeld opleveren (opnieuw voor juni en de voorgaande maand mei):

Ziet er goed uit!

In het volgende bericht zullen we ingaan op enkele problemen in deze analyse, die we kunnen oplossen met behulp van de AutoExist-functie.

2024. Quanto B.V.