First N Business Days Revisited – Een DAX-coderingstaaloplossing

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Laten we nog eens kijken naar het probleem dat in deze zelfstudie wordt besproken , waarbij de eerste N werkdagen van elke maand dynamisch werden vergeleken. Dit probleem was gebaseerd op een vraag van een LuckyTemplates-lid op ons forum, waar hij dynamisch de eerste 5, 10, 15 en 20 factureerbare dagen (de niet-weekenden en niet-vakantiedagen) voor een bepaalde maand wilde vergelijken met de voorgaande maand.

In plaats van Power Query te gebruiken, komen we met een DAX-codeertaaloplossing. Je kunt de volledige video van deze tutorial onderaan deze blog bekijken.

In de eerste video bedacht ik een power query-oplossing om dit probleem op te lossen. Maar toen kwam een ​​van onze LuckyTemplates-experts, Antriksh Sharma, met een briljant efficiënte maatregel die ook de moeite waard is om dieper in te duiken. We bespreken enkele van de technieken die hij gebruikte bij het ontwikkelen van een meting, waarmee u extra tools in uw DAX-toolbox krijgt.

Dat deed het zeker voor mij en voor enkele van de andere experts die dit hebben bekeken. De like-for-like vergelijking van vergelijkbare werkdagen over maanden heen is in het algemeen een waardevol patroon dat in veel situaties kan worden gebruikt.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Laten we eens kijken naar Power Query en kijken wat Antriksh hier deed. We hebben de maand en het jaar , de totale verkoop en ten slotte de totale verkoop voor N werkdagen die we hebben geselecteerd met behulp van een krachtige query op basis van de what-if-parameter die we hebben ontwikkeld.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Antriksh pakte het heel anders aan, waarbij hij een schokkend korte maatregel gebruikte om dit hele probleem op te lossen. Het eerste dat me opviel was het gebruik van het commando.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Dit is een DAX-functie die ik niet vaak gebruik, maar die perfect past bij dit soort problemen. Als we de SQL BI DAX Guide bekijken, staat er dat de functie GENERATE een tabelfunctie is die als invoer twee verschillende tabellen gebruikt en vervolgens een equivalent uitvoert van de SQL-opdracht CROSS APPLY.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Dus het neemt een basistabel (Tabel1) en herhaalt daarop, en neemt dan een tweede tabeluitdrukking en evalueert die voor elke rij in de eerste tabel, en keert dan terug naar de tabel als de uitvoer.

Laten we de maat van Antriksh nemen en in de tafel laten vallen. We kunnen zien dat het exact dezelfde resultaten oplevert als de power query-oplossing die we de vorige keer hebben gedaan. Dus dat is goed en valideert beide maatregelen vrij goed.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Laten we deze maatregel even uit elkaar halen. Het eerste filter dat hier wordt toegepast, is Dates[IsBusinessDay] = TRUE. Hiermee worden alle niet-weekend- en niet-feestdagen verwijderd op basis van het IsBusinessDay-veld van de uitgebreide datumtabel.

We praten hier veel meer over in de eerste tutorial , waar we ook doornamen hoe we dat in onze vakantietabel konden binden.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Het interessante deel hiervan zit echt in de twee tabelinvoeren. De eerste tabel is slechts een tabel met één kolom van het veld Maand & Jaar in de tabel Datum.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Maar de tweede tabelinvoer is waar de interessante dingen gebeuren. Antriksh gebruikte een en gebruikte vervolgens onze dynamische parameter als het aantal rijen in de TOPN.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

De meting Totale verkoop wordt gekoppeld aan de tweede tabel en vervolgens toegepast op de eerste tabel.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Inhoudsopgave

Een complexe maat begrijpen met behulp van DAX-coderingstaal

Een van de gemakkelijkste manieren om erachter te komen wat zo'n complexe meting doet, is door naar de Tabular Editor te gaan . We kunnen deze uitdrukking bekijken en eerst uitzoeken wat deze TOPN-uitdrukking doet.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Laten we het TOPN-gedeelte kopiëren en een nieuwe DAX-query maken . Onthoud dat DAX-query's beginnen met EVALUATE.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Wanneer we het TOPN-gedeelte plakken, zien we dat dit de eerste 5 datums uit de verkoopordertabel haalt. Er is een tabel in de TOPN die is samengesteld uit de waarden van alle besteldatums binnen de verkooptabel.

Deze TOPN-functie neemt de waarde van de wat-als-parameter (in dit geval 5) en past deze toe op het verkooporderdatumveld. Vervolgens worden de eerste 5 datums binnen de filtercontext in oplopende volgorde opgehaald op basis van dat veld.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Aangezien er geen aanvullende filtercontext is, worden alleen de eerste 5 datums uit de hele tabel gehaald.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

De kolom @Sales voegt alleen de totale verkoop binnen de juiste filtercontext toe aan de TOPN-tabel.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Tot dusver hebben we de eerste tabel van de maand en het jaar, de tweede tabel van de TOPN van de eerste N-datums uit de verkooptabel en vervolgens de totale verkoop die daarmee samenhangt.

De GENERATE-tabel gebruiken in DAX-coderingstaal

Laten we eens kijken wat deze GENERATE-tabel doet. We gaan terug naar de Tabular Editor en maken een nieuwe DAX-query.

We beginnen zoals we altijd doen met EVALUATE, plakken het GENERATE-gedeelte van de code en klikken op 5.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

We kunnen zien dat deze voor elke rij van de eerste tabel itereert en samenkomt met de 5 rijen uit de TOPN-tabel, geëvalueerd in context met de @Sales-functie.

Het heeft de eerste 5 werkdagen in april geduurd, de eerste 5 werkdagen in mei, de eerste 5 werkdagen in juni, enzovoort tot het einde van de eerste tafel.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Dit is precies wat we nodig hebben, en nu wordt het een relatief eenvoudige kwestie van het optellen van die waarden. We hebben het resultaat (dat is de tabelvariabele van de GENERATE-resultaten) en dan moeten we de @Sales-functie samenvatten.

Binnen de context sommeren we nu de eerste 5 werkdagen in april, de eerste 5 werkdagen in mei, enzovoort, totdat we uitkomen op ons totaal van $ 23.737.430, in welk geval het geen context van maand en jaar heeft om te werken .

Dit somt de hele @Sales-kolom op en geeft ons exact hetzelfde totaal dat we hadden in onze Power Query-oplossing.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

U kunt zien dat als we de slicer wijzigen in 10, we dynamisch dezelfde resultaten krijgen met de DAX-coderingstaal als in Power Query.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

We hebben ook het staafdiagram onderaan dat dynamisch wordt aangepast om de wijzigingen weer te geven die we hebben aangebracht.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Maattitel dynamisch aanpassen

Er is nog een andere truc die ik je wilde laten zien. U kunt een dynamische aanpassing maken op uw wat-als-parameter en deze dynamisch koppelen aan een maattitel.

Als we bijvoorbeeld de slicer bovenaan wijzigen in 15, wordt de naam van de meting onderaan dynamisch gewijzigd in Totale verkoop voor de eerste 15 werkdagen van elke maand .

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Er is een eenvoudige manier om dit in DAX te doen met behulp van voorwaardelijke opmaak . We nemen eigenlijk gewoon drie snaren. De eerste is de Total Sales voor First , en voeg dat vervolgens samen met de waarde die we oogsten van de what-if-parameter, en koppel dat dan gewoon aan de rest van de titel.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Dan gaan we naar de visual, gaan naar voorwaardelijke opmaak van de titel en klikken op fx .

First N Business Days Revisited – Een DAX-coderingstaaloplossing

We formatteren op veldwaarde en kiezen die dynamische titelmaat. Dit verandert de selectie van de wat-als-parameter.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

Conclusie

Wat we nu hebben, is een complete oplossing die gebruikmaakt van de DAX-codeertaal. We hebben een heel creatieve en efficiënte manier besproken om dit te doen met behulp van de functie GENEREREN. Ik wil Antriksh bedanken voor het delen van zijn briljante DAX-kennis met ons. Ik heb veel geleerd tijdens het doornemen van zijn DAX-oplossing, en ik hoop dat jij dat ook hebt gedaan.


Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Een RDS-bestand opslaan en laden in R

Een RDS-bestand opslaan en laden in R

Je leert hoe je objecten uit een .rds-bestand in R opslaat en laadt. In deze blog wordt ook besproken hoe je objecten uit R naar LuckyTemplates importeert.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

First N Business Days Revisited – Een DAX-coderingstaaloplossing

In deze tutorial over DAX-coderingstaal leert u hoe u de functie GENERATE gebruikt en hoe u de titel van een maat dynamisch wijzigt.

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Deze zelfstudie behandelt hoe u de Multi Threaded Dynamic Visuals-techniek kunt gebruiken om inzichten te creëren op basis van dynamische gegevensvisualisaties in uw rapporten.

Inleiding tot het filteren van context in LuckyTemplates

Inleiding tot het filteren van context in LuckyTemplates

In dit artikel zal ik de filtercontext doornemen. Filtercontext is een van de belangrijkste onderwerpen waarover elke LuckyTemplates-gebruiker in eerste instantie zou moeten leren.

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Ik wil laten zien hoe de online service LuckyTemplates Apps kan helpen bij het beheren van verschillende rapporten en inzichten die uit verschillende bronnen zijn gegenereerd.

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Leer hoe u wijzigingen in uw winstmarge kunt berekenen met behulp van technieken zoals vertakking van metingen en het combineren van DAX-formules in LuckyTemplates.

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Deze tutorial bespreekt de ideeën van materialisatie van datacaches en hoe deze de prestaties van DAX beïnvloeden bij het leveren van resultaten.

Zakelijke rapportage met behulp van LuckyTemplates

Zakelijke rapportage met behulp van LuckyTemplates

Als u tot nu toe nog steeds Excel gebruikt, is dit het beste moment om LuckyTemplates te gaan gebruiken voor uw zakelijke rapportagebehoeften.

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten