DAX-måleanalyse: Bryte ned lange DAX-mål

I denne opplæringen skal jeg vise deg noen detaljerte DAX-måleanalyser om hvordan jeg satte sammen en av favorittsidene mine i rapporten jeg sendte inn for den 10. LuckyTemplates Challenge.

Rangeringssiden bruker mange utfordrende DAX-tiltak . Men ved hjelp av en av LuckyTemplates-ekspertene våre, Antriksh Sharma, pluss en viss grad av forgrening, klarte jeg å få resultatene jeg ønsket.

Innholdsfortegnelse

Oversikt over rangeringer

Før vi går inn i DAX-målanalysen vår, vil jeg vise deg de forskjellige delene av siden vi jobber med i dag.

Slik ser rangeringssiden ut. I motsetning til de andre sidene i rapporten min, inneholder denne stort sett kort.

DAX-måleanalyse: Bryte ned lange DAX-mål

Hvert av disse kortene ble laget ved hjelp av den innebygde kortvisualen i LuckyTemplates-skrivebordet under Visualisering-ruten.

DAX-måleanalyse: Bryte ned lange DAX-mål

Den lar deg navigere tilbake til andre sider i rapporten gjennom disse ikonene her øverst.

DAX-måleanalyse: Bryte ned lange DAX-mål

Jeg diskuterte de andre sidene i denne rapporten i de andre veiledningene. Hvis du ser de andre sidene i denne rapporten, vil du se at de også har ikoner som fører til denne rangeringssiden .

Venstre side av siden viser de fire øverste anleggene og leverandørene, mens høyre side viser de fire nederste.

DAX-måleanalyse: Bryte ned lange DAX-mål

Jeg laget også individuelle DAX-mål for å få mer spesifikke resultater. Disse tre øverst viser for eksempel de fire øverste og nederste fire fabrikkene og leverandørene basert på nedetidsminutter , gjennomsnittlig nedetidsminutter og defekter .

DAX-måleanalyse: Bryte ned lange DAX-mål

Jeg gikk enda mer spesifikk på den nederste delen av rapportsiden. På venstre side fikk jeg de fire øverste og nederste fire plantene basert på nedetidsminutter, gjennomsnittlig nedetidsminutter og defekter.

DAX-måleanalyse: Bryte ned lange DAX-mål

Til høyre gjorde jeg det samme, men baserte det på leverandørdetaljene denne gangen.

DAX-måleanalyse: Bryte ned lange DAX-mål

Mens jeg går gjennom denne opplæringen, skal jeg fortelle deg historien om hvordan jeg kom opp med ideen til denne siden. Deretter vil jeg gi deg en trinnvis oversikt over hvordan hvert av disse tiltakene ble opprettet.

Få ideer til DAX-tiltakene du kan bruke

Jeg fikk ideen til DAX-tiltakene i dette lysbildet fra en av våre, Antriksh. Han er en DAX-guru og er flink til å optimalisere tiltak. Det var gøy å jobbe med ham på denne DAX-målanalysen.

Rundt to uker før den 10. LuckyTemplates-utfordringen ble annonsert, hadde vi en samtale på Skype om en PBIX-fil han la ut på LuckyTemplates-forumet.

DAX-måleanalyse: Bryte ned lange DAX-mål

Som du kan se, tok jeg med et bilde av Antriksh fordi han var inspirasjonen bak siden som vi skal diskutere her. Jeg fortalte ham at jeg ville gi ham kreditt da jeg kom i gang med å fullføre denne opplæringen.

Modellen er enkel og bruker noen grunnleggende data som kunde, produkter og salg.

DAX-måleanalyse: Bryte ned lange DAX-mål

Den har en kort liste over land på venstre side.

DAX-måleanalyse: Bryte ned lange DAX-mål

Antriksh opprettet et mål for Top N Countries by Sales . Jeg har listen sortert fra høyeste til laveste, som indikert av nedoverpilen.

DAX-måleanalyse: Bryte ned lange DAX-mål

Til høyre er det et kort som viser de fire øverste og de fire nederste landene. Topp fire-listen viser USA , Australia , Storbritannia og Tyskland , som matcher de fire beste på listen.

DAX-måleanalyse: Bryte ned lange DAX-mål

De fire nederste vises imidlertid i motsatt rekkefølge. I stedet for å gå fra bunnen, som er Armenia , startet den på 5. plass på listen, som er Kirgisistan .

DAX-måleanalyse: Bryte ned lange DAX-mål

Dette er grunnen til at jeg laget et annet kort nederst som bruker en revidert versjon av målet som ble brukt ovenfor.

DAX-måleanalyse: Bryte ned lange DAX-mål

Legg merke til at de fire nederste nå samsvarer med rekkefølgen jeg ønsket – Armenia , Thailand , Syria og Kirgisistan .

DAX-måleanalyse: Bryte ned lange DAX-mål

La oss gå inn på DAX-målene bak disse kortene. Jeg starter med målet som Antriksh laget for det første kortet.

DAX-måleanalyse: Bryte ned lange DAX-mål

Det opprinnelige målet har over 97 rader for å få resultatene vi så på det første kortet.

DAX-måleanalyse: Bryte ned lange DAX-mål

DAX-måleanalyse: Bryte ned lange DAX-mål

Når vi scroller ned til 20. rad kan vi se at Antriksh brukte ASC . Det er grunnen til at de fire nederste viste seg slik de gjorde.

DAX-måleanalyse: Bryte ned lange DAX-mål

Nå som jeg vet hvor problemet startet, skal jeg vise deg hvordan mitt reviderte mål ser ut.

La meg markere det andre kortet slik at jeg kan vise deg målet bak det.

DAX-måleanalyse: Bryte ned lange DAX-mål

Som du kan se, er det bare 41 rader i min reviderte formel.

DAX-måleanalyse: Bryte ned lange DAX-mål

Jeg jobbet med Antriksh for å krympe den med 60 % eller 70 % enn det opprinnelige målet. Ikke bare er det mindre komplisert, det gir meg også resultatene jeg trenger – med de fire øverste som starter fra 1. til 4., og de fire nederste starter fra 8. til 5.

Et par uker etter diskusjonen min med Antriksh ble den 10. LuckyTemplates Challenge lansert. En del av kravene innebar et rangeringssystem, som fikk meg til å tenke tilbake på Antrikshs DAX-mål. Jeg skjønte at jeg kan kopiere og lime inn målingen, og deretter bruke noen forgreninger for å komme opp med resultatene jeg trenger.

Dax-måleanalyse: Bygge tiltaket trinn for trinn

Nå skal jeg bryte ned målene jeg brukte for rangeringssiden for å få resultatene jeg ønsket. Denne DAX-måleanalysen kan hjelpe meg å forklare hvordan målingen fungerer, med tanke på hvor mange rader det tok å fullføre det.

I de andre veiledningene mine har jeg vist hvordan jeg liker å gruppere tiltakene mine for å gjøre ting mer organisert . Så jeg opprettet en undermappe for Top N v2.

DAX-måleanalyse: Bryte ned lange DAX-mål

Innenfor denne mappen er mitt mål for Top N Plants Vendors Downtime Minutes . Du vil se at den har de samme 41 kodelinjene som jeg viste deg tidligere mens jeg diskuterte Antrikshs mål. I utgangspunktet var alt jeg måtte gjøre å erstatte noen elementer for å få de resultatene jeg ønsker.

For å bryte dette bedre, delte jeg hele denne målingen i 9 forskjellige deler. Jeg vil gå over hvert av disse trinnene fra ett til ni og forklare hva hver av disse oppnår.

DAX-måleanalyse: Bryte ned lange DAX-mål

Tiltaket bruker en rekke variabler slik at jeg kan få tydeligere resultater. Å angi disse variablene hjelper sluttbrukeren å se hvordan målingen kommer sammen og forklarer detaljene om hvordan jeg fikk hvert resultat.

La oss starte med det første trinnet, som setterkalt BaseTable.

DAX-måleanalyse: Bryte ned lange DAX-mål

I denne basetabellen kan du se at jeg referererdata for anleggsplassering og leverandør .

Når du går tilbake til PBIX-filen, vil du se det øverste kortet som refererer til både anleggene og leverandørene. Dette er grunnen til at jeg trenger all data her, i motsetning til kortet lenger ned, som også er for nedetidsminutter, men bruker kun anleggsplasseringsdata.

DAX-måleanalyse: Bryte ned lange DAX-mål

Siden det første trinnet er enkelt, la oss gå videre til trinn to.

Det andre trinnet starter medfunksjon.

DAX-måleanalyse: Bryte ned lange DAX-mål

Denne funksjonen refererer til variabelen jeg opprettet i trinn 1 og nedetidsminuttene .

Den sørger for at en verdi vises ved å sette sammenogfunksjoner. Jeg vil også at resultatene skal være større enn eller lik null. Det er fordi datasettet som ble brukt for denne rapporten inkluderte noen kombinasjoner der enten anlegget eller leverandøren er tom. Det er også oppføringer hvor verdien er null.

Det tredje trinnet involverer enda et sett med variabler, som starter med verdien for N.

DAX-måleanalyse: Bryte ned lange DAX-mål

Her er N lik 4 fordi jeg vil at de fire øverste og de fire nederst skal vises.

DAX-måleanalyse: Bryte ned lange DAX-mål

Den setter også et prefiks for Topp og N, pluss en bindestrek.

DAX-måleanalyse: Bryte ned lange DAX-mål

Når den er satt sammen, vil den ganske enkelt vise "Topp 4 -", som er hvordan det tilsvarende kortet starter før det teller opp de forventede resultatene.

DAX-måleanalyse: Bryte ned lange DAX-mål

La oss nå gå til det fjerde trinnet. Det er her jeg begynner å komme opp med de forventede resultatene.

DAX-måleanalyse: Bryte ned lange DAX-mål

Noen vil tenke på å brukei dette tilfellet. Jeg prøver tross alt å rangere bidragene og komme med de beste resultatene. Antriksh og jeg følte imidlertid detville være mer passende i dette tilfellet siden vi bare trenger de fire beste i ASC- rekkefølge.

DAX-måleanalyse: Bryte ned lange DAX-mål

Deretter brukte jegfunksjon, som bruker anleggsplasseringsdata.

DAX-måleanalyse: Bryte ned lange DAX-mål

Det setter også formatet på hvordan jeg vil at listen skal vises. Det er derfor du vil se at den har en omvendt skråstrek og et komma, pluss anførselstegn for å angi mellomrom. Den er også satt til ASC- rekkefølge, så hvis jeg går tilbake til PBIX-filen, vil du se listen over de fire beste med skråstreker og kommaer mellom resultatene.

DAX-måleanalyse: Bryte ned lange DAX-mål

Det femte trinnet i tiltaket starter med å erstatte det siste kommaet på listen med et And .

DAX-måleanalyse: Bryte ned lange DAX-mål

Når du går tilbake til lysbildet, vil du se at den siste oppføringen har et "og" før leverandøren og anleggets plassering.

DAX-måleanalyse: Bryte ned lange DAX-mål

Dette er hva som blir oppnådd i trinn fem. Det er å lage en liste og bruke funksjonen for LastCommaPosition .

DAX-måleanalyse: Bryte ned lange DAX-mål

Legg merke til at dette sier at N er større enn 2. Dette betyr at substitusjonen skjer etter den 3. strengen.

Det sjette trinnet vil se kjent ut fordi det i utgangspunktet kopierer det samme som jeg gjorde på toppen for å starte listen med "Topp 4 -".

DAX-måleanalyse: Bryte ned lange DAX-mål

Den eneste forskjellen her er at jeg vil at den skal vises som "Bunn 4 -" i stedet for "Topp 4 -".

DAX-måleanalyse: Bryte ned lange DAX-mål

Den delen jeg tidligere diskuterte om brukbrukes nok en gang her nederst, men nå kaller jeg variabelen BottomData i stedet for TopData. Igjen setter denne delen inn skråstrek og komma mellom navnene på anleggene og leverandørene.

DAX-måleanalyse: Bryte ned lange DAX-mål

Når vi ser tilbake på Antriksh sitt opprinnelige mål, er dette også den samme delen hvor han brukte ASC , noe som resulterte i at listen ikke kom ut som forventet. Derfor bruker jeg DESC her i stedet.

Så i utgangspunktet, på dette tidspunktet og fremover, er det meste bare kopiert og limt inn fra de tidligere delene av tiltaket. Jeg erstatter bare ordet "Topp" med "Bund" i de fleste tilfeller.

For trinn 8 vil jeg endre det siste kommaet med ordet And .

DAX-måleanalyse: Bryte ned lange DAX-mål

Det niende trinnet avslutter dette tiltaket.

DAX-måleanalyse: Bryte ned lange DAX-mål

Dette brukerfunksjon med tallet 10. Dette sikrer at topp 4 og bunn 4 vises på separate linjer. Tenk på det som returtasten på tastaturet. Det får deg til å gå ned til neste rad slik at de fire øverste og nederste ikke vises på en enkelt linje.

Verifisering av resultatene

Antriksh og jeg klarte å kutte ned de originale 90 pluss-radene med DAX til 41 linjer. Imidlertid kan 41 linjer fortsatt være mye for noen brukere. Å bryte ned det tiltaket slik vi gjorde, var en fin måte å forstå hvorfor tiltaket måtte skrives på den måten.

Nå som jeg har forklart hva hvert trinn handlet om, er det på tide å bekrefte om det tiltaket virkelig gjør det det skal. La oss gå til rangeringssiden og verifisere resultatene med den andre delen av rapporten.

Jeg begynner med anleggene/leverandørene etter nedetidsminutter .

DAX-måleanalyse: Bryte ned lange DAX-mål

Dette viser topp fire som Linktype i New Britain, Flashpoint i Frazer, Quinu i Twin Rocks og Layo i Henning. Når det gjelder de fire nederste, viser den Wikido i Middletown som den dårligste totalt sett.

Nå går jeg over til siden for leverandører og planter kombinert for å se om resultatene stemmer overens.

DAX-måleanalyse: Bryte ned lange DAX-mål

Med kolonnen Rangering etter nedetidsminutter sortert fra topp til bunn, viser den riktig resultat for de fire beste.

Noen av dere lurer kanskje på hvorfor New Britain kommer på andreplass på denne listen, når den kommer på toppen av rangeringssidekortet .

Legg merke til at rangeringen viser tre bidrag som topp 1. Disse ble rangert med RANKX.

DAX-måleanalyse: Bryte ned lange DAX-mål

Men hvis du ser på kolonnen for Downtime Minutes , viser den at New Britain viser 0 mens Frazer og Twin Rocks hver viser 1. Det er derfor på kortet på rangeringssiden at New Britain fortsatt kom ut på toppen av Frazer og Twin Rocks selv om de alle ble rangert som nummer én.

La oss nå sjekke om de fire nederste er riktige. Bare sorter rangeringen etter nedetidsminutter i synkende rekkefølge.

DAX-måleanalyse: Bryte ned lange DAX-mål

Som du kan se, viser den Middletown, Waldoboro, Barling og Chesaning som de fire nederste på kortet. Dette betyr at målet for anlegg/leverandører etter nedetidsminutter er riktig.

La oss nå se på kortet for Plants By Downtime Minutes .

DAX-måleanalyse: Bryte ned lange DAX-mål

Dette viser at de fire beste er Reading, Middletown, Waldoboro og Clarksville. De fire nederste er Riverside, Charles City, Twin Rocks og Chesaning.

For å bekrefte disse resultatene, skal jeg sjekke på Planter-siden og se om resultatene stemmer overens. Den største forskjellen her er at kortet vi tidligere verifiserte var basert på både plante- og leverandørdata, mens dette kun ser på plantedata.

Når vi sorterer rangeringen etter nedetidsminutter fra topp til bunn, viser det at de fire beste er Reading, Middletown, Waldoboro og Clarksville.

DAX-måleanalyse: Bryte ned lange DAX-mål

Nå, la oss snu rangeringen denne gangen for å se om de fire nederste stemmer. Du vil se at av de 30 plantene på listen vår får Riverside, Charles City, Twin Rocks og Chesaning de nederste rangeringene.

DAX-måleanalyse: Bryte ned lange DAX-mål

Dette betyr at vi ser de riktige resultatene for planter.

Denne gangen, la oss se på et kort som rangerer leverandører etter mangler .

DAX-måleanalyse: Bryte ned lange DAX-mål

Jeg går til Leverandørsiden denne gangen for å se om Dablist er toppleverandøren og Yombu er verst basert på defekter.

DAX-måleanalyse: Bryte ned lange DAX-mål

Når vi sorterer leverandørene fra best til dårligst, ser det ut til at de fire beste samsvarer med kortet på rangeringssiden .

La meg bytte rangering fra verst til best og se om de fire nederste matcher også.

DAX-måleanalyse: Bryte ned lange DAX-mål

Du vil se at Yombu faktisk er den verste, sammen med de tre andre inkludert i de fire nederste listen på kortet.

Dax-måleanalyse: Bruke måleforgrening

DAX-måleanalysen som vi gjorde tidligere, så kun på målet bak Plants/Vendors By Downtime Minutes . Men hvordan jobbet jeg med tiltakene for de andre kortene? Dette er hvorkommer inn.

Tiltaksforgrening innebærer bruk av et eksisterende mål for å utlede andre resultater.

I denne rapporten har jeg ganske enkelt kopiert og limt inn tiltaket vi diskuterte tidligere og endret noen av elementene for å passe til det jeg trenger.

Navnet på tiltaket er åpenbart det første jeg skal endre. Men mer enn det, jeg må også endre dataene jeg refererer til. For eksempel brukte vi både anleggsplassering og leverandørdata for vårt opprinnelige mål.

DAX-måleanalyse: Bryte ned lange DAX-mål

Men hvis jeg skal bruke samme mål for Plants By Downtime Minutes , så må jeg fjerne leverandørdataene og bare fokusere på Plant Location.

Jeg må endre det for alle de andre delene av samme mål som også refererer til begge datasettene, som da jeg brukte CONCATENATEX .

DAX-måleanalyse: Bryte ned lange DAX-mål

Det samme gjelder nedetidsminuttene . Hvis jeg skulle jobbe med et kort som ser på gjennomsnittlig nedetidsminutter eller defekter , så er alt jeg trenger å gjøre å endre denne delen.

DAX-måleanalyse: Bryte ned lange DAX-mål

Når det gjelder delen der det står "@DowntimeMins" i målingen, ville det ikke skade å holde det slik selv om jeg refererer til defektene mine eller mine gjennomsnittlige nedetidsminutter.

DAX-måleanalyse: Bryte ned lange DAX-mål

Men hvis du er typen som liker å holde ting i en bestemt rekkefølge, kan du gå inn og endre dette også. Bare husk at hvis du endrer dette, må du endre det hele veien gjennom hele siden. Det betyr å legge ned litt ekstra innsats for de samme resultatene.

Du kan bare forestille deg hvor mye tid jeg sparte ved å bruke måleforgrening . Å gjøre det på denne måten betyr at jeg slipper å fortsette å lage nye tiltak for hver del av rapporten jeg jobber med. Jeg trenger bare å finjustere det eksisterende tiltaket basert på resultatene jeg ønsker å se, noe som reduserer utviklingstiden for rapportene betraktelig.

For å vise deg hvordan jeg gjorde det, la oss se på Vendors By Downtime Minutes .

DAX-måleanalyse: Bryte ned lange DAX-mål

Når jeg trekker opp målet, vil du se at det har de samme 41 radene som Plants / Vendors By Downtime Minutes .

DAX-måleanalyse: Bryte ned lange DAX-mål

På trinn 1 refererte jeg imidlertid bare til leverandørdata og fjernet fabrikkplassering.

DAX-måleanalyse: Bryte ned lange DAX-mål

Jeg endret dataene andre steder der det også er aktuelt.

DAX-måleanalyse: Bryte ned lange DAX-mål

Jeg beholdt nedetidsminutter siden det er dette jeg baserer resultatene på.

DAX-måleanalyse: Bryte ned lange DAX-mål

Så det er raske løsninger på tiltaket slik at det kan brukes på de andre områdene i rapporten.

La meg vise deg et annet eksempel her. Denne gangen, la oss se på Leverandører etter mangler .

DAX-måleanalyse: Bryte ned lange DAX-mål

Nok en gang ser vi bare på leverandøren her.

DAX-måleanalyse: Bryte ned lange DAX-mål

Det jeg endret her er referansen til Downtime Minutes . I stedet brukte jeg Defects .

DAX-måleanalyse: Bryte ned lange DAX-mål

Jeg sørget også for at de andre radene fortsatt bruker dataene for leverandøren.

DAX-måleanalyse: Bryte ned lange DAX-mål




Konklusjon

Det var noe kraftig DAX-verk av Antriksh. Jeg likte definitivt å jobbe med den , forgrene den og bruke den på de forskjellige delene av rapporten min .

Den dybdegående DAX-måleanalysen vi gjorde var også en fin måte å forstå alle aspekter av prosessen. Å jobbe med et langt mål kan virke skremmende i begynnelsen, men en grundig DAX-målsanalyse som dette kan hjelpe til med å ordne opp.

Arbeidet med denne siden understreket også viktigheten av å ha et samarbeidsfellesskap som det vi har her på LuckyTemplates. Det er flott at alle har muligheten til å jobbe med folk som Antriksh, samt andre medlemmer og eksperter som også har noen egne tips og triks.

Beste ønsker,

Jarrett


Pipe In R: Koblingsfunksjoner med Dplyr

Pipe In R: Koblingsfunksjoner med Dplyr

I denne opplæringen lærer du hvordan du kobler funksjoner sammen ved å bruke dplyr-røroperatøren i programmeringsspråket R.

RANKX Deep Dive: A LuckyTemplates DAX-funksjon

RANKX Deep Dive: A LuckyTemplates DAX-funksjon

RANKX fra LuckyTemplates lar deg returnere rangeringen til et spesifikt tall i hver tabellrad som utgjør en del av en liste med tall.

Trekker ut LuckyTemplates-temaer og bilder fra PBIX

Trekker ut LuckyTemplates-temaer og bilder fra PBIX

Lær hvordan du demonterer en PBIX-fil for å trekke ut LuckyTemplates-temaer og bilder fra bakgrunnen og bruke den til å lage rapporten din!

Excel Formulas Cheat Sheet: Mellomveiledning

Excel Formulas Cheat Sheet: Mellomveiledning

Excel Formulas Cheat Sheet: Mellomveiledning

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

Python i LuckyTemplates: Hvordan installere og sette opp

Python i LuckyTemplates: Hvordan installere og sette opp

Lær hvordan du installerer programmeringsspråket Python i LuckyTemplates og hvordan du bruker verktøyene til å skrive koder og vise visuelle elementer.

Beregning av dynamiske fortjenestemarginer – enkel analyse av LuckyTemplates med DAX

Beregning av dynamiske fortjenestemarginer – enkel analyse av LuckyTemplates med DAX

Lær hvordan du beregner dynamiske fortjenestemarginer ved siden av LuckyTemplates og hvordan du kan få mer innsikt ved å grave dypere inn i resultatene.

Sortering av datotabellkolonner i LuckyTemplates

Sortering av datotabellkolonner i LuckyTemplates

Lær hvordan du sorterer feltene fra kolonner med utvidet datotabell på riktig måte. Dette er en god strategi å gjøre for vanskelige felt.

Finn dine beste produkter for hver region i LuckyTemplates ved å bruke DAX

Finn dine beste produkter for hver region i LuckyTemplates ved å bruke DAX

I denne artikkelen går jeg gjennom hvordan du kan finne de beste produktene dine per region ved å bruke DAX-beregninger i LuckyTemplates, inkludert TOPN- og CALCUATE-funksjonene.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Lær hvordan du bruker en søppeldimensjon for flagg med lav kardinalitet som du ønsker å inkludere i datamodellen din på en effektiv måte.