First N Business Days Revisited – En DAX-kodningsspråkslösning

Låt oss ta en ny titt på problemet som diskuteras i , som dynamiskt jämförde de första N arbetsdagarna i varje månad. Det här problemet var baserat på en fråga från en LuckyTemplates-medlem på vårt forum, där han dynamiskt ville titta och jämföra de första 5, 10, 15 och 20 fakturerbara dagarna (de icke-helger och icke helgdagar) för en given månad med föregående månad.

Istället för att använda power query kommer vi med en DAX-kodningsspråkslösning. Du kan se hela videon av denna handledning längst ner på den här bloggen.

I den första videon kom jag på en lösning för energifrågan om hur man löser det här problemet. Men så kom en av våra LuckyTemplates-experter, Antriksh Sharma, på en briljant effektiv åtgärd som också är värd att ta en djupare dykning in i. Vi kommer att diskutera några av de tekniker han använde för att utveckla ett mått, som kommer att förse dig med ytterligare verktyg i din DAX-verktygslåda.

Det gjorde det verkligen för mig och för några av de andra experterna som tittade på detta. Jämförelsen av jämförbara arbetsdagar över månader är ett värdefullt mönster i allmänhet som kan användas i många situationer.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Låt oss dyka in i maktfrågan och ta en titt på vad Antriksh gjorde här. Vi har månad och år , total försäljning och slutligen den totala försäljningen för N arbetsdagar som vi valde med hjälp av power-query baserat på vad-om-parametern som vi utvecklade.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Antriksh tog ett helt annat tillvägagångssätt, där han använde en chockerande kort åtgärd för att lösa hela detta problem. Det första jag märkte med detta var användningen av kommandot.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Detta är en DAX-funktion som jag inte använder så ofta, men som passar perfekt för den här typen av problem. Om vi ​​tar en titt på SQL BI DAX-guiden står det att GENERATE-funktionen är en tabellfunktion som använder två olika tabeller som indata, och sedan gör en motsvarighet till SQL-kommandot CROSS APPLY.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Så den tar en bastabell (Tabell1) och itererar på den, och tar sedan ett andra tabelluttryck och utvärderar det för varje rad i den första tabellen, och återgår sedan till tabellen som utdata.

Låt oss ta på oss Antrikshs mått och släppa det i bordet. Vi kan se att den ger exakt samma resultat som den power query-lösning som vi gjorde förra gången. Så det är bra och validerar båda måtten ganska bra.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Låt oss ta isär denna åtgärd. Det första filtret som används här är Dates[IsBusinessDay] = TRUE. Detta tar bort alla icke-helger och helgfria datum baserat på den utökade datumtabellen IsBusinessDay-fältet.

Vi pratar mycket mer om detta i , där vi också gick igenom hur man knyter det till vårt julbord.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Den intressanta delen av detta kommer verkligen i de två tabellingångarna. Den första tabellen är bara en kolumntabell i fältet Månad och år i tabellen Datum.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Men den andra tabellinmatningen är där det intressanta händer. Antriksh använde a och använde sedan vår dynamiska parameter som antalet rader i TOPN.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Måttet Total försäljning kopplas till den andra tabellen och tillämpas sedan på den första tabellen.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Innehållsförteckning

Förstå en komplex åtgärd med hjälp av DAX-kodningsspråk

Ett av de enklaste sätten att ta reda på vad en komplex åtgärd som denna gör är att gå in i tabellredigeraren . Vi kan ta en titt på detta uttryck och ta reda på vad detta TOPN-uttryck gör först.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Låt oss kopiera TOPN-delen och skapa en ny. Kom ihåg att DAX-frågor börjar med EVALUATE.

First N Business Days Revisited – En DAX-kodningsspråkslösning

När vi klistrar in TOPN-delen ser vi att detta drar de första 5 datumen från försäljningsordertabellen. Det finns en tabell i TOPN som är sammansatt av värdena för alla orderdatum i försäljningstabellen.

Denna TOPN-funktion tar värdet på what-if-parametern (som i det här fallet är 5) och tillämpar det på fältet för försäljningsorderdatum. Sedan drar den de första 5 datumen inom filterkontexten i stigande ordning baserat på det fältet.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Med tanke på att det inte finns något extra filterkontext, är det bara att dra de första 5 datumen från hela tabellen.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Kolumnen @Sales lägger bara till den totala försäljningen inom rätt filterkontext till TOPN-tabellen.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Hittills har vi den första tabellen för månaden och året, den andra tabellen i TOPN för de första N-datumen från försäljningstabellen och sedan den totala försäljningen i samband med det.

Använda tabellen GENERATE i DAX-kodningsspråk

Låt oss ta en titt på vad denna GENERATE-tabell gör. Vi hoppar tillbaka till Tabular Editor och skapar en ny DAX-fråga.

Vi börjar som vi alltid gör med EVALUATE, klistra in GENERATE-delen av koden och klicka på 5.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Vi kan se att för varje rad i den första tabellen itereras och sammanfogas med de 5 raderna från TOPN-tabellen som utvärderas i sammanhang med @Sales-funktionen.

Det har tagit de första 5 arbetsdagarna i april, de första 5 arbetsdagarna i maj, de första 5 arbetsdagarna i juni och så vidare tills det kommer till slutet av den första tabellen.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Det är precis vad vi behöver, och nu blir det en relativt enkel fråga att lägga till dessa värden. Vi har resultatet (som är tabellvariabeln för GENERATE-resultaten) och sedan måste vi summera @Sales-funktionen.

I sammanhanget summerar vi nu de första 5 arbetsdagarna i april, de första 5 arbetsdagarna i maj, och så vidare tills vi kommer ner till vårt totala 23 737 430 USD, i vilket fall det inte har någon kontext av månad och år att fungera .

Detta summerar hela kolumnen @Sales och ger oss exakt samma summa som vi hade i vår lösning för power-query.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Du kan se att om vi ändrar slicern till 10 får vi dynamiskt samma resultat med DAX-kodningsspråk som vi gjorde i power-frågan.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Vi har också stapeldiagrammet längst ner som justeras dynamiskt för att återspegla de ändringar vi har gjort.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Justera dynamiskt mättitel

Det finns ytterligare ett knep jag ville visa dig. Du kan skapa en dynamisk justering på din vad-om-parameter och binda den dynamiskt till en måtttitel.

Om vi ​​till exempel ändrar utsnittet överst till 15, kommer det dynamiskt att ändra namnet på måttet längst ned till Total försäljning för de första 15 arbetsdagarna i varje månad .

First N Business Days Revisited – En DAX-kodningsspråkslösning

Det finns ett enkelt sätt att göra detta i DAX med . Vi tar i princip bara tre strängar. Den första är Total Sales for First , och sedan sammanfoga det med värdet som vi skördar från parametern what-if, och sedan bara knyta det till resten av titeln.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Sedan går vi in ​​i det visuella, går till villkorlig formatering av titeln och klickar på fx .

First N Business Days Revisited – En DAX-kodningsspråkslösning

Vi formaterar efter fältvärde och väljer det dynamiska titelmåttet. Detta kommer att ändra valet av vad-om-parametern.

First N Business Days Revisited – En DAX-kodningsspråkslösning

Slutsats

Det vi har nu är en komplett lösning med DAX-kodningsspråk. Vi har diskuterat ett riktigt kreativt och effektivt sätt att göra det med funktionen GENERERA. Jag vill tacka Antriksh för att han delade med sig av hans briljanta DAX-kunskap med oss. Jag lärde mig mycket när jag gick igenom hans DAX-lösning, och jag hoppas att du också gjorde det.


Vad är Power Query & M Language: En detaljerad översikt

Vad är Power Query & M Language: En detaljerad översikt

Denna handledning ger en översikt över Power Query Editor och M-språket på LuckyTemplates-skrivbordet.

Skapa en paginerad rapport: Lägga till texter och bilder

Skapa en paginerad rapport: Lägga till texter och bilder

Lär dig hur du skapar en sidnumrerad rapport, lägger till texter och bilder och sedan exporterar din rapport till olika dokumentformat.

SharePoint Automate-funktionen | En introduktion

SharePoint Automate-funktionen | En introduktion

Lär dig hur du använder SharePoint-automatiseringsfunktionen för att skapa arbetsflöden och hjälpa dig att mikrohantera SharePoint-användare, bibliotek och listor.

Lös en dataanalysutmaning med LuckyTemplates Accelerator

Lös en dataanalysutmaning med LuckyTemplates Accelerator

Finslipa dina färdigheter i rapportutveckling genom att gå med i en dataanalysutmaning. Acceleratorn kan hjälpa dig att bli en LuckyTemplates superanvändare!

Löpande summor i LuckyTemplates med DAX

Löpande summor i LuckyTemplates med DAX

Lär dig hur du beräknar löpande summor i LuckyTemplates med DAX. Löpande summor låter dig inte fastna i ett individuellt resultat.

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

Förstå konceptet med variabler i DAX inom LuckyTemplates och konsekvenserna av variabler för hur dina mått beräknas.

LuckyTemplates Slope Chart: En översikt

LuckyTemplates Slope Chart: En översikt

Lär dig mer om den anpassade visual som kallas LuckyTemplates Slope-diagram, som används för att visa ökning/minskning för en enstaka eller flera mätvärden.

LuckyTemplates färgteman för enhetliga visualiseringar

LuckyTemplates färgteman för enhetliga visualiseringar

Upptäck färgteman i LuckyTemplates. Dessa är viktiga för att dina rapporter och visualiseringar ska se ut och fungera sömlöst.

Beräkna medelvärde i LuckyTemplates: Isolera veckodags- eller helgresultat med DAX

Beräkna medelvärde i LuckyTemplates: Isolera veckodags- eller helgresultat med DAX

Att beräkna ett genomsnitt i LuckyTemplates kan göras på många sätt för att ge dig exakt information för dina affärsrapporter.

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

Låt oss fördjupa oss i Standard LuckyTemplates-teman och granska några av funktionerna som är inbyggda i själva LuckyTemplates Desktop-applikationen.