Hvad er Power Query & M Language: En detaljeret oversigt
Denne vejledning giver et overblik over Power Query Editor og M-sproget inde på LuckyTemplates-skrivebordet.
I denne tutorial vil jeg vise dig nogle detaljerede DAX-måleanalyser om, hvordan jeg sammensætter en af mine yndlingssider i den rapport, jeg indsendte til den 10. LuckyTemplates Challenge.
Rangeringssiden bruger en masse udfordrende DAX-mål . Men med hjælp fra en af vores LuckyTemplates-eksperter, Antriksh Sharma, plus en vis forgrening, var jeg i stand til at få de resultater, jeg ønskede.
Indholdsfortegnelse
Rangeringssideoversigt
Før vi hopper ind i vores DAX-målanalyse, vil jeg gerne vise dig de forskellige dele af siden, som vi arbejder på i dag.
Sådan ser siden Rankings ud. I modsætning til de andre sider i min rapport, indeholder denne for det meste kort.
Hvert af disse kort blev lavet ved hjælp af den indbyggede kortvisual i LuckyTemplates-skrivebordet under Visualiseringsruden.
Det giver dig mulighed for at navigere tilbage til andre sider i rapporten gennem disse ikoner her øverst.
Jeg diskuterede de andre sider i denne rapport i de andre selvstudier. Hvis du ser de andre sider i denne rapport, vil du se, at de også har ikoner, der fører til denne rangeringsside .
Venstre side af siden viser de overordnede fire øverste planter og leverandører, mens højre side viser de nederste fire.
Jeg oprettede også individuelle DAX-mål for at få mere specifikke resultater. Disse tre øverst viser for eksempel de fire øverste og de nederste fire fabrikker og leverandører baseret på nedetidsminutter , gennemsnitlige nedetidsminutter og defekter .
Jeg gik endnu mere specifik på den nederste del af rapportsiden. På venstre side fik jeg de øverste fire og de nederste fire anlæg baseret på nedetidsminutter, gennemsnitlige nedetidsminutter og defekter.
Til højre gjorde jeg det samme, men baserede det på leverandørdetaljerne denne gang.
Mens jeg gennemgår denne tutorial, vil jeg fortælle dig historien om, hvordan jeg kom på ideen til denne side. Derefter vil jeg give dig en trin-for-trin oversigt over, hvordan hver af disse målinger blev oprettet.
Få ideer til de DAX-foranstaltninger, du kan bruge
Jeg fik ideen til DAX-målene i denne slide fra en af vores, Antriksh. Han er en DAX-guru og er god til at optimere foranstaltninger. Det var sjovt at arbejde sammen med ham på denne DAX-målanalyse.
Omkring to uger før den 10. LuckyTemplates Challenge blev annonceret, havde vi en samtale på Skype om en PBIX-fil, han lagde ud på LuckyTemplates Forum.
Som du kan se, inkluderede jeg et billede af Antriksh, fordi han var inspirationen bag siden, som vi vil diskutere her. Jeg fortalte ham, at jeg ville give ham kredit, da jeg kom til at fuldføre denne tutorial.
Modellen er enkel og bruger nogle grundlæggende data som kunde, produkter og salg.
Den har en kort liste over lande til venstre.
Antriksh oprettede et mål for Top N Countries by Sales . Jeg har listen sorteret fra højeste til laveste, som angivet med pil ned.
Til højre er der et kort, der viser de fire øverste og de nederste fire lande. Top fire-listen viser USA , Australien , Storbritannien og Tyskland , som matcher top fire på listen.
De nederste fire dukker dog op i den modsatte rækkefølge. I stedet for at gå fra bunden, som er Armenien , startede den på 5. pladsen på listen, som er Kirgisistan .
Det er grunden til, at jeg lavede et andet kort nederst, der bruger en revideret version af det mål, der blev brugt ovenfor.
Læg mærke til, at de fire nederste nu matcher den rækkefølge, jeg ønskede – Armenien , Thailand , Syrien og Kirgisistan .
Lad os gå ind i DAX-målene bag disse kort. Jeg starter med det mål, som Antriksh lavede til det første kort.
Det originale mål har over 97 rækker for at få de resultater, vi så på det første kort.
Når vi scroller ned til 20. række, kan vi se, at Antriksh brugte ASC . Det er grunden til, at de fire nederste dukkede op, som de gjorde.
Nu hvor jeg ved, hvor problemet startede, vil jeg vise dig, hvordan mit reviderede mål ser ud.
Lad mig fremhæve det andet kort, så jeg kan vise dig målet bag det.
Som du kan se, er der kun 41 rækker i min reviderede formel.
Jeg arbejdede sammen med Antriksh for at skrumpe det med 60 % eller 70 % end det oprindelige mål. Ikke alene er det mindre kompliceret, det giver mig også de resultater, jeg har brug for – med de fire øverste starter fra 1. til 4. og de nederste fire starter fra 8. til 5..
Et par uger efter min diskussion med Antriksh blev den 10. LuckyTemplates Challenge lanceret. En del af kravene indebar et rangeringssystem, som fik mig til at tænke tilbage på Antrikshs DAX-mål. Jeg indså, at jeg kan kopiere og indsætte målingen og derefter anvende en vis forgrening for at komme frem til de resultater, jeg har brug for.
Dax-måleanalyse: Opbygning af mål trin for trin
Nu vil jeg nedbryde de mål, jeg brugte til rangeringssiden for at få de resultater, jeg ønskede. Denne DAX-måleanalyse kan hjælpe mig med at forklare, hvordan målingen fungerer, i betragtning af hvor mange rækker det tog at fuldføre den.
I mine andre selvstudier har jeg vist, hvordan jeg kan lide at gruppere mine mål for at gøre tingene mere organiserede . Så jeg oprettede en undermappe til Top N v2.
I denne mappe er mit mål for Top N Plants Vendors Downtime Minutes . Du vil se, at den har de samme 41 linjer kode, som jeg viste dig tidligere, mens jeg diskuterede Antrikshs mål. Grundlæggende var alt, hvad jeg skulle gøre, at erstatte nogle elementer for at få de resultater, jeg ønsker.
For at opdele dette bedre opdelte jeg hele dette mål i 9 forskellige dele. Jeg vil gennemgå hvert af disse trin fra et til ni og forklare, hvad hver af disse udretter.
Målingen bruger en række variable, så jeg kan få klarere resultater. Indstilling af disse variabler hjælper slutbrugeren med at se, hvordan målingen hænger sammen, og forklarer detaljerne om, hvordan jeg fik hvert resultat.
Lad os starte med det første trin, som sætterkaldet BaseTable.
I denne BaseTable kan du se, at jeg referererdata for fabriksplacering og leverandør .
Når du går tilbage til PBIX-filen, vil du se det øverste kort, der refererer til både planter og leverandører. Det er derfor, jeg har brug for alle data her, i modsætning til kortet længere nede, som også er til nedetidsminutter, men kun bruger anlægsplaceringsdata.
Da det første trin er ligetil, lad os gå videre til trin to.
Det andet trin starter medfungere.
Denne funktion refererer til den variabel , jeg oprettede i trin 1, og nedetidsminutterne .
Den sørger for, at en værdi dukker op ved at sammensætteogfunktioner. Jeg ønsker også, at resultaterne skal være større end eller lig med nul. Det skyldes, at datasættet, der blev brugt til denne rapport, inkluderede nogle kombinationer, hvor enten fabrikken eller leverandøren er tom. Der er også poster, hvor værdien er nul.
Det tredje trin involverer endnu et sæt variabler, der starter med værdien for N.
Her er N lig med 4, fordi jeg vil have de fire øverste og de nederste fire til at dukke op.
Den sætter også et præfiks for Top & N plus en bindestreg.
Når det er sat sammen, vil det blot vise "Top 4 -", hvilket er, hvordan det tilsvarende kort starter, før det opregner de forventede resultater.
Lad os nu gå til det fjerde trin. Det er her, jeg begynder at komme med de forventede resultater.
Nogle ville overveje at brugeI dette tilfælde. Jeg prøver trods alt at rangere bidragene og komme med de bedste resultater. Det følte Antriksh og jeg dogville være mere passende i dette tilfælde, da vi kun har brug for de fire bedste i ASC- rækkefølge.
Dernæst brugte jegfunktion, som bruger planteplaceringsdata.
Det indstiller også formatet på, hvordan jeg ønsker, at listen skal vises. Det er derfor, du vil se, at den har en omvendt skråstreg og et komma, plus anførselstegn for at angive mellemrum. Den er også indstillet til ASC- rækkefølge, så hvis jeg går tilbage til PBIX-filen, vil du se listen over de fire øverste med skråstreger og kommaer mellem resultaterne.
Det femte trin i takten starter med at erstatte det sidste komma på listen med et And .
Når du går tilbage til diaset, vil du se, at den sidste post har et "og" før leverandørens og fabrikkens placering.
Dette er, hvad der bliver opnået i trin fem. Det er at oprette en liste og bruge funktionen til LastCommaPosition .
Bemærk, at dette siger, at N er større end 2. Det betyder, at substitutionen sker efter 3. streng.
Det sjette trin vil se bekendt ud, fordi det grundlæggende kopierer det samme, som jeg gjorde øverst for at starte listen med "Top 4 -".
Den eneste forskel her er, at jeg ønsker, at den skal vises som "Bund 4 -" i stedet for "Top 4 -".
Den del, jeg tidligere diskuterede om at brugebruges igen her i bunden, men nu kalder jeg variablen BottomData i stedet for TopData. Igen indsætter denne del skråstreg og komma mellem navnene på fabrikkerne og leverandørerne.
Når vi ser tilbage på Antrikshs oprindelige mål, er dette også den samme del, hvor han brugte ASC , hvilket resulterede i, at listen ikke kom ud som forventet. Derfor bruger jeg DESC her i stedet.
Så dybest set, på dette tidspunkt og fremefter, er det meste af det bare kopieret og indsat fra de tidligere dele af takten. Jeg erstatter bare ordet "Top" med "Bund" i de fleste tilfælde.
Til trin 8 vil jeg ændre det sidste komma med ordet And .
Det niende trin afslutter denne foranstaltning.
Dette brugerfunktion med tallet 10. Dette sikrer, at Top 4 og Bund 4 vises på separate linjer. Tænk på det som returtasten på dit tastatur. Det får dig til at gå ned til næste række, så de øverste og nederste fire ikke dukker op på en enkelt linje.
Bekræftelse af resultaterne
Antriksh og jeg var i stand til at trimme de originale 90 plus rækker af DAX ned til 41 linjer. Dog kan 41 linjer stadig være meget for nogle brugere. At nedbryde denne målestok, som vi gjorde, var en god måde at forstå, hvorfor målingen skulle skrives på den måde.
Nu hvor jeg har forklaret, hvad hvert trin handlede om, er det tid til at kontrollere, om den foranstaltning virkelig gør, hvad den skal. Lad os gå til rangeringssiden og verificere resultaterne med den anden del af rapporten.
Jeg starter med anlæg/leverandører efter nedetid minutter .
Dette viser top fire som Linktype i New Britain, Flashpoint i Frazer, Quinu i Twin Rocks og Layo i Henning. Hvad angår de fire nederste, viser den Wikido i Middletown som den dårligste samlet set.
Nu går jeg over til siden for Sælgere og planter kombineret for at se, om resultaterne stemmer overens.
Med kolonnen Rangér efter nedetidsminutter sorteret fra top til bund viser den det korrekte resultat for de fire øverste.
Nogle af jer vil måske undre sig over, hvorfor New Britain dukker op på andenpladsen på denne liste, når det kommer op på toppen af ranglistens sidekort .
Bemærk, at ranglisten viser tre poster som top 1. Disse blev rangeret ved hjælp af 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å ranglisten, at New Britain stadig kom ud over Frazer og Twin Rocks også selvom de alle var placeret som nummer et.
Lad os nu tjekke, om de nederste fire er korrekte. Du skal bare sortere efter nedetidsminutter i faldende rækkefølge.
Som du kan se, viser den Middletown, Waldoboro, Barling og Chesaning som de nederste fire på kortet. Det betyder, at målet for anlæg/leverandører efter nedetidsminutter er korrekt.
Lad os nu se på kortet for Plants By Downtime Minutes .
Dette viser, at de fire bedste er Reading, Middletown, Waldoboro og Clarksville. De fire nederste er Riverside, Charles City, Twin Rocks og Chesaning.
For at verificere disse resultater vil jeg tjekke på siden Planter og se, om resultaterne stemmer overens. Den største forskel her er, at det kort, vi tidligere verificerede, var baseret på både Plants og Vendors data, hvorimod dette kun ser på Plants data.
Når vi sorterer rangeringen efter nedetidsminutter fra top til bund, viser det, at de fire øverste er Reading, Middletown, Waldoboro og Clarksville.
Lad os nu vende rangeringen denne gang for at se, om de fire nederste matcher. Du vil se, at ud af de 30 planter på vores liste får Riverside, Charles City, Twin Rocks og Chesaning de nederste rækker.
Det betyder, at vi ser de rigtige resultater for planter.
Lad os denne gang se på et kort, der rangerer Leverandører efter mangler .
Jeg vil gå til siden Leverandører denne gang for at se, om Dablist er den bedste leverandør, og Yombu er den værste baseret på defekter.
Når vi sorterer leverandørerne fra bedst til værst, ser det ud til, at de fire øverste passer til kortet på rangeringssiden .
Lad mig skifte rang fra dårligst til bedst og se, om de fire nederste også matcher.
Du vil se, at Yombu faktisk er den værste, sammen med de tre andre inkluderet på de fire nederste liste på kortet.
Dax-måleanalyse: Anvendelse af måleforgrening
DAX-måleanalysen, som vi lavede tidligere, så kun på målingen bag Plants/Vendors By Downtime Minutes . Men hvordan arbejdede jeg med målene for de andre kort? Det er herkommer i.
Målforgrening involverer brugen af et eksisterende mål til at udlede andre resultater.
I denne rapport kopierede og indsatte jeg simpelthen det mål, vi diskuterede tidligere, og ændrede nogle af elementerne, så de passer til det, jeg har brug for.
Navnet på foranstaltningen er åbenbart det første, jeg vil ændre. Men mere end det, så skal jeg også ændre de data, jeg refererer til. For eksempel brugte vi både anlægsplacering og leverandørdata til vores oprindelige mål.
Men hvis jeg skal bruge det samme mål for Plants By Downtime Minutes , så bliver jeg nødt til at fjerne leverandørdata og bare fokusere på Plant Location.
Jeg bliver nødt til at ændre det for alle de andre dele af det samme mål, der også refererer til begge datasæt, som da jeg brugte CONCATENATEX .
Det samme gælder for nedetidsminutterne . Hvis jeg skulle arbejde på et kort, der ser på Gennemsnitlige nedetidsminutter eller defekter , så skal jeg bare ændre denne del.
Hvad angår den del, hvor der står "@DowntimeMins" i målingen, ville det ikke skade at holde det på den måde, selvom jeg refererer til mine defekter eller mine gennemsnitlige nedetidsminutter.
Men hvis du er typen, der kan lide at holde tingene i en bestemt rækkefølge, kan du også gå ind og ændre dette. Bare husk, at hvis du ændrer dette, skal du ændre det hele vejen igennem siden. Det betyder, at der skal ydes en ekstra indsats for de samme resultater.
Du kan lige forestille dig, hvor meget tid jeg sparede ved at bruge måleforgrening . At gøre det på denne måde betyder, at jeg ikke behøver at blive ved med at oprette nye foranstaltninger for hver del af rapporten, jeg arbejder på. Jeg skal bare justere den eksisterende foranstaltning baseret på de resultater, jeg ønsker at se, hvilket reducerer min rapportudviklingstid en hel del.
For at vise dig, hvordan jeg gjorde det, lad os se på Leverandører efter nedetidsminutter .
Når jeg trækker målet op, vil du se, at det har de samme 41 rækker som Plants / Vendors By Downtime Minutes .
På trin 1 henviste jeg dog kun til leverandørdata og fjernede fabriksplacering.
Jeg har ændret dataene andre steder, hvor det også er relevant.
Jeg beholdt nedetidsminutter, da det er det, jeg baserer resultaterne på.
Så det er hurtige løsninger til foranstaltningen, så den kan anvendes på de andre områder af rapporten.
Lad mig vise dig et andet eksempel her. Denne gang, lad os se på Leverandører ved defekter .
Endnu en gang kigger vi bare på sælgeren her.
Det, jeg ændrede her, er henvisningen til Downtime Minutes . I stedet brugte jeg Defects .
Jeg sørgede også for, at de andre rækker stadig bruger data for Leverandør.
Konklusion
Det var noget kraftfuldt DAX-værk af Antriksh. Jeg nød bestemt at arbejde med det , forgrene det og anvende det på de forskellige dele af min rapport .
Den dybdegående DAX-målingsanalyse, vi lavede, var også en fantastisk måde at forstå alle aspekter af processen på. At arbejde på et langt mål kan virke skræmmende i starten, men en grundig DAX-målanalyse som denne kan hjælpe med at ordne tingene.
Arbejdet på denne side understregede også vigtigheden af at have et samarbejdsfællesskab som det, vi har her på LuckyTemplates. Det er dejligt, at alle har mulighed for at arbejde med folk som Antriksh, såvel som andre medlemmer og eksperter, der også har et par egne tips og tricks.
Alt det bedste,
Jarrett
Denne vejledning giver et overblik over Power Query Editor og M-sproget inde på LuckyTemplates-skrivebordet.
Lær, hvordan du opretter en sideinddelt rapport, tilføjer tekster og billeder og derefter eksporterer din rapport til forskellige dokumentformater.
Lær, hvordan du bruger SharePoint-automatiseringsfunktionen til at skabe arbejdsgange og hjælpe dig med at mikrostyre SharePoint-brugere, -biblioteker og -lister.
Udvid dine rapportudviklingsevner ved at deltage i en dataanalyseudfordring. Acceleratoren kan hjælpe dig med at blive LuckyTemplates-superbruger!
Lær, hvordan du beregner løbende totaler i LuckyTemplates ved hjælp af DAX. Løbende totaler giver dig mulighed for ikke at blive fanget af et individuelt resultat.
Forstå konceptet med variabler i DAX i LuckyTemplates og betydningen af variabler for, hvordan dine mål beregnes.
Lær mere om det brugerdefinerede visuelle kaldet LuckyTemplates Slope-diagrammet, som bruges til at vise stigning/fald for en enkelt eller flere metrics.
Opdag farvetemaerne i LuckyTemplates. Disse er afgørende for, at dine rapporter og visualiseringer kan se ud og fungere problemfrit.
Beregning af et gennemsnit i LuckyTemplates kan gøres på mange måder for at give dig præcise oplysninger til dine virksomhedsrapporter.
Lad os dykke ned i Standard LuckyTemplates-temaer og gennemgå nogle af de funktioner, der er indbygget i selve LuckyTemplates Desktop-applikationen.