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.
Lad os se igen på problemet diskuteret i , som dynamisk sammenlignede de første N hverdage i hver måned. Dette problem var baseret på en forespørgsel fra et LuckyTemplates-medlem på vores forum, hvor han ønskede dynamisk at se og sammenligne de første 5, 10, 15 og 20 fakturerbare dage (de ikke-weekender og ikke-helligdage) for en given måned med den foregående måned.
I stedet for at bruge power-forespørgsel, kommer vi med en DAX-kodningssprogsløsning. Du kan se den fulde video af denne tutorial nederst på denne blog.
I den første video kom jeg med en strømforespørgselsløsning om, hvordan man løser dette problem. Men så kom en af vores LuckyTemplates-eksperter, Antriksh Sharma, op med en strålende effektiv foranstaltning, som også er værd at tage et dybere dyk ned i. Vi vil diskutere nogle af de teknikker, han brugte til at udvikle et mål, som vil give dig yderligere værktøjer i din DAX-værktøjskasse.
Det gjorde det bestemt for mig og for nogle af de andre eksperter, der kiggede på dette. Sammenligningen af sammenlignelige hverdage på tværs af måneder er et værdifuldt mønster generelt, som kan bruges i mange situationer.
Lad os dykke ned i strømforespørgsler og se på, hvad Antriksh gjorde her. Vi har måneden og året , det samlede salg og til sidst det samlede salg for N arbejdsdage , som vi valgte ved hjælp af power-forespørgsel baseret på what-if-parameteren, som vi udviklede.
Antriksh tog en helt anden tilgang, hvor han brugte en chokerende kort foranstaltning til at løse hele dette problem. Det første, jeg lagde mærke til ved dette, var brugen af kommandoen.
Dette er en DAX-funktion, som jeg ikke bruger særlig tit, men som passer perfekt til denne type problemer. Hvis vi tager et kig på SQL BI DAX-vejledningen, står der, at GENERATE-funktionen er en tabelfunktion, der bruger to forskellige tabeller som input, og derefter udfører en ækvivalent af SQL-kommandoen CROSS APPLY.
Så det tager en basistabel (Tabel1) og gentager den, og tager derefter et andet tabeludtryk og evaluerer det for hver række i den første tabel og vender derefter tilbage til tabellen som output.
Lad os tage Antrikshs mål og slippe det i bordet. Vi kan se, at det giver nøjagtig de samme resultater som strømforespørgselsløsningen, som vi lavede sidste gang. Så det er godt og validerer begge mål ganske godt.
Lad os skille denne foranstaltning fra hinanden. Det første filter, der anvendes her, er Dates[IsBusinessDay] = TRUE. Dette fjerner alle ikke-weekend- og ikke-helligdage baseret på den udvidede datotabel IsBusinessDay-feltet.
Vi taler meget mere om dette i , hvor vi også gennemgik, hvordan man binder det ind på vores feriebord.
Den interessante del af dette kommer virkelig i de to tabelinput. Den første tabel er kun en tabel med én kolonne i feltet Måned og år i datotabellen.
Men det andet tabelinput er, hvor de interessante ting sker. Antriksh brugte a og brugte derefter vores dynamiske parameter som antallet af rækker i TOPN.
Målingen Samlet salg er knyttet til den anden tabel og derefter anvendt på den første tabel.
Indholdsfortegnelse
Forståelse af en kompleks foranstaltning ved hjælp af DAX-kodningssprog
En af de nemmeste måder at finde ud af, hvad en kompleks foranstaltning som denne gør, er at gå ind i tabeleditor . Vi kan tage et kig på dette udtryk og finde ud af, hvad dette TOPN-udtryk gør først.
Lad os kopiere TOPN-delen og oprette en ny. Husk, at DAX-forespørgsler starter med EVALUATE.
Når vi indsætter TOPN-delen, vil vi se, at dette trækker de første 5 datoer fra salgsordretabellen. Der er en tabel i TOPN, der er sammensat af værdierne for alle ordredatoer i salgstabellen.
Denne TOPN-funktion tager værdien af what-if-parameteren (som i dette tilfælde er 5) og anvender den på salgsordresdatofeltet. Så trækker den de første 5 datoer i filterkonteksten i stigende rækkefølge baseret på det felt.
Da der ikke er nogen ekstra filterkontekst, trækker det bare de første 5 datoer fra hele tabellen.
Kolonnen @Sales tilføjer bare det samlede salg inden for den korrekte filterkontekst til TOPN-tabellen.
Indtil videre har vi den første tabel for måneden og året, den anden tabel over TOPN af de første N stammer fra salgstabellen og derefter det samlede salg forbundet med det.
Brug af GENERATE-tabellen i DAX-kodningssprog
Lad os tage et kig på, hvad denne GENERATE-tabel gør. Vi hopper tilbage til Tabular Editor og opretter en ny DAX-forespørgsel.
Vi starter som vi altid gør med EVALUATE, indsæt GENERATE-delen af koden og klik på 5.
Vi kan se, at for hver række i den første tabel, gentages og forbindes med de 5 rækker fra TOPN-tabellen, der er evalueret i sammenhæng med @Sales-funktionen.
Det har taget de første 5 hverdage i april, de første 5 hverdage i maj, de første 5 hverdage i juni og så videre, indtil det kommer til slutningen af den første tabel.
Det er præcis, hvad vi har brug for, og nu bliver det et relativt simpelt spørgsmål om at lægge disse værdier sammen. Vi har resultatet (som er tabelvariablen for GENERATE-resultaterne), og så skal vi opsummere @Sales-funktionen.
Inden for kontekst opsummerer vi nu de første 5 hverdage i april, de første 5 hverdage i maj osv., indtil vi kommer ned på vores samlede beløb på 23.737.430 USD, i hvilket tilfælde det ikke har nogen kontekst for måned og år at fungere .
Dette opsummerer hele kolonnen @Sales og giver os den nøjagtige samme total, som vi havde i vores power-forespørgselsløsning.
Du kan se, at hvis vi ændrer sliceren til 10, får vi dynamisk de samme resultater med DAX-kodningssprog, som vi gjorde i power-forespørgsel.
Vi har også søjlediagrammet i bunden, der justerer dynamisk for at afspejle de ændringer, vi har foretaget.
Juster dynamisk måltitel
Der er endnu et trick, jeg ville vise dig. Du kan oprette en dynamisk justering på din what-if-parameter og binde den dynamisk til en måltitel.
For eksempel, hvis vi ændrer udsnitsværktøjet øverst til 15, vil det dynamisk ændre navnet på målingen nederst til Samlet salg for de første 15 hverdage i hver måned .
Der er en nem måde at gøre dette på i DAX ved hjælp af . Vi tager stort set bare tre strenge. Den første er Total Sales for First , og derefter sammenkæde det med værdien, som vi høster fra what-if-parameteren, og så bare binde det til resten af titlen.
Så går vi ind i det visuelle, går til betinget formatering af titlen og klikker på fx .
Vi formaterer efter feltværdi og vælger det dynamiske titelmål. Dette vil ændre valget af hvad-hvis-parameteren.
Konklusion
Det, vi har nu, er en komplet løsning, der bruger DAX-kodningssprog. Vi har diskuteret en virkelig kreativ og effektiv måde at gøre det på ved hjælp af GENERATE-funktionen. Jeg vil gerne takke Antriksh for at dele hans strålende DAX-viden med os. Jeg lærte meget, mens jeg gennemgik hans DAX-løsning, og det håber jeg, at du også gjorde.
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.