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.
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.
Hvert av disse kortene ble laget ved hjelp av den innebygde kortvisualen i LuckyTemplates-skrivebordet under Visualisering-ruten.
Den lar deg navigere tilbake til andre sider i rapporten gjennom disse ikonene her øverst.
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.
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 .
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.
Til høyre gjorde jeg det samme, men baserte det på leverandørdetaljene denne gangen.
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.
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.
Den har en kort liste over land på venstre side.
Antriksh opprettet et mål for Top N Countries by Sales . Jeg har listen sortert fra høyeste til laveste, som indikert av nedoverpilen.
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.
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 .
Dette er grunnen til at jeg laget et annet kort nederst som bruker en revidert versjon av målet som ble brukt ovenfor.
Legg merke til at de fire nederste nå samsvarer med rekkefølgen jeg ønsket – Armenia , Thailand , Syria og Kirgisistan .
La oss gå inn på DAX-målene bak disse kortene. Jeg starter med målet som Antriksh laget for det første kortet.
Det opprinnelige målet har over 97 rader for å få resultatene vi så på det første kortet.
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.
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.
Som du kan se, er det bare 41 rader i min reviderte formel.
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.
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.
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.
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.
Siden det første trinnet er enkelt, la oss gå videre til trinn to.
Det andre trinnet starter medfunksjon.
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.
Her er N lik 4 fordi jeg vil at de fire øverste og de fire nederst skal vises.
Den setter også et prefiks for Topp og N, pluss en bindestrek.
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.
La oss nå gå til det fjerde trinnet. Det er her jeg begynner å komme opp med de forventede resultatene.
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.
Deretter brukte jegfunksjon, som bruker anleggsplasseringsdata.
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.
Det femte trinnet i tiltaket starter med å erstatte det siste kommaet på listen med et And .
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.
Dette er hva som blir oppnådd i trinn fem. Det er å lage en liste og bruke funksjonen for LastCommaPosition .
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 -".
Den eneste forskjellen her er at jeg vil at den skal vises som "Bunn 4 -" i stedet for "Topp 4 -".
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.
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 .
Det niende trinnet avslutter dette tiltaket.
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 .
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.
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.
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.
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 .
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.
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.
Dette betyr at vi ser de riktige resultatene for planter.
Denne gangen, la oss se på et kort som rangerer leverandører etter mangler .
Jeg går til Leverandørsiden denne gangen for å se om Dablist er toppleverandøren og Yombu er verst basert på defekter.
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å.
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.
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 .
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.
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.
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 .
Når jeg trekker opp målet, vil du se at det har de samme 41 radene som Plants / Vendors By Downtime Minutes .
På trinn 1 refererte jeg imidlertid bare til leverandørdata og fjernet fabrikkplassering.
Jeg endret dataene andre steder der det også er aktuelt.
Jeg beholdt nedetidsminutter siden det er dette jeg baserer resultatene på.
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 .
Nok en gang ser vi bare på leverandøren her.
Det jeg endret her er referansen til Downtime Minutes . I stedet brukte jeg Defects .
Jeg sørget også for at de andre radene fortsatt bruker dataene for leverandøren.
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
Denne opplæringen gir en oversikt over Power Query Editor og M-språket på LuckyTemplates-skrivebordet.
Lær hvordan du lager en paginert rapport, legger til tekster og bilder og deretter eksporterer rapporten til ulike dokumentformater.
Lær hvordan du bruker SharePoint-automatiseringsfunksjonen til å lage arbeidsflyter og hjelpe deg med å mikroadministrere SharePoint-brukere, -biblioteker og -lister.
Utvid rapportutviklingsferdighetene dine ved å bli med i en dataanalyseutfordring. Akseleratoren kan hjelpe deg å bli en LuckyTemplates-superbruker!
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.
Forstå konseptet med variabler i DAX i LuckyTemplates og implikasjonene av variabler for hvordan målene dine beregnes.
Lær mer om det tilpassede visuelle bildet kalt LuckyTemplates Slope-diagram, som brukes til å vise økning/reduksjon for en enkelt eller flere beregninger.
Oppdag fargetemaene i LuckyTemplates. Disse er avgjørende for at rapportene og visualiseringene dine skal se ut og fungere sømløst.
Å beregne et gjennomsnitt i LuckyTemplates kan gjøres på mange måter for å gi deg nøyaktig informasjon for bedriftsrapportene dine.
La oss fordype oss i Standard LuckyTemplates-tema, og gjennomgå noen av funksjonene som er innebygd i selve LuckyTemplates Desktop-applikasjonen.