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.

Leave a Comment

Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Denne blog indeholder LuckyTemplates TOPN DAX-funktionen, som giver dig mulighed for at få unik indsigt fra dine data, hvilket hjælper dig med at træffe bedre markedsføringsbeslutninger.

Oprettelse af en datotabel i LuckyTemplates

Oprettelse af en datotabel i LuckyTemplates

Find ud af, hvorfor det er vigtigt at have en dedikeret datotabel i LuckyTemplates, og lær den hurtigste og mest effektive måde at gøre det på.

LuckyTemplates Mobile Reporting Tips og teknikker

LuckyTemplates Mobile Reporting Tips og teknikker

Denne korte vejledning fremhæver LuckyTemplates mobilrapporteringsfunktion. Jeg vil vise dig, hvordan du kan udvikle rapporter effektivt til mobilenheder.

Professionelle serviceanalyserapporter i LuckyTemplates

Professionelle serviceanalyserapporter i LuckyTemplates

I denne LuckyTemplates Showcase gennemgår vi rapporter, der viser professionel serviceanalyse fra et firma, der har flere kontrakter og kundeengagementer.

Microsoft Power Platform-opdateringer | Microsoft Ignite 2021

Microsoft Power Platform-opdateringer | Microsoft Ignite 2021

Gå gennem de vigtigste opdateringer til Power Apps og Power Automate og deres fordele og implikationer for Microsoft Power Platform.

Almindelige SQL-funktioner: En oversigt

Almindelige SQL-funktioner: En oversigt

Opdag nogle almindelige SQL-funktioner, som vi kan bruge, såsom streng, dato og nogle avancerede funktioner til at behandle eller manipulere data.

LuckyTemplates skabelonoprettelse: Guide og tips

LuckyTemplates skabelonoprettelse: Guide og tips

I denne tutorial lærer du, hvordan du opretter din perfekte LuckyTemplates-skabelon, der er konfigureret til dine behov og præferencer.

Feltparametre og små multipler i LuckyTemplates

Feltparametre og små multipler i LuckyTemplates

I denne blog vil vi demonstrere, hvordan man lagdelte feltparametre med små multipler for at skabe utrolig nyttig indsigt og visuals.

LuckyTemplates-rangering og brugerdefineret gruppering

LuckyTemplates-rangering og brugerdefineret gruppering

I denne blog vil du lære, hvordan du bruger LuckyTemplates rangerings- og brugerdefinerede grupperingsfunktioner til at segmentere et eksempeldata og rangordne det efter kriterier.

Viser kun kumulativ total op til en bestemt dato i LuckyTemplates

Viser kun kumulativ total op til en bestemt dato i LuckyTemplates

I denne tutorial vil jeg dække en specifik teknik omkring, hvordan du kun viser Kumulativ Total op til en bestemt dato i dine visuals i LuckyTemplates.