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.


Pipe In R: Anslutningsfunktioner med Dplyr

Pipe In R: Anslutningsfunktioner med Dplyr

I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.

Extrahera LuckyTemplates-teman och bilder från PBIX

Extrahera LuckyTemplates-teman och bilder från PBIX

Lär dig hur du tar isär en PBIX-fil för att extrahera LuckyTemplates-teman och bilder från bakgrunden och använda den för att skapa din rapport!

Excel Formler Fuskblad: Mellanvägledning

Excel Formler Fuskblad: Mellanvägledning

Excel Formler Fuskblad: Mellanvägledning

LuckyTemplates Kalendertabell: Vad är det och hur man använder det

LuckyTemplates Kalendertabell: Vad är det och hur man använder det

LuckyTemplates Kalendertabell: Vad är det och hur man använder det

Python i LuckyTemplates: Hur man installerar och ställer in

Python i LuckyTemplates: Hur man installerar och ställer in

Lär dig hur du installerar programmeringsspråket Python i LuckyTemplates och hur du använder dess verktyg för att skriva koder och visa bilder.

Beräkna dynamiska vinstmarginaler – enkel analys av LuckyTemplates med DAX

Beräkna dynamiska vinstmarginaler – enkel analys av LuckyTemplates med DAX

Lär dig hur du beräknar dynamiska vinstmarginaler vid sidan av LuckyTemplates och hur du kan få fler insikter genom att gräva djupare i resultaten.

Sortering av datumtabellkolumner i LuckyTemplates

Sortering av datumtabellkolumner i LuckyTemplates

Lär dig hur du sorterar fälten från en utökad datumtabells kolumner korrekt. Detta är en bra strategi att göra för svåra fält.

Hitta dina bästa produkter för varje region i LuckyTemplates med DAX

Hitta dina bästa produkter för varje region i LuckyTemplates med DAX

I den här artikeln går jag igenom hur du kan hitta dina toppprodukter per region med hjälp av DAX-beräkningar i LuckyTemplates, inklusive TOPN- och CALCULATE-funktionerna.

Skräpdimension: Vad är det och varför det är allt annat än skräp

Skräpdimension: Vad är det och varför det är allt annat än skräp

Lär dig hur du använder en skräpdimension för flaggor med låg kardinalitet som du vill infoga i din datamodell på ett effektivt sätt.