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.
I dette blogginnlegget vil vi ta for oss noen plagsomme problemer med tidsintelligens, spesielt de problemene forårsaket av ukegranularitet og problemene som kan forårsakes av det uregelmessige antallet uker i et år. Vi vil bruke forskyvninger for å komme opp med nøyaktig tidsintelligens i DAX.
Vi har et interessant scenario for deg i dag. Dette kom opp et par ganger nylig i LuckyTemplates-forumet. Det folk ønsket å gjøre var å ta en visuell (som kan være en linjegraf eller et stolpediagram) og variere den dynamisk på startdatoen. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.
I dette tilfellet brukte vi det samme datasettet som vi jobbet for den gjennomsnittlige spotprisen per fat olje . I stedet for alltid å starte i begynnelsen av januar, ønsket vi å kunne klikke på det visuelle, endre det til en annen startdato, men alltid vise ett års data.
Innholdsfortegnelse
Eksempelscenarier av tidsintelligens i DAX
Det er flere grunner til at du kanskje vil gjøre denne teknikken. Du kan bruke dette hvis du har en beregning som stadig blir justert i forhold til hvordan den beregnes. Du vil kanskje bare vise dataene fra perioden med omjusteringen og fremover.
En annen grunn til å bruke dette er hvis du ønsker å visualisere dette på en animert måte. Dette vil i utgangspunktet ta dataene dine og vise dem dynamisk når du klikker på avspillingstilgangen.
I denne visualiseringen kan vi endre startdatoen måned for måned for å vise hvordan den endres i en 12-måneders periode over tid. Dette er et interessant og nyttig bilde for ulike forretningscases, men teoretisk sett representerer det også en rekke sentrale problemstillinger knyttet til DAX og datamodellering.
La oss gå til LuckyTemplates og se på datamodellen vår først. Dette er en veldig enkel datamodell med en utvidet datotabell og en spotpristabell knyttet til datoene.
Bruke forskyvninger for tidsinformasjon i DAX
En av tingene vi skal jobbe med er forskyvninger . Forskyvningene i den utvidede datotabellen beregnes dynamisk. Hver gang rapporten enten oppdateres eller åpnes, går den gjennom M-koden. For eksempel i en månedlig forskyvning, tildeler den gjeldende måned 0, forrige måned med -1, og to måneder tilbake med -2. Ser frem i fremtiden, tildeler den neste måned +1, og for to måneder i fremtiden +2.
Dette er et enkelt konsept, men utrolig kraftig når du arbeider med tidsintelligens i DAX og jobber med måneder , kvartaler og uker . Hvis du ikke bruker en offset, skaper det en del kompleksitet noen ganger i beregningene dine.
Å bruke forskyvninger betyr å bruke en kontinuerlig serie med tall der det å gå tilbake en måned alltid er -1 og en måned fremover alltid er +1 uavhengig av hvor i året du måtte være.
Implementering av Rubber Duck-strategien for tidsintelligens i DAX
Tidligere har jeg snakket om rubber ducking , som er å verbalisere strategien din høyt før du begynner å skrive DAX.
Jeg tenker høyt på hvordan jeg skal håndtere dette fra en månedlig kontekst ved å bruke tidsintelligens i DAX. Jeg vil starte noe basert på året og måneden som er valgt, og velge de som bruker en frakoblet tabell, for hvis du tenker på det, vil hvert annet valg innebære kryssing av år (med unntak av januar).
La oss si at vi ønsker 12 måneder med start i mars, vi ender opp med minst to måneder i det påfølgende året. Hvis vi bruker en tilkoblet slicer, kan vi bare filtrere for det året og vil ikke kunne filtrere inn i neste år.
Høsting av forskyvninger fra startdatoen
La oss gjøre dette med en tilkoblet tabell for både måneden og året. Først må vi høste den første offset som omhandler startdatoen.
Og så ønsker vi å flytte den forskyvningen fremover med 12 måneder, og så bare se på datoene som er innenfor det settet med forskyvninger. La meg vise deg hvordan det ser ut i DAX.
Beregning av månedlig rekkevidde
Dette er vårt mål for Innenfor rekkevidde månedlig , der vi velger vårt år (som vi høstet fra den frakoblede årstabellen) og vår måned (som vi høstet fra den frakoblede månedstabellen).
Vi har også denne andre parameteren der hvis det ikke er gjort noe valg, vil den som standard være januar. Denne parameteren er først og fremst kun for feilsøkingsformål.
Beregning av start- og sluttmånedsforskyvninger
La oss se på startmånedsforskyvningen ved å beregne MAX offset. Vi fjerner alle filtrene på datotabellen, og filtrerer ned til valgt måned og valgt år. For hver måned skal det kun være én forskyvning som tilsvarer den måneden og året.
Fra det tidspunktet kan vi ta sluttmånedsforskyvningen , som bare er startmånedsforskyvningen + 11 måneder.
Og så ser vi på hver valgte dato og bestemmer om den faller innenfor den første månedsforskyvningen og sluttmånedsforskyvningen. hvis den faller innenfor denne perioden, gir vi den en 1 og hvis ikke, gir vi den en 0.
Hvis vi går tilbake til månedsvisningen i visualiseringen vår, kan vi se Visualiseringen innen rekkevidde som vi har satt som lik én. Så det viser bare de månedene innen start til slutt offset. Hvis vi for eksempel klikker på februar, ser vi februar til januar.
Beregner ukeområdet
La oss se hvordan dette ser ut fra et ukentlig ståsted. Det visuelle starter i utgangspunktet greit og går fra uke 1 til uke 52. Så langt har det gått bra.
Men hvis vi klikker på de andre årene i årskiveren, kan vi se 52. uke mens noen har en 53. uke, noe som byr på mange problemer. Du kan se fra dette eksemplet at problemet begynner å manifestere seg.
Vi har en startperiode for år 2020 og uke 15 , men sluttperioden er år 2021 og uke 13 i stedet for år 2021 og uke 14 .
Går vi tilbake til uke 1 kan vi se at den starter greit, men slutter i uke 52. Ser vi på uke 53 beregning her er maks ukenummer for 2020 og 2021 53 uker. Dette kommer ikke til å fungere for ukentlig granularitet.
La oss se hva vi kan gjøre for å få dette til å fungere. Vi må fikse DAX-beregningen her i denne delen:
Dette er fordi for noen tilfeller er 51 riktig når det bare er 52 uker i et år, men for året der det er 53 uker, vil det forlate den siste perioden. Dette er nøyaktig hva vi så i den dynamiske visualiseringen i flere uker, der beregningen fjernet den siste perioden i årene 2020 og 2021.
For å fikse dette går vi til Within Range Weekly Wrong -målet, som faktisk ser enklere ut enn det tidligere målet. Vi hadde et startoffsetmål og regnet ut maks offset. Deretter fjernet vi filteret for datoer, og påførte deretter filteret på valgt uke og valgt år med antagelse om at dette ville føre til riktig forskyvning.
Men dette fungerer ikke fordi det ikke spiller noen rolle om du bruker en maks offset eller en min offset. Alt vi gjør er å pakke en aggregator rundt slik at vi ikke legger en naken kolonne i en CALCUATE-setning.
Men hvis vi går tilbake hit til ISO WeekNumber , kan vi se at et år og et ukenummer ikke entydig bestemmer en ukentlig forskyvning i den første perioden.
Jeg kom opp med en skuddsikker måte å gjøre dette på. Du kan bruke MIN, men det er mer fornuftig å lage dette Week1 Offset- målet. For å få uke 1 offset, har vi å gjøre med uke 2 fordi den aldri blir delt. Uavhengig av om det er 52 eller 53 uker i året, forblir uke 2 intakt.
I dette regnestykket filtrerer vi ned til uke 2 for å få offset. Og så når vi får den uke 2-forskyvningen, trekker vi bare en fra den. Dette vil entydig gi oss uke 1 offset. Dette ender opp med å løse problemet vårt.
Beregner innen rekkevidde ukentlig
Og så går vi tilbake til vårt Innenfor rekkevidde Ukentlig mål, og skriver en IF-setning der hvis innhøstingstallet er for uke 1, beregner vi uke en offset. Hvis det ikke er uke 1, beregner vi bare startukeforskyvningen slik vi gjorde i forrige månedsberegning.
Og så vil sluttukeforskyvningen være startukeforskyvningen + maks ukenummer som enten kan være 52 eller 53. Da trekker vi bare 1 for ikke å dobbelttelle startforskyvningen.
Vi kan gjøre den samme konstruksjonen som vi brukte for det månedlige området for å filtrere ukene, der alt som faller mellom start- og sluttforskyvningen får 1, og alt som ikke får 0.
Deretter skal vi plassere innen rekkevidde ukentlig mål i filterruten. Alt sjekkes ut og ser helt riktig ut.
Vi kan klikke på avspillingsaksen og kjøre uken granularitet. Vi kan se at det fungerer som det gjorde i månedssammenheng.
Konklusjon
Dette er et ganske dypt dykk i tidsintelligens i DAX, der vi diskuterte hvordan vi kan løse noen av problemene rundt ukenummer. Jeg håper du fant denne veiledningen nyttig og ga deg noen ekstra verktøy i verktøykassen når du har å gjøre med en problematisk ukesituasjon.
Hvis du likte innholdet som dekkes i denne spesielle opplæringen, ikke glem å abonnere på LuckyTemplates TV-kanal. Vi har en enorm mengde innhold som kommer ut hele tiden fra meg selv og en rekke innholdsskapere, alle dedikert til å forbedre måten du bruker LuckyTemplates og Power Platform på.
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.
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å.
Denne korte opplæringen fremhever LuckyTemplates mobilrapporteringsfunksjon. Jeg skal vise deg hvordan du kan utvikle rapporter effektivt for mobil.
I denne LuckyTemplates-utstillingen vil vi gå gjennom rapporter som viser profesjonell tjenesteanalyse fra et firma som har flere kontrakter og kundeengasjementer.
Gå gjennom de viktigste oppdateringene for Power Apps og Power Automate og deres fordeler og implikasjoner for Microsoft Power Platform.
Oppdag noen vanlige SQL-funksjoner som vi kan bruke som streng, dato og noen avanserte funksjoner for å behandle eller manipulere data.
I denne opplæringen lærer du hvordan du lager din perfekte LuckyTemplates-mal som er konfigurert til dine behov og preferanser.
I denne bloggen vil vi demonstrere hvordan du legger feltparametere sammen med små multipler for å skape utrolig nyttig innsikt og grafikk.
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.
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.