DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Jeg vil i dag fokusere på noe jeg kaller den skjulte DAX-fellen. Hvis du støter på denne situasjonen, vil det få deg til å føle at du mister forstanden fordi DAX-en din kommer til å se riktig ut, men den kommer ikke til å fungere. Jeg vil lede deg gjennom når det skjer og hva du kan gjøre med det, og i prosessen vil jeg også snakke om noen generelle beste praksiser for DAX-optimalisering. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.

La oss først ta en titt på hva vi jobber med her. Vi har omtrent 10 år med data fra Internet Movie Database. Faktatabellene er ganske enkle, og vi har vurderingsdata, budsjettdata og bruttodata.

I dag skal vi se på brutto over hele verden.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Vi har også vår utvidede datotabell. Dette kommer til å være en tidsintelligensanalyse basert på datotabellen og faktatabellen.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Innholdsfortegnelse

Totalt verdensomspennende brutto per år

Vi ønsker å gjøre noe veldig vanlig og enkelt. Vår totale verdensomspennende brutto er bare et veldig enkelt aggregert summål, som vi ønsker å konvertere til en prosentandel.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

For å gjøre dette tar vi telleren ( Totalt verdensomspennende bruttomål ) og nevneren ( Totalt verdensomspennende bruttomål , men fjernet konteksten fra årsfilteret).

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Jeg brukte fordi jeg synes det er mer intuitivt når du leser koden, men hvis du foretrekker , fungerer det like bra. Vi deler bare telleren med nevneren for å få resultatet.

Hvis vi tar det resulterende målet og slipper det inn i tabellen vår, vil du se at det gjør akkurat det vi forventer at det skal gjøre. Vi får 100 % i bunn og vi får årene omregnet til deres individuelle prosenter. Så langt har det gått bra, og vi har ikke støtt på noen problemer ennå.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Totalt verdensomspennende brutto per kvartal

La oss ta en titt på en lignende situasjon der vi går etter kvartal. Dette tiltaket kan være nyttig fordi det er hypoteser om at inntektene fra sommerfilmsesongen er forskjellig fra begynnelsen av året, og mot slutten av året som fører til Oscar-sesongen.

Igjen, vi har nøyaktig samme mål med REMOVEFILTERS-funksjonen på kvartalstallene i stedet for året.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Og dropper vi tiltaket vi nettopp har gjort i tabellen, gjør det også akkurat det vi forventer.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Totalt verdensomspennende brutto per måned og år

La oss ta en titt på det tredje tilfellet, som kan være veldig vanlig, hvor vi ønsker å se etter måned og år.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Og igjen, vi bruker samme mål som før. Men denne gangen fjerner vi filteret på måned og år.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

La oss slippe den inn på bordet vårt. Plutselig går det ikke.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Vi kan fortelle hva som ikke fungerer med det. Vi vet at Worldwide Gross-målet fungerer, så det betyr at telleren er bra, men nevneren er det ikke. I hvert av de foregående tilfellene fjernet REMOVEFILTERS-funksjonen filteret på riktig måte, men her gjorde det tydeligvis ikke det.

Vi kan faktisk teste dette ut ved å endre det vi returnerte her i resultatet.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

I stedet for Resultat, la oss bruke Nevner. Husk at dette kommer til å bli formatert i prosent, så det kommer til å se litt morsomt ut.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Det vi bør få for nevneren er det samme tallet i hver rad, men det er det ikke.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Vi kan se at det ikke fjerner filteret på måned og år, og tror det er fordi måneden og året er i teksten.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Men den forrige for kvartal ble også uttrykt i tekst, så det er ikke bare fordi teksten. Det skal bare ordnes opp. Når du slipper feltet uten å sortere det, kommer det til å sortere alfabetisk.

I den utvidede datotabellen, la oss ta en titt på det feltet som heter Måned og år . Hvis vi ser på det i Sorter etter-kolonnen , får vi se noe interessant.

Vi vil se at den kolonnen er sortert etter et tall kalt MonthnYear. Når du sorterer en kolonne etter en annen, blir den sorteringskolonnen faktisk en del av filterkonteksten. Det er dette som avviser denne beregningen.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

La oss gå tilbake til målet vårt og fjerne konteksten for måneden og året som vi bruker som vår sortering.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Vi får nå akkurat det vi skal, som er måneden og året regnet som en skikkelig prosentandel.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Når du fjerner en filterkontekst, vil det kreve to felt for å gjøre dette når den er sortert . Du kan spørre at i stedet for å måtte gjøre to felt her, hvorfor kan vi ikke bare fjerne filtre på hele datotabellen?

Svaret er at vi kan, og dette vil fungere for de tre eksemplene vi snakket om fordi hver av disse kolonnene er en del av datotabellen vår. Å fjerne all filterkonteksten på den tabellen vil fungere for alle tre tilfellene, men dette er faktisk en dårlig idé.

Som et generelt DAX-optimaliseringsprinsipp må du fjerne så mye filterkontekst som er nødvendig for å få resultatet du ønsker.

I de fleste tilfeller kommer du ikke til å presentere dette i tabellformat. Du vil presentere det som en matrise, og du trenger et mer komplekst mål fordi du har to forskjellige granulariteter i samme kolonne. Dette tiltaket ser komplisert ut, men det er det virkelig ikke.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Dette er bare en utvidelse av det vi allerede har gjort. Den første delen av denne DAX-optimaliseringsberegningen viser nevnerne for de forskjellige granularitetene. Vi fjerner filterkonteksten for en måned, for året og for hele tabellen.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

For den andre delen av beregningen brukte vi SWITCH TRUE. For denne funksjonen må du gå fra den mest spesifikke til den minst spesifikke. Måneden er vårt strammeste og mest spesifikke omfang, så det er her vi starter. Vi må fjerne kontekst ved å bruke de to feltene vi identifiserte.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

For omfanget av år, må vi fjerne konteksten på år, og fjerne konteksten på hele tabellen.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

La oss ta en titt på hva som skjer hvis vi skal ta og fjerne konteksten i det hele tatt. Vi bruker et annet mål som fjerner konteksten på hele datotabellen for alle tre tilfeller.

DAX-optimalisering: Hvor finner du den skjulte DAX-fellen

Vi vil se at tiltaket overfjerner konteksten. I stedet for å beregne bidraget fra hver måned til det året, beregner det månedens bidrag til hele datasettet. Dette er ikke hva vi ønsker skal skje fordi å fjerne kontekst fra hele bordet er egentlig bare et sløvt instrument når en skalpell er nødvendig.

Konklusjon

Det er mange tilfeller der du har en matrise og du må kontrollere nøye hvilken kontekst du fjerner. Å bare fjerne konteksten på hele bordet kommer til å forårsake denne typen problemer.

Jeg håper når denne situasjonen dukker opp (som alltid vil, på et tidspunkt), vil du gjenkjenne den som den skjulte fellen som vi har diskutert i dette DAX-optimaliseringsinnlegget, og du vil kunne unngå det uten samme frustrasjon at det forårsaket meg da jeg først så det og ikke kunne finne ut hvorfor min DAX ikke fungerte som den skal.

Hvis du likte DAX-optimaliseringsemnet som dekkes i denne spesielle opplæringen, vennligst abonner på LuckyTemplates TV-kanal . Vi har en enorm mengde innhold som kommer ut hele tiden fra meg selv og en rekke innholdsskapere, som alle er dedikert til å forbedre måten du bruker LuckyTemplates og Power Platform på.


PowerApps-søkefelt: Slik legger du til og tilpasser

PowerApps-søkefelt: Slik legger du til og tilpasser

Lær hvordan du oppretter et PowerApps-søkefelt fra bunnen av og tilpasser det til å matche det overordnede temaet for appen din.

SELECTEDVALUE DAX-eksempel- Valg av høsteskive

SELECTEDVALUE DAX-eksempel- Valg av høsteskive

Høst eller fang en verdi inne i et mål for å gjenbruke i et annet mål for dynamiske beregninger ved å bruke SELECTEDVALUE DAX i LuckyTemplates.

Versjonshistorikk i SharePoint-lister

Versjonshistorikk i SharePoint-lister

Oppdag hvordan versjonshistorikk i SharePoint kan hjelpe deg med å se utviklingen av bestemte data, og hvor mange endringer den har gjennomgått.

Hex-fargekodevelger for Lucky Templates-rapporter

Hex-fargekodevelger for Lucky Templates-rapporter

Her er et verktøy for å lage rapporter og grafikk, en sekskantkodevelger for farger som du kan bruke for enkelt å få fargene til LuckyTemplates-rapportene dine.

Dynamisk datoskjærer i Lucky-maler ved hjelp av en periodetabell

Dynamisk datoskjærer i Lucky-maler ved hjelp av en periodetabell

Du kan enkelt vise en datoperiode som en slicer i rapporten ved hjelp av en periodetabell. Bruk en M-kode for å lage den dynamiske datoskjæreren i LuckyTemplates.

Proporsjons- og frekvenstabeller i Excel

Proporsjons- og frekvenstabeller i Excel

Skulle dykke ned i frekvenstabeller i Excel samt proporsjonstabeller. Se nærmere på hva de er og når du skal bruke dem.

Slik installerer du DAX Studio & Tabular Editor i LuckyTemplates

Slik installerer du DAX Studio & Tabular Editor i LuckyTemplates

Lær hvordan du laster ned og installerer DAX Studio og Tabular Editor 3 og hvordan du konfigurerer dem for bruk i LuckyTemplates og i Excel.

LuckyTemplates Shape Map Visualization for romlig analyse

LuckyTemplates Shape Map Visualization for romlig analyse

Denne bloggen inneholder Shape Map-visualiseringen for romlig analyse i LuckyTemplates. Jeg viser deg hvordan du kan bruke denne visualiseringen effektivt med dens funksjoner og elementer.

LuckyTemplates finansiell rapportering: Allokering av resultater til maler på hver enkelt rad

LuckyTemplates finansiell rapportering: Allokering av resultater til maler på hver enkelt rad

I denne opplæringen viser jeg frem en unik idé rundt finansiell rapportering, som tildeler resultater for å forhåndsbestemme tabellmaler inne i LuckyTemplates.

DAX-mål i LuckyTemplates ved hjelp av måleforgrening

DAX-mål i LuckyTemplates ved hjelp av måleforgrening

Opprett DAX-mål i LuckyTemplates ved å bruke eksisterende mål eller formler. Dette er det jeg kaller tiltaket forgreningsteknikk.