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å.

Leave a Comment

DAX Studio EVALUATE Nøkkelord: Grunnleggende eksempler

DAX Studio EVALUATE Nøkkelord: Grunnleggende eksempler

Lær å bruke DAX Studio EVALUATE nøkkelordet med grunnleggende eksempler og få en bedre forståelse av hvordan dette kan hjelpe deg med databehandling.

Opprette en datotabell i LuckyTemplates

Opprette en datotabell i LuckyTemplates

Finn ut hvorfor det er viktig å ha en dedikert datotabell i LuckyTemplates, og lær den raskeste og mest effektive måten å gjøre det på.

LuckyTemplates Mobile Reporting Tips og teknikker

LuckyTemplates Mobile Reporting Tips og teknikker

Denne korte opplæringen fremhever LuckyTemplates mobilrapporteringsfunksjon. Jeg skal vise deg hvordan du kan utvikle rapporter effektivt for mobil.

Profesjonelle tjenesteanalyserapporter i LuckyTemplates

Profesjonelle tjenesteanalyserapporter i LuckyTemplates

I denne LuckyTemplates-utstillingen vil vi gå gjennom rapporter som viser profesjonell tjenesteanalyse fra et firma som har flere kontrakter og kundeengasjementer.

Microsoft Power Platform-oppdateringer | Microsoft Ignite 2021

Microsoft Power Platform-oppdateringer | Microsoft Ignite 2021

Gå gjennom de viktigste oppdateringene for Power Apps og Power Automate og deres fordeler og implikasjoner for Microsoft Power Platform.

Vanlige SQL-funksjoner: en oversikt

Vanlige SQL-funksjoner: en oversikt

Oppdag noen vanlige SQL-funksjoner som vi kan bruke som streng, dato og noen avanserte funksjoner for å behandle eller manipulere data.

LuckyTemplates Template Creation: Guide og tips

LuckyTemplates Template Creation: Guide og tips

I denne opplæringen lærer du hvordan du lager din perfekte LuckyTemplates-mal som er konfigurert til dine behov og preferanser.

Feltparametre og små multipler i LuckyTemplates

Feltparametre og små multipler i LuckyTemplates

I denne bloggen vil vi demonstrere hvordan du legger feltparametere sammen med små multipler for å skape utrolig nyttig innsikt og grafikk.

LuckyTemplates-rangering og tilpasset gruppering

LuckyTemplates-rangering og tilpasset gruppering

I denne bloggen vil du lære hvordan du bruker LuckyTemplates rangering og tilpassede grupperingsfunksjoner for å segmentere et eksempeldata og rangere det i henhold til kriterier.

Viser kun kumulativ total opp til en bestemt dato i LuckyTemplates

Viser kun kumulativ total opp til en bestemt dato i LuckyTemplates

I denne opplæringen skal jeg dekke en spesifikk teknikk rundt hvordan du viser kumulativ total kun opp til en bestemt dato i grafikken i LuckyTemplates.