Vad är Power Query & M Language: En detaljerad översikt
Denna handledning ger en översikt över Power Query Editor och M-språket på LuckyTemplates-skrivbordet.
I den här handledningen kommer jag att visa dig lite detaljerad DAX-mätanalys om hur jag satte ihop en av mina favoritsidor i rapporten jag skickade in för den 10:e LuckyTemplates Challenge.
Rankingssidan använder många utmanande DAX-mått . Men med hjälp av en av våra LuckyTemplates-experter, Antriksh Sharma, plus en viss åtgärdsförgrening, kunde jag få de resultat jag ville ha.
Innehållsförteckning
Ranking Sidöversikt
Innan vi går in i vår DAX-mätanalys vill jag visa dig de olika delarna av sidan som vi arbetar med idag.
Så här ser sidan Rankings ut. Till skillnad från de andra sidorna i min rapport innehåller denna mest kort.
Vart och ett av dessa kort gjordes med den inbyggda kortvisualen i LuckyTemplates skrivbord under rutan Visualiseringar.
Det låter dig navigera tillbaka till andra sidor i rapporten genom dessa ikoner här överst.
Jag diskuterade de andra sidorna i denna rapport i de andra handledningarna. Om du ser de andra sidorna i den här rapporten ser du att de också har ikoner som leder till den här rankningssidan .
Den vänstra sidan av sidan visar de fyra övergripande växterna och leverantörerna medan den högra sidan visar de fyra nedersta.
Jag skapade även individuella DAX-mått för att få mer specifika resultat. Dessa tre överst visar till exempel de fyra översta och de fyra nedersta anläggningarna och leverantörerna baserat på stilleståndsminuter , genomsnittliga stilleståndsminuter och defekter .
Jag gick ännu mer specifik på den nedre delen av rapportsidan. På vänster sida fick jag de fyra översta och de nedre fyra plantorna baserat på stilleståndsminuter, genomsnittliga stilleståndsminuter och defekter.
Till höger gjorde jag samma sak men baserade det på leverantörsuppgifterna den här gången.
När jag går igenom den här handledningen kommer jag att berätta historien om hur jag kom på idén till den här sidan. Sedan ska jag ge dig en steg-för-steg-uppdelning av hur var och en av dessa åtgärder skapades.
Få idéer för DAX-måtten att använda
Jag fick idén till DAX-måtten i den här bilden från en av våra, Antriksh. Han är en DAX-guru och är bra på att optimera åtgärder. Det var roligt att arbeta med honom på denna DAX-mätanalys.
Ungefär två veckor innan den 10:e LuckyTemplates-utmaningen tillkännagavs hade vi en konversation på Skype om en PBIX-fil som han lade upp på LuckyTemplates-forumet.
Som ni kan se inkluderade jag en bild på Antriksh eftersom han var inspirationen bakom sidan som vi kommer att diskutera här. Jag sa till honom att jag skulle ge honom kredit när jag kom att slutföra den här handledningen.
Modellen är enkel och använder en del grundläggande data som kund, produkter och försäljning.
Den har en kort lista över länder på vänster sida.
Antriksh skapade ett mått för Top N Countries by Sales . Jag har listan sorterad från högsta till lägsta, som indikeras av nedåtpilen.
Till höger finns ett kort som visar de fyra översta och de fyra nedersta länderna. Topp fyra-listan visar USA , Australien , Storbritannien och Tyskland , som matchar de fyra bästa på listan.
De fyra nedersta visas dock i motsatt ordning. Istället för att gå från botten, som är Armenien , började det på 5:e plats på listan, vilket är Kirgizistan .
Det är därför jag gjorde ett annat kort längst ner som använder en reviderad version av måttet ovan.
Lägg märke till att de fyra nedersta nu matchar den ordning jag ville ha – Armenien , Thailand , Syrien och Kirgizistan .
Låt oss gå in på DAX-måtten bakom dessa kort. Jag börjar med måttet som Antriksh skapade för det första kortet.
Det ursprungliga måttet har över 97 rader för att få resultaten vi såg på det första kortet.
När vi scrollar ner till 20:e raden kan vi se att Antriksh använde ASC . Det är anledningen till att de fyra nedersta visade sig som de gjorde.
Nu när jag vet var problemet började ska jag visa dig hur mitt reviderade mått ser ut.
Låt mig markera det andra kortet så att jag kan visa dig måttet bakom det.
Som du kan se finns det bara 41 rader i min reviderade formel.
Jag arbetade med Antriksh för att krympa det med 60 % eller 70 % än det ursprungliga måttet. Det är inte bara mindre komplicerat, det ger mig också de resultat jag behöver – med de fyra bästa som börjar från 1:a till 4:e, och de fyra nedersta börjar från 8:e till 5:e.
Ett par veckor efter min diskussion med Antriksh lanserades den 10:e LuckyTemplates Challenge. En del av kraven innebar ett rankningssystem, vilket fick mig att tänka tillbaka på Antrikshs DAX-mått. Jag insåg att jag kan kopiera och klistra in måttet, och sedan tillämpa någon åtgärdsförgrening för att komma fram till de resultat jag behöver.
Dax-mätanalys: Bygg måttet steg för steg
Nu ska jag dela upp de mått som jag använde för rankningssidan för att få de resultat jag ville ha. Denna DAX-måttanalys kan hjälpa mig att förklara hur måttet fungerar, med tanke på hur många rader det tog att slutföra det.
I mina andra handledningar har jag visat hur jag gillar att gruppera mina åtgärder för att göra saker mer organiserade . Så jag skapade en undermapp för Top N v2.
Inom den här mappen finns mitt mått för Top N Plants Vendors Downtime Minutes . Du kommer att se att den har samma 41 rader kod som jag visade dig tidigare när jag diskuterade Antrikshs mått. I princip var allt jag behövde göra att byta ut några föremål för att få de resultat jag vill ha.
För att dela upp det här bättre delar jag upp hela måttet i 9 olika delar. Jag kommer att gå över vart och ett av dessa steg från ett till nio och förklara vad var och en av dessa åstadkommer.
Måttet använder ett antal variabler för att jag ska få tydligare resultat. Att ställa in dessa variabler hjälper slutanvändaren att se hur måttet går ihop och förklarar detaljerna om hur jag fick varje resultat.
Låt oss börja med det första steget, som ställer inkallas BaseTable.
I denna BaseTable kan du se att jag refererardata för anläggningsplats och leverantör .
När du går tillbaka till PBIX-filen ser du det översta kortet som refererar till både växterna och leverantörerna. Det är därför jag behöver all data här, till skillnad från kortet längre ner, som också är för stilleståndsminuter, men bara använder anläggningsplatsdata.
Eftersom det första steget är enkelt, låt oss gå vidare till steg två.
Det andra steget börjar medfungera.
Denna funktion refererar till variabeln som jag skapade i steg 1 och stilleståndsminuterna .
Den ser till att ett värde dyker upp genom att sätta ihopochfunktioner. Jag vill också att resultaten ska vara större än eller lika med noll. Det beror på att datamängden som användes för den här rapporten inkluderade några kombinationer där antingen anläggningen eller leverantören är tom. Det finns också poster där värdet är noll.
Det tredje steget involverar ytterligare en uppsättning variabler, som börjar med värdet för N.
Här är N lika med 4 eftersom jag vill att de fyra översta och de fyra nedersta ska dyka upp.
Den anger också ett prefix för Top & N, plus ett bindestreck.
När det sätts ihop vill det helt enkelt visa "Top 4 -", vilket är hur motsvarande kort börjar innan det räknar upp de förväntade resultaten.
Låt oss nu gå till det fjärde steget. Det är här jag börjar komma med de förväntade resultaten.
Vissa skulle fundera på att användaI detta fall. Jag försöker trots allt rangordna bidragen och komma fram till de bästa resultaten. Antriksh och jag kände dock detskulle vara mer lämpligt i det här fallet eftersom vi bara behöver de fyra bästa i ASC- ordning.
Därefter använde jagfunktion, som använder anläggningsplatsdata.
Det ställer också in formatet på hur jag vill att listan ska visas. Det är därför du kommer att se att den har ett snedstreck och ett kommatecken, plus citattecken för att beteckna mellanslag. Den är också inställd på ASC- ordning så om jag går tillbaka till PBIX-filen kommer du att se listan över de fyra översta med snedstreck och kommatecken mellan resultaten.
Det femte steget i måttet börjar med att ersätta det sista kommatecken på listan med ett And .
När du går tillbaka till bilden ser du att den sista posten har ett "och" före leverantörens och anläggningens plats.
Detta är vad som uppnås i steg fem. Det skapar en lista och använder funktionen för LastCommaPosition .
Lägg märke till att detta säger att N är större än 2. Detta betyder att substitutionen sker efter den 3:e strängen.
Det sjätte steget kommer att se bekant ut eftersom det i princip kopierar samma sak som jag gjorde på toppen för att starta listan med "Top 4 -".
Den enda skillnaden här är att jag vill att den ska visas som "Bottom 4 -" istället för "Top 4 -".
Den del jag tidigare diskuterat om att användaanvänds återigen här längst ner, men nu kallar jag variabeln BottomData istället för TopData. Återigen, den här delen infogar snedstrecket och kommatecken mellan namnen på anläggningarna och leverantörerna.
När vi ser tillbaka på Antrikshs ursprungliga mått så är detta också samma del där han använde ASC , vilket resulterade i att listan inte kom ut som jag förväntat mig. Det är därför jag använder DESC här istället.
Så i princip, vid denna tidpunkt och framåt, är det mesta bara kopierat och inklistrat från de tidigare delarna av måttet. Jag ersätter bara ordet "Topp" med "Bottom" i de flesta fall.
För steg 8 vill jag ändra det sista kommatecken med ordet And .
Det nionde steget avslutar denna åtgärd.
Detta använderfunktion med siffran 10. Detta säkerställer att Top 4 och Bottom 4 visas på separata rader. Tänk på det som returtangenten på ditt tangentbord. Det får dig att gå ner till nästa rad så att de översta och nedersta fyrana inte dyker upp på en enda rad.
Verifiera resultaten
Antriksh och jag kunde trimma ner de ursprungliga 90 plus-raderna av DAX till 41 rader. Men 41 rader kan fortfarande vara mycket för vissa användare. Att bryta ner det måttet som vi gjorde var ett bra sätt att förstå varför måttet måste skrivas på det sättet.
Nu när jag har förklarat vad varje steg handlade om, är det dags att verifiera om den åtgärden verkligen gör vad den ska göra. Låt oss gå till rankningssidan och verifiera resultaten med den andra delen av rapporten.
Jag börjar med anläggningar/leverantörer efter stilleståndsminuter .
Detta visar topp fyra som Linktype i New Britain, Flashpoint i Frazer, Quinu i Twin Rocks och Layo i Henning. När det gäller de fyra nedersta visar det Wikido i Middletown som den sämsta totalt sett.
Nu ska jag gå över till sidan för leverantörer och växter kombinerade för att se om resultaten kommer att matcha.
Med kolumnen Rang efter stilleståndsminuter sorterad från topp till botten visar den rätt resultat för de fyra översta.
En del av er kanske undrar varför New Britain hamnar på andra plats på den här listan, när den kommer upp på sidan med Rankings .
Lägg märke till att rankningen visar tre bidrag som topp 1. Dessa rankades med RANKX.
Men om du tittar på kolumnen för Downtime Minutes , visar den att New Britain visar 0 medan Frazer och Twin Rocks vardera visar 1. Det är därför på kortet på rankningssidan, New Britain fortfarande kom ut över Frazer och Twin Rocks även om de alla var rankade som etta.
Låt oss nu kontrollera om de fyra nedersta är korrekta. Sortera bara rangordning efter stilleståndsminuter i fallande ordning.
Som du kan se visar den Middletown, Waldoboro, Barling och Chesaning som de fyra nedersta på kortet. Detta betyder att måttet för anläggningar/leverantörer efter stilleståndsminuter är korrekt.
Låt oss nu titta på kortet för Plants By Downtime Minutes .
Detta visar att de fyra bästa är Reading, Middletown, Waldoboro och Clarksville. De fyra nedersta är Riverside, Charles City, Twin Rocks och Chesaning.
För att verifiera dessa resultat ska jag kolla på sidan Växter och se om resultaten matchar. Den största skillnaden här är att kortet vi tidigare verifierade var baserat på både växt- och leverantörsdata, medan det här bara tittar på växtdata.
När vi sorterar rankningen efter stilleståndsminuter från topp till botten visar det att de fyra bästa är Reading, Middletown, Waldoboro och Clarksville.
Låt oss nu vända om rangordningen den här gången för att se om de fyra nedersta matchar. Du kommer att se att av de 30 växterna på vår lista kommer Riverside, Charles City, Twin Rocks och Chesaning i botten.
Det betyder att vi ser rätt resultat för växter.
Den här gången ska vi titta på ett kort som rankar leverantörer efter defekter .
Jag ska gå till sidan för leverantörer den här gången för att se om Dablist är den bästa leverantören och Yombu är den sämsta baserat på defekter.
När vi sorterar leverantörerna från bäst till sämst ser det ut som att de fyra översta matchar kortet på sidan Rankings .
Låt mig byta rang från sämst till bäst och se om de fyra nedersta matchar också.
Du kommer att se att Yombu verkligen är värst, tillsammans med de andra tre som ingår i de fyra nedersta listan på kortet.
Dax Measure Analysis: Tillämpa måttförgreningar
DAX-måttanalysen som vi gjorde tidigare tittade bara på måttet bakom Plants/Vendors By Downtime Minutes . Men hur arbetade jag med måtten för de andra korten? Det är härkommer in.
Åtgärdsgrening innebär användning av ett befintligt mått för att härleda andra resultat.
I den här rapporten kopierade och klistrade jag helt enkelt in måttet vi diskuterade tidigare och ändrade några av elementen för att passa det jag behöver.
Namnet på åtgärden är uppenbarligen det första jag ska ändra. Men mer än så måste jag också ändra data jag refererar till. Till exempel använde vi både anläggningsplats och leverantörsdata för vårt ursprungliga mått.
Men om jag ska använda samma mått för Plants By Downtime Minutes , då måste jag ta bort leverantörsdata och bara fokusera på Plant Location.
Jag måste ändra det för alla andra delar av samma mått som också refererar till båda datauppsättningarna, som när jag använde CONCATENATEX .
Detsamma gäller för stilleståndsminuterna . Om jag skulle arbeta med ett kort som tittar på Genomsnittliga stilleståndsminuter eller defekter , så behöver jag bara ändra den här delen.
När det gäller delen där det står "@DowntimeMins" i måttet, skulle det inte skada att hålla det så även om jag hänvisar till mina defekter eller mina genomsnittliga stilleståndsminuter.
Men om du är den typen som gillar att hålla saker i en viss ordning så kan du gå in och ändra på detta också. Kom bara ihåg att om du ändrar detta måste du ändra det hela vägen på sidan. Det innebär att man lägger ner lite extra ansträngningar för samma resultat.
Du kan bara föreställa dig hur mycket tid jag sparade genom att använda måttförgrening . Att göra på det här sättet innebär att jag inte behöver fortsätta skapa nya åtgärder för varje del av rapporten jag arbetar med. Jag behöver bara justera det befintliga måttet baserat på de resultat jag vill se, vilket minskar min rapportutvecklingstid avsevärt.
För att visa dig hur jag gjorde det, låt oss titta på Leverantörer efter stilleståndsminuter .
När jag drar upp måttet ser du att det har samma 41 rader som Plants / Vendors By Downtime Minutes .
Men i steg 1 refererade jag bara till leverantörsdata och tog bort anläggningsplats.
Jag ändrade data på andra ställen där det också är tillämpligt.
Jag behöll stilleståndsminuter eftersom det är detta jag baserar resultaten på.
Så det är snabba lösningar på åtgärden så att den kan tillämpas på de andra områdena i rapporten.
Låt mig visa dig ett annat exempel här. Den här gången ska vi titta på Leverantörer genom defekter .
Återigen tittar vi bara på säljaren här.
Det jag ändrade här är hänvisningen till Driftstoppsminuter . Istället använde jag Defects .
Jag såg också till att de andra raderna fortfarande använder data för leverantören.
Slutsats
Det var ett kraftfullt DAX-verk av Antriksh. Jag tyckte definitivt om att arbeta med det , förgrena det och tillämpa det på de olika delarna av min rapport .
Den djupgående DAX-mätanalys vi gjorde var också ett utmärkt sätt att förstå varje aspekt av processen. Att arbeta på ett långt mått kan verka skrämmande till en början, men en grundlig DAX-måttanalys som denna kan hjälpa till att reda ut saker och ting.
Arbetet på den här sidan betonade också vikten av att ha en samarbetsgemenskap som den vi har här på LuckyTemplates. Det är bra att alla har möjlighet att arbeta med personer som Antriksh, liksom andra medlemmar och experter som också har lite egna tips och tricks.
Med vänliga hälsningar,
Jarrett
Denna handledning ger en översikt över Power Query Editor och M-språket på LuckyTemplates-skrivbordet.
Lär dig hur du skapar en sidnumrerad rapport, lägger till texter och bilder och sedan exporterar din rapport till olika dokumentformat.
Lär dig hur du använder SharePoint-automatiseringsfunktionen för att skapa arbetsflöden och hjälpa dig att mikrohantera SharePoint-användare, bibliotek och listor.
Finslipa dina färdigheter i rapportutveckling genom att gå med i en dataanalysutmaning. Acceleratorn kan hjälpa dig att bli en LuckyTemplates superanvändare!
Lär dig hur du beräknar löpande summor i LuckyTemplates med DAX. Löpande summor låter dig inte fastna i ett individuellt resultat.
Förstå konceptet med variabler i DAX inom LuckyTemplates och konsekvenserna av variabler för hur dina mått beräknas.
Lär dig mer om den anpassade visual som kallas LuckyTemplates Slope-diagram, som används för att visa ökning/minskning för en enstaka eller flera mätvärden.
Upptäck färgteman i LuckyTemplates. Dessa är viktiga för att dina rapporter och visualiseringar ska se ut och fungera sömlöst.
Att beräkna ett genomsnitt i LuckyTemplates kan göras på många sätt för att ge dig exakt information för dina affärsrapporter.
Låt oss fördjupa oss i Standard LuckyTemplates-teman och granska några av funktionerna som är inbyggda i själva LuckyTemplates Desktop-applikationen.