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.
Låt oss ta en ny titt på problemet som diskuteras i , som dynamiskt jämförde de första N arbetsdagarna i varje månad. Det här problemet var baserat på en fråga från en LuckyTemplates-medlem på vårt forum, där han dynamiskt ville titta och jämföra de första 5, 10, 15 och 20 fakturerbara dagarna (de icke-helger och icke helgdagar) för en given månad med föregående månad.
Istället för att använda power query kommer vi med en DAX-kodningsspråkslösning. Du kan se hela videon av denna handledning längst ner på den här bloggen.
I den första videon kom jag på en lösning för energifrågan om hur man löser det här problemet. Men så kom en av våra LuckyTemplates-experter, Antriksh Sharma, på en briljant effektiv åtgärd som också är värd att ta en djupare dykning in i. Vi kommer att diskutera några av de tekniker han använde för att utveckla ett mått, som kommer att förse dig med ytterligare verktyg i din DAX-verktygslåda.
Det gjorde det verkligen för mig och för några av de andra experterna som tittade på detta. Jämförelsen av jämförbara arbetsdagar över månader är ett värdefullt mönster i allmänhet som kan användas i många situationer.
Låt oss dyka in i maktfrågan och ta en titt på vad Antriksh gjorde här. Vi har månad och år , total försäljning och slutligen den totala försäljningen för N arbetsdagar som vi valde med hjälp av power-query baserat på vad-om-parametern som vi utvecklade.
Antriksh tog ett helt annat tillvägagångssätt, där han använde en chockerande kort åtgärd för att lösa hela detta problem. Det första jag märkte med detta var användningen av kommandot.
Detta är en DAX-funktion som jag inte använder så ofta, men som passar perfekt för den här typen av problem. Om vi tar en titt på SQL BI DAX-guiden står det att GENERATE-funktionen är en tabellfunktion som använder två olika tabeller som indata, och sedan gör en motsvarighet till SQL-kommandot CROSS APPLY.
Så den tar en bastabell (Tabell1) och itererar på den, och tar sedan ett andra tabelluttryck och utvärderar det för varje rad i den första tabellen, och återgår sedan till tabellen som utdata.
Låt oss ta på oss Antrikshs mått och släppa det i bordet. Vi kan se att den ger exakt samma resultat som den power query-lösning som vi gjorde förra gången. Så det är bra och validerar båda måtten ganska bra.
Låt oss ta isär denna åtgärd. Det första filtret som används här är Dates[IsBusinessDay] = TRUE. Detta tar bort alla icke-helger och helgfria datum baserat på den utökade datumtabellen IsBusinessDay-fältet.
Vi pratar mycket mer om detta i , där vi också gick igenom hur man knyter det till vårt julbord.
Den intressanta delen av detta kommer verkligen i de två tabellingångarna. Den första tabellen är bara en kolumntabell i fältet Månad och år i tabellen Datum.
Men den andra tabellinmatningen är där det intressanta händer. Antriksh använde a och använde sedan vår dynamiska parameter som antalet rader i TOPN.
Måttet Total försäljning kopplas till den andra tabellen och tillämpas sedan på den första tabellen.
Innehållsförteckning
Förstå en komplex åtgärd med hjälp av DAX-kodningsspråk
Ett av de enklaste sätten att ta reda på vad en komplex åtgärd som denna gör är att gå in i tabellredigeraren . Vi kan ta en titt på detta uttryck och ta reda på vad detta TOPN-uttryck gör först.
Låt oss kopiera TOPN-delen och skapa en ny. Kom ihåg att DAX-frågor börjar med EVALUATE.
När vi klistrar in TOPN-delen ser vi att detta drar de första 5 datumen från försäljningsordertabellen. Det finns en tabell i TOPN som är sammansatt av värdena för alla orderdatum i försäljningstabellen.
Denna TOPN-funktion tar värdet på what-if-parametern (som i det här fallet är 5) och tillämpar det på fältet för försäljningsorderdatum. Sedan drar den de första 5 datumen inom filterkontexten i stigande ordning baserat på det fältet.
Med tanke på att det inte finns något extra filterkontext, är det bara att dra de första 5 datumen från hela tabellen.
Kolumnen @Sales lägger bara till den totala försäljningen inom rätt filterkontext till TOPN-tabellen.
Hittills har vi den första tabellen för månaden och året, den andra tabellen i TOPN för de första N-datumen från försäljningstabellen och sedan den totala försäljningen i samband med det.
Använda tabellen GENERATE i DAX-kodningsspråk
Låt oss ta en titt på vad denna GENERATE-tabell gör. Vi hoppar tillbaka till Tabular Editor och skapar en ny DAX-fråga.
Vi börjar som vi alltid gör med EVALUATE, klistra in GENERATE-delen av koden och klicka på 5.
Vi kan se att för varje rad i den första tabellen itereras och sammanfogas med de 5 raderna från TOPN-tabellen som utvärderas i sammanhang med @Sales-funktionen.
Det har tagit de första 5 arbetsdagarna i april, de första 5 arbetsdagarna i maj, de första 5 arbetsdagarna i juni och så vidare tills det kommer till slutet av den första tabellen.
Det är precis vad vi behöver, och nu blir det en relativt enkel fråga att lägga till dessa värden. Vi har resultatet (som är tabellvariabeln för GENERATE-resultaten) och sedan måste vi summera @Sales-funktionen.
I sammanhanget summerar vi nu de första 5 arbetsdagarna i april, de första 5 arbetsdagarna i maj, och så vidare tills vi kommer ner till vårt totala 23 737 430 USD, i vilket fall det inte har någon kontext av månad och år att fungera .
Detta summerar hela kolumnen @Sales och ger oss exakt samma summa som vi hade i vår lösning för power-query.
Du kan se att om vi ändrar slicern till 10 får vi dynamiskt samma resultat med DAX-kodningsspråk som vi gjorde i power-frågan.
Vi har också stapeldiagrammet längst ner som justeras dynamiskt för att återspegla de ändringar vi har gjort.
Justera dynamiskt mättitel
Det finns ytterligare ett knep jag ville visa dig. Du kan skapa en dynamisk justering på din vad-om-parameter och binda den dynamiskt till en måtttitel.
Om vi till exempel ändrar utsnittet överst till 15, kommer det dynamiskt att ändra namnet på måttet längst ned till Total försäljning för de första 15 arbetsdagarna i varje månad .
Det finns ett enkelt sätt att göra detta i DAX med . Vi tar i princip bara tre strängar. Den första är Total Sales for First , och sedan sammanfoga det med värdet som vi skördar från parametern what-if, och sedan bara knyta det till resten av titeln.
Sedan går vi in i det visuella, går till villkorlig formatering av titeln och klickar på fx .
Vi formaterar efter fältvärde och väljer det dynamiska titelmåttet. Detta kommer att ändra valet av vad-om-parametern.
Slutsats
Det vi har nu är en komplett lösning med DAX-kodningsspråk. Vi har diskuterat ett riktigt kreativt och effektivt sätt att göra det med funktionen GENERERA. Jag vill tacka Antriksh för att han delade med sig av hans briljanta DAX-kunskap med oss. Jag lärde mig mycket när jag gick igenom hans DAX-lösning, och jag hoppas att du också gjorde det.
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.