First N Business Days Revisited – En DAX-kodespråkløsning

La oss ta en ny titt på problemet diskutert i , som dynamisk sammenlignet de første N virkedagene i hver måned. Dette problemet var basert på et spørsmål fra et LuckyTemplates-medlem på forumet vårt, der han ønsket å dynamisk se og sammenligne de første 5, 10, 15 og 20 fakturerbare dagene (ikke-helger og ikke-feriedager) for en gitt måned mot forrige måned.

I stedet for å bruke strømspørring, kommer vi med en DAX-kodespråkløsning. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.

I den første videoen kom jeg opp med en strømspørringsløsning om hvordan jeg løser dette problemet. Men så kom en av våre LuckyTemplates-eksperter, Antriksh Sharma, opp med et strålende effektivt tiltak som også er verdt å ta et dypere dykk i. Vi vil diskutere noen av teknikkene han brukte for å utvikle et mål, som vil gi deg flere verktøy i DAX-verktøykassen.

Det gjorde det absolutt for meg og for noen av de andre ekspertene som tok en titt på dette. Like-for-like-sammenligningen av sammenlignbare virkedager på tvers av måneder er et verdifullt mønster generelt som kan brukes i mange situasjoner.

First N Business Days Revisited – En DAX-kodespråkløsning

La oss dykke ned i kraftspørring og ta en titt på hva Antriksh gjorde her. Vi har måneden og året , totalt salg og til slutt det totale salget for N virkedager som vi valgte ved hjelp av power-spørring basert på hva-hvis-parameteren som vi utviklet.

First N Business Days Revisited – En DAX-kodespråkløsning

Antriksh tok en helt annen tilnærming, der han brukte et sjokkerende kort tiltak for å løse hele dette problemet. Det første jeg la merke til ved dette var bruken av kommandoen.

First N Business Days Revisited – En DAX-kodespråkløsning

Dette er en DAX-funksjon som jeg ikke bruker så ofte, men som passer perfekt for denne typen problemer. Hvis vi tar en titt på SQL BI DAX-guiden, står det at GENERATE-funksjonen er en tabellfunksjon som bruker to forskjellige tabeller som input, og deretter gjør en ekvivalent av SQL-kommandoen CROSS APPLY.

First N Business Days Revisited – En DAX-kodespråkløsning

Så den tar en grunntabell (Tabell1) og itererer på den, og tar deretter et andre tabelluttrykk og evaluerer det for hver rad i den første tabellen, og går deretter tilbake til tabellen som utdata.

La oss ta Antrikshs mål og slippe det inn i tabellen. Vi kan se at den gir nøyaktig de samme resultatene som strømspørringsløsningen vi gjorde forrige gang. Så det er bra og validerer begge tiltakene ganske bra.

First N Business Days Revisited – En DAX-kodespråkløsning

La oss skille dette tiltaket fra hverandre. Det første filteret som brukes her er Dates[IsBusinessDay] = TRUE. Dette tar ut alle ikke-helger og ikke-helligdager basert på den utvidede datotabellen IsBusinessDay-feltet.

Vi snakker mye mer om dette i , hvor vi også gikk gjennom hvordan vi knytter det til julebordet vårt.

First N Business Days Revisited – En DAX-kodespråkløsning

Den interessante delen av dette kommer virkelig i de to tabellinngangene. Den første tabellen er bare en tabell med én kolonne i feltet Måned og år i datotabellen.

First N Business Days Revisited – En DAX-kodespråkløsning

Men den andre tabellinngangen er der de interessante tingene skjer. Antriksh brukte a og brukte deretter vår dynamiske parameter som antall rader i TOPN.

First N Business Days Revisited – En DAX-kodespråkløsning

Totalt salg- målet er knyttet til den andre tabellen, og deretter brukt på den første tabellen.

First N Business Days Revisited – En DAX-kodespråkløsning

Innholdsfortegnelse

Forstå et komplekst mål ved å bruke DAX-kodespråk

En av de enkleste måtene å finne ut hva et komplekst tiltak som dette gjør, er å gå inn i Tabellredigering . Vi kan ta en titt på dette uttrykket og finne ut hva dette TOPN-uttrykket gjør først.

First N Business Days Revisited – En DAX-kodespråkløsning

La oss kopiere TOPN-delen og lage en ny. Husk at DAX-spørringer starter med EVALUATE.

First N Business Days Revisited – En DAX-kodespråkløsning

Når vi limer inn TOPN-delen, ser vi at dette trekker de første 5 datoene fra salgsordretabellen. Det er en tabell i TOPN som er sammensatt av verdiene for alle bestillingsdatoene i salgstabellen.

Denne TOPN-funksjonen tar verdien av hva-hvis-parameteren (som i dette tilfellet er 5) og bruker den på salgsordredatofeltet. Deretter trekker den de første 5 datoene innenfor filterkonteksten i stigende rekkefølge basert på det feltet.

First N Business Days Revisited – En DAX-kodespråkløsning

Gitt at det ikke er noen ekstra filterkontekst, er det bare å trekke de første 5 datoene fra hele tabellen.

First N Business Days Revisited – En DAX-kodespråkløsning

@Sales-kolonnen legger bare til det totale salget innenfor riktig filterkontekst til TOPN-tabellen.

First N Business Days Revisited – En DAX-kodespråkløsning

Så langt har vi den første tabellen for måneden og året, den andre tabellen i TOPN for de første N er fra salgstabellen, og deretter det totale salget knyttet til det.

Bruke GENERATE-tabellen i DAX-kodespråk

La oss ta en titt på hva denne GENERATE-tabellen gjør. Vi hopper tilbake til Tabular Editor og lager en ny DAX-spørring.

Vi starter som vi alltid gjør med EVALUATE, limer inn GENERATE-delen av koden og klikker på 5.

First N Business Days Revisited – En DAX-kodespråkløsning

Vi kan se at for hver rad i den første tabellen itererer den og sammenføyes med de 5 radene fra TOPN-tabellen evaluert i sammenheng med @Sales-funksjonen.

Det har tatt de første 5 virkedagene i april, de første 5 virkedagene i mai, de første 5 virkedagene i juni, og så videre til det kommer til slutten av det første tabellen.

First N Business Days Revisited – En DAX-kodespråkløsning

Dette er akkurat det vi trenger, og nå blir det en relativt enkel sak å legge disse verdiene sammen. Vi har resultatet (som er tabellvariabelen til GENERATE-resultatene) og så må vi summere @Sales-funksjonen.

Innenfor kontekst summerer vi nå de første 5 virkedagene i april, de første 5 virkedagene i mai, og så videre til vi kommer ned til totalt $23 737 430, i så fall har den ingen kontekst av måned og år å operere .

Dette oppsummerer hele @Sales-kolonnen og gir oss nøyaktig samme totalsum som vi hadde i vår power-spørringsløsning.

First N Business Days Revisited – En DAX-kodespråkløsning

Du kan se at hvis vi endrer sliceren til 10, får vi dynamisk de samme resultatene med DAX-kodespråk som vi gjorde i power-spørring.

First N Business Days Revisited – En DAX-kodespråkløsning

Vi har også søylediagrammet nederst som justeres dynamisk for å gjenspeile endringene vi har gjort.

First N Business Days Revisited – En DAX-kodespråkløsning

Juster dynamisk måltittel

Det er et annet ekstra triks jeg ville vise deg. Du kan lage en dynamisk justering på hva-hvis-parameteren din og knytte den dynamisk til en takttittel.

Hvis vi for eksempel endrer sliceren øverst til 15, vil den dynamisk endre navnet på målet nederst til Totalt salg for de første 15 virkedagene i hver måned .

First N Business Days Revisited – En DAX-kodespråkløsning

Det er en enkel måte å gjøre dette på i DAX ved å bruke . Vi tar i utgangspunktet bare tre strenger. Den første er Total Sales for First , og deretter koble det sammen med verdien som vi høster fra hva-hvis-parameteren, og så bare knytte det til resten av tittelen.

First N Business Days Revisited – En DAX-kodespråkløsning

Så går vi inn i det visuelle, går til betinget formatering av tittelen, og klikker på fx .

First N Business Days Revisited – En DAX-kodespråkløsning

Vi formaterer etter feltverdi og velger det dynamiske tittelmålet. Dette vil endre valget av hva-hvis-parameteren.

First N Business Days Revisited – En DAX-kodespråkløsning

Konklusjon

Det vi har nå er en komplett løsning som bruker DAX-kodespråk. Vi har diskutert en virkelig kreativ og effektiv måte å gjøre det på ved å bruke GENERATE-funksjonen. Jeg vil takke Antriksh for å dele hans strålende DAX-kunnskap med oss. Jeg lærte mye mens jeg gikk gjennom DAX-løsningen hans, og jeg håper du gjorde det også.


Hva er Power Query & M Language: En detaljert oversikt

Hva er Power Query & M Language: En detaljert oversikt

Denne opplæringen gir en oversikt over Power Query Editor og M-språket på LuckyTemplates-skrivebordet.

Lag en paginert rapport: Legge til tekster og bilder

Lag en paginert rapport: Legge til tekster og bilder

Lær hvordan du lager en paginert rapport, legger til tekster og bilder og deretter eksporterer rapporten til ulike dokumentformater.

SharePoint Automate-funksjonen | En introduksjon

SharePoint Automate-funksjonen | En introduksjon

Lær hvordan du bruker SharePoint-automatiseringsfunksjonen til å lage arbeidsflyter og hjelpe deg med å mikroadministrere SharePoint-brukere, -biblioteker og -lister.

Løs en dataanalyseutfordring med LuckyTemplates Accelerator

Løs en dataanalyseutfordring med LuckyTemplates Accelerator

Utvid rapportutviklingsferdighetene dine ved å bli med i en dataanalyseutfordring. Akseleratoren kan hjelpe deg å bli en LuckyTemplates-superbruker!

Løpende totaler i LuckyTemplates ved hjelp av DAX

Løpende totaler i LuckyTemplates ved hjelp av DAX

Lær hvordan du beregner løpende totaler i LuckyTemplates ved hjelp av DAX. Løpende totaler lar deg ikke bli fanget opp i et individuelt resultat.

LuckyTemplates Dax-variabler er konstante: Hva betyr dette?

LuckyTemplates Dax-variabler er konstante: Hva betyr dette?

Forstå konseptet med variabler i DAX i LuckyTemplates og implikasjonene av variabler for hvordan målene dine beregnes.

LuckyTemplates Slope Chart: En oversikt

LuckyTemplates Slope Chart: En oversikt

Lær mer om det tilpassede visuelle bildet kalt LuckyTemplates Slope-diagram, som brukes til å vise økning/reduksjon for en enkelt eller flere beregninger.

LuckyTemplates fargetemaer for enhetlige visualiseringer

LuckyTemplates fargetemaer for enhetlige visualiseringer

Oppdag fargetemaene i LuckyTemplates. Disse er avgjørende for at rapportene og visualiseringene dine skal se ut og fungere sømløst.

Beregne gjennomsnitt i LuckyTemplates: Isolere ukedag- eller helgeresultater ved hjelp av DAX

Beregne gjennomsnitt i LuckyTemplates: Isolere ukedag- eller helgeresultater ved hjelp av DAX

Å beregne et gjennomsnitt i LuckyTemplates kan gjøres på mange måter for å gi deg nøyaktig informasjon for bedriftsrapportene dine.

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

La oss fordype oss i Standard LuckyTemplates-tema, og gjennomgå noen av funksjonene som er innebygd i selve LuckyTemplates Desktop-applikasjonen.