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.

Leave a Comment

Skapa en datumtabell i LuckyTemplates

Skapa en datumtabell i LuckyTemplates

Ta reda på varför det är viktigt att ha en dedikerad datumtabell i LuckyTemplates och lär dig det snabbaste och mest effektiva sättet att göra det.

LuckyTemplates mobilrapporteringstips och tekniker

LuckyTemplates mobilrapporteringstips och tekniker

Denna korta handledning belyser LuckyTemplates mobilrapporteringsfunktion. Jag ska visa dig hur du kan utveckla rapporter effektivt för mobila enheter.

Professional Service Analytics-rapporter i LuckyTemplates

Professional Service Analytics-rapporter i LuckyTemplates

I denna LuckyTemplates Showcase går vi igenom rapporter som visar professionell serviceanalys från ett företag som har flera kontrakt och kundengagemang.

Microsoft Power Platform-uppdateringar | Microsoft Ignite 2021

Microsoft Power Platform-uppdateringar | Microsoft Ignite 2021

Gå igenom de viktigaste uppdateringarna för Power Apps och Power Automate och deras fördelar och konsekvenser för Microsoft Power Platform.

Vanliga SQL-funktioner: En översikt

Vanliga SQL-funktioner: En översikt

Upptäck några vanliga SQL-funktioner som vi kan använda som sträng, datum och några avancerade funktioner för att bearbeta eller manipulera data.

LuckyTemplates Skapa mall: Guide och tips

LuckyTemplates Skapa mall: Guide och tips

I den här handledningen kommer du att lära dig hur du skapar din perfekta LuckyTemplates-mall som är konfigurerad efter dina behov och preferenser.

Fältparametrar och små multiplar i LuckyTemplates

Fältparametrar och små multiplar i LuckyTemplates

I den här bloggen kommer vi att visa hur man lager fältparametrar med små multiplar för att skapa otroligt användbara insikter och bilder.

LuckyTemplates Rank och anpassad gruppering

LuckyTemplates Rank och anpassad gruppering

I den här bloggen kommer du att lära dig hur du använder LuckyTemplates ranknings- och anpassade grupperingsfunktioner för att segmentera en exempeldata och rangordna den enligt kriterier.

Visar kumulativ total endast upp till ett visst datum i LuckyTemplates

Visar kumulativ total endast upp till ett visst datum i LuckyTemplates

I den här handledningen kommer jag att täcka en specifik teknik kring hur man visar Kumulativ total endast upp till ett specifikt datum i dina bilder i LuckyTemplates.

Punktdiagram: Avancerade anpassade bilder för LuckyTemplates

Punktdiagram: Avancerade anpassade bilder för LuckyTemplates

Lär dig hur du skapar och anpassar punktdiagram i LuckyTemplates, som huvudsakligen används för att mäta prestanda mot mål eller tidigare år.