First N Business Days Revisited – A DAX Coding Language Solution

Lad os se igen på problemet diskuteret i , som dynamisk sammenlignede de første N hverdage i hver måned. Dette problem var baseret på en forespørgsel fra et LuckyTemplates-medlem på vores forum, hvor han ønskede dynamisk at se og sammenligne de første 5, 10, 15 og 20 fakturerbare dage (de ikke-weekender og ikke-helligdage) for en given måned med den foregående måned.

I stedet for at bruge power-forespørgsel, kommer vi med en DAX-kodningssprogsløsning. Du kan se den fulde video af denne tutorial nederst på denne blog.

I den første video kom jeg med en strømforespørgselsløsning om, hvordan man løser dette problem. Men så kom en af ​​vores LuckyTemplates-eksperter, Antriksh Sharma, op med en strålende effektiv foranstaltning, som også er værd at tage et dybere dyk ned i. Vi vil diskutere nogle af de teknikker, han brugte til at udvikle et mål, som vil give dig yderligere værktøjer i din DAX-værktøjskasse.

Det gjorde det bestemt for mig og for nogle af de andre eksperter, der kiggede på dette. Sammenligningen af ​​sammenlignelige hverdage på tværs af måneder er et værdifuldt mønster generelt, som kan bruges i mange situationer.

First N Business Days Revisited – A DAX Coding Language Solution

Lad os dykke ned i strømforespørgsler og se på, hvad Antriksh gjorde her. Vi har måneden og året , det samlede salg og til sidst det samlede salg for N arbejdsdage , som vi valgte ved hjælp af power-forespørgsel baseret på what-if-parameteren, som vi udviklede.

First N Business Days Revisited – A DAX Coding Language Solution

Antriksh tog en helt anden tilgang, hvor han brugte en chokerende kort foranstaltning til at løse hele dette problem. Det første, jeg lagde mærke til ved dette, var brugen af ​​kommandoen.

First N Business Days Revisited – A DAX Coding Language Solution

Dette er en DAX-funktion, som jeg ikke bruger særlig tit, men som passer perfekt til denne type problemer. Hvis vi tager et kig på SQL BI DAX-vejledningen, står der, at GENERATE-funktionen er en tabelfunktion, der bruger to forskellige tabeller som input, og derefter udfører en ækvivalent af SQL-kommandoen CROSS APPLY.

First N Business Days Revisited – A DAX Coding Language Solution

Så det tager en basistabel (Tabel1) og gentager den, og tager derefter et andet tabeludtryk og evaluerer det for hver række i den første tabel og vender derefter tilbage til tabellen som output.

Lad os tage Antrikshs mål og slippe det i bordet. Vi kan se, at det giver nøjagtig de samme resultater som strømforespørgselsløsningen, som vi lavede sidste gang. Så det er godt og validerer begge mål ganske godt.

First N Business Days Revisited – A DAX Coding Language Solution

Lad os skille denne foranstaltning fra hinanden. Det første filter, der anvendes her, er Dates[IsBusinessDay] = TRUE. Dette fjerner alle ikke-weekend- og ikke-helligdage baseret på den udvidede datotabel IsBusinessDay-feltet.

Vi taler meget mere om dette i , hvor vi også gennemgik, hvordan man binder det ind på vores feriebord.

First N Business Days Revisited – A DAX Coding Language Solution

Den interessante del af dette kommer virkelig i de to tabelinput. Den første tabel er kun en tabel med én kolonne i feltet Måned og år i datotabellen.

First N Business Days Revisited – A DAX Coding Language Solution

Men det andet tabelinput er, hvor de interessante ting sker. Antriksh brugte a og brugte derefter vores dynamiske parameter som antallet af rækker i TOPN.

First N Business Days Revisited – A DAX Coding Language Solution

Målingen Samlet salg er knyttet til den anden tabel og derefter anvendt på den første tabel.

First N Business Days Revisited – A DAX Coding Language Solution

Indholdsfortegnelse

Forståelse af en kompleks foranstaltning ved hjælp af DAX-kodningssprog

En af de nemmeste måder at finde ud af, hvad en kompleks foranstaltning som denne gør, er at gå ind i tabeleditor . Vi kan tage et kig på dette udtryk og finde ud af, hvad dette TOPN-udtryk gør først.

First N Business Days Revisited – A DAX Coding Language Solution

Lad os kopiere TOPN-delen og oprette en ny. Husk, at DAX-forespørgsler starter med EVALUATE.

First N Business Days Revisited – A DAX Coding Language Solution

Når vi indsætter TOPN-delen, vil vi se, at dette trækker de første 5 datoer fra salgsordretabellen. Der er en tabel i TOPN, der er sammensat af værdierne for alle ordredatoer i salgstabellen.

Denne TOPN-funktion tager værdien af ​​what-if-parameteren (som i dette tilfælde er 5) og anvender den på salgsordresdatofeltet. Så trækker den de første 5 datoer i filterkonteksten i stigende rækkefølge baseret på det felt.

First N Business Days Revisited – A DAX Coding Language Solution

Da der ikke er nogen ekstra filterkontekst, trækker det bare de første 5 datoer fra hele tabellen.

First N Business Days Revisited – A DAX Coding Language Solution

Kolonnen @Sales tilføjer bare det samlede salg inden for den korrekte filterkontekst til TOPN-tabellen.

First N Business Days Revisited – A DAX Coding Language Solution

Indtil videre har vi den første tabel for måneden og året, den anden tabel over TOPN af de første N stammer fra salgstabellen og derefter det samlede salg forbundet med det.

Brug af GENERATE-tabellen i DAX-kodningssprog

Lad os tage et kig på, hvad denne GENERATE-tabel gør. Vi hopper tilbage til Tabular Editor og opretter en ny DAX-forespørgsel.

Vi starter som vi altid gør med EVALUATE, indsæt GENERATE-delen af ​​koden og klik på 5.

First N Business Days Revisited – A DAX Coding Language Solution

Vi kan se, at for hver række i den første tabel, gentages og forbindes med de 5 rækker fra TOPN-tabellen, der er evalueret i sammenhæng med @Sales-funktionen.

Det har taget de første 5 hverdage i april, de første 5 hverdage i maj, de første 5 hverdage i juni og så videre, indtil det kommer til slutningen af ​​den første tabel.

First N Business Days Revisited – A DAX Coding Language Solution

Det er præcis, hvad vi har brug for, og nu bliver det et relativt simpelt spørgsmål om at lægge disse værdier sammen. Vi har resultatet (som er tabelvariablen for GENERATE-resultaterne), og så skal vi opsummere @Sales-funktionen.

Inden for kontekst opsummerer vi nu de første 5 hverdage i april, de første 5 hverdage i maj osv., indtil vi kommer ned på vores samlede beløb på 23.737.430 USD, i hvilket tilfælde det ikke har nogen kontekst for måned og år at fungere .

Dette opsummerer hele kolonnen @Sales og giver os den nøjagtige samme total, som vi havde i vores power-forespørgselsløsning.

First N Business Days Revisited – A DAX Coding Language Solution

Du kan se, at hvis vi ændrer sliceren til 10, får vi dynamisk de samme resultater med DAX-kodningssprog, som vi gjorde i power-forespørgsel.

First N Business Days Revisited – A DAX Coding Language Solution

Vi har også søjlediagrammet i bunden, der justerer dynamisk for at afspejle de ændringer, vi har foretaget.

First N Business Days Revisited – A DAX Coding Language Solution

Juster dynamisk måltitel

Der er endnu et trick, jeg ville vise dig. Du kan oprette en dynamisk justering på din what-if-parameter og binde den dynamisk til en måltitel.

For eksempel, hvis vi ændrer udsnitsværktøjet øverst til 15, vil det dynamisk ændre navnet på målingen nederst til Samlet salg for de første 15 hverdage i hver måned .

First N Business Days Revisited – A DAX Coding Language Solution

Der er en nem måde at gøre dette på i DAX ved hjælp af . Vi tager stort set bare tre strenge. Den første er Total Sales for First , og derefter sammenkæde det med værdien, som vi høster fra what-if-parameteren, og så bare binde det til resten af ​​titlen.

First N Business Days Revisited – A DAX Coding Language Solution

Så går vi ind i det visuelle, går til betinget formatering af titlen og klikker på fx .

First N Business Days Revisited – A DAX Coding Language Solution

Vi formaterer efter feltværdi og vælger det dynamiske titelmål. Dette vil ændre valget af hvad-hvis-parameteren.

First N Business Days Revisited – A DAX Coding Language Solution

Konklusion

Det, vi har nu, er en komplet løsning, der bruger DAX-kodningssprog. Vi har diskuteret en virkelig kreativ og effektiv måde at gøre det på ved hjælp af GENERATE-funktionen. Jeg vil gerne takke Antriksh for at dele hans strålende DAX-viden med os. Jeg lærte meget, mens jeg gennemgik hans DAX-løsning, og det håber jeg, at du også gjorde.


Hvad er Power Query & M Language: En detaljeret oversigt

Hvad er Power Query & M Language: En detaljeret oversigt

Denne vejledning giver et overblik over Power Query Editor og M-sproget inde på LuckyTemplates-skrivebordet.

Opret en sideinddelt rapport: Tilføjelse af tekster og billeder

Opret en sideinddelt rapport: Tilføjelse af tekster og billeder

Lær, hvordan du opretter en sideinddelt rapport, tilføjer tekster og billeder og derefter eksporterer din rapport til forskellige dokumentformater.

SharePoint Automate-funktionen | En introduktion

SharePoint Automate-funktionen | En introduktion

Lær, hvordan du bruger SharePoint-automatiseringsfunktionen til at skabe arbejdsgange og hjælpe dig med at mikrostyre SharePoint-brugere, -biblioteker og -lister.

Løs en dataanalyseudfordring med LuckyTemplates Accelerator

Løs en dataanalyseudfordring med LuckyTemplates Accelerator

Udvid dine rapportudviklingsevner ved at deltage i en dataanalyseudfordring. Acceleratoren kan hjælpe dig med at blive LuckyTemplates-superbruger!

Løbende totaler i LuckyTemplates ved hjælp af DAX

Løbende totaler i LuckyTemplates ved hjælp af DAX

Lær, hvordan du beregner løbende totaler i LuckyTemplates ved hjælp af DAX. Løbende totaler giver dig mulighed for ikke at blive fanget af et individuelt resultat.

LuckyTemplates Dax-variabler er konstante: Hvad betyder det?

LuckyTemplates Dax-variabler er konstante: Hvad betyder det?

Forstå konceptet med variabler i DAX i LuckyTemplates og betydningen af ​​variabler for, hvordan dine mål beregnes.

LuckyTemplates hældningsdiagram: en oversigt

LuckyTemplates hældningsdiagram: en oversigt

Lær mere om det brugerdefinerede visuelle kaldet LuckyTemplates Slope-diagrammet, som bruges til at vise stigning/fald for en enkelt eller flere metrics.

LuckyTemplates farvetemaer til ensartede visualiseringer

LuckyTemplates farvetemaer til ensartede visualiseringer

Opdag farvetemaerne i LuckyTemplates. Disse er afgørende for, at dine rapporter og visualiseringer kan se ud og fungere problemfrit.

Beregning af gennemsnit i LuckyTemplates: Isolering af resultater på ugedage eller weekender ved hjælp af DAX

Beregning af gennemsnit i LuckyTemplates: Isolering af resultater på ugedage eller weekender ved hjælp af DAX

Beregning af et gennemsnit i LuckyTemplates kan gøres på mange måder for at give dig præcise oplysninger til dine virksomhedsrapporter.

LuckyTemplates tema | LuckyTemplates Desktop Standard Theming

LuckyTemplates tema | LuckyTemplates Desktop Standard Theming

Lad os dykke ned i Standard LuckyTemplates-temaer og gennemgå nogle af de funktioner, der er indbygget i selve LuckyTemplates Desktop-applikationen.