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.
La oss ta en ny titt på problemet diskutert i , som dynamisk sammenlignet de første N virkedagene i hver måned. Dette problemet var basert på et spørsmål fra et LuckyTemplates-medlem på forumet vårt, der han ønsket å dynamisk se og sammenligne de første 5, 10, 15 og 20 fakturerbare dagene (ikke-helger og ikke-feriedager) for en gitt måned mot forrige måned.
I stedet for å bruke strømspørring, kommer vi med en DAX-kodespråkløsning. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.
I den første videoen kom jeg opp med en strømspørringsløsning om hvordan jeg løser dette problemet. Men så kom en av våre LuckyTemplates-eksperter, Antriksh Sharma, opp med et strålende effektivt tiltak som også er verdt å ta et dypere dykk i. Vi vil diskutere noen av teknikkene han brukte for å utvikle et mål, som vil gi deg flere verktøy i DAX-verktøykassen.
Det gjorde det absolutt for meg og for noen av de andre ekspertene som tok en titt på dette. Like-for-like-sammenligningen av sammenlignbare virkedager på tvers av måneder er et verdifullt mønster generelt som kan brukes i mange situasjoner.
La oss dykke ned i kraftspørring og ta en titt på hva Antriksh gjorde her. Vi har måneden og året , totalt salg og til slutt det totale salget for N virkedager som vi valgte ved hjelp av power-spørring basert på hva-hvis-parameteren som vi utviklet.
Antriksh tok en helt annen tilnærming, der han brukte et sjokkerende kort tiltak for å løse hele dette problemet. Det første jeg la merke til ved dette var bruken av kommandoen.
Dette er en DAX-funksjon som jeg ikke bruker så ofte, men som passer perfekt for denne typen problemer. Hvis vi tar en titt på SQL BI DAX-guiden, står det at GENERATE-funksjonen er en tabellfunksjon som bruker to forskjellige tabeller som input, og deretter gjør en ekvivalent av SQL-kommandoen CROSS APPLY.
Så den tar en grunntabell (Tabell1) og itererer på den, og tar deretter et andre tabelluttrykk og evaluerer det for hver rad i den første tabellen, og går deretter tilbake til tabellen som utdata.
La oss ta Antrikshs mål og slippe det inn i tabellen. Vi kan se at den gir nøyaktig de samme resultatene som strømspørringsløsningen vi gjorde forrige gang. Så det er bra og validerer begge tiltakene ganske bra.
La oss skille dette tiltaket fra hverandre. Det første filteret som brukes her er Dates[IsBusinessDay] = TRUE. Dette tar ut alle ikke-helger og ikke-helligdager basert på den utvidede datotabellen IsBusinessDay-feltet.
Vi snakker mye mer om dette i , hvor vi også gikk gjennom hvordan vi knytter det til julebordet vårt.
Den interessante delen av dette kommer virkelig i de to tabellinngangene. Den første tabellen er bare en tabell med én kolonne i feltet Måned og år i datotabellen.
Men den andre tabellinngangen er der de interessante tingene skjer. Antriksh brukte a og brukte deretter vår dynamiske parameter som antall rader i TOPN.
Totalt salg- målet er knyttet til den andre tabellen, og deretter brukt på den første tabellen.
Innholdsfortegnelse
Forstå et komplekst mål ved å bruke DAX-kodespråk
En av de enkleste måtene å finne ut hva et komplekst tiltak som dette gjør, er å gå inn i Tabellredigering . Vi kan ta en titt på dette uttrykket og finne ut hva dette TOPN-uttrykket gjør først.
La oss kopiere TOPN-delen og lage en ny. Husk at DAX-spørringer starter med EVALUATE.
Når vi limer inn TOPN-delen, ser vi at dette trekker de første 5 datoene fra salgsordretabellen. Det er en tabell i TOPN som er sammensatt av verdiene for alle bestillingsdatoene i salgstabellen.
Denne TOPN-funksjonen tar verdien av hva-hvis-parameteren (som i dette tilfellet er 5) og bruker den på salgsordredatofeltet. Deretter trekker den de første 5 datoene innenfor filterkonteksten i stigende rekkefølge basert på det feltet.
Gitt at det ikke er noen ekstra filterkontekst, er det bare å trekke de første 5 datoene fra hele tabellen.
@Sales-kolonnen legger bare til det totale salget innenfor riktig filterkontekst til TOPN-tabellen.
Så langt har vi den første tabellen for måneden og året, den andre tabellen i TOPN for de første N er fra salgstabellen, og deretter det totale salget knyttet til det.
Bruke GENERATE-tabellen i DAX-kodespråk
La oss ta en titt på hva denne GENERATE-tabellen gjør. Vi hopper tilbake til Tabular Editor og lager en ny DAX-spørring.
Vi starter som vi alltid gjør med EVALUATE, limer inn GENERATE-delen av koden og klikker på 5.
Vi kan se at for hver rad i den første tabellen itererer den og sammenføyes med de 5 radene fra TOPN-tabellen evaluert i sammenheng med @Sales-funksjonen.
Det har tatt de første 5 virkedagene i april, de første 5 virkedagene i mai, de første 5 virkedagene i juni, og så videre til det kommer til slutten av det første tabellen.
Dette er akkurat det vi trenger, og nå blir det en relativt enkel sak å legge disse verdiene sammen. Vi har resultatet (som er tabellvariabelen til GENERATE-resultatene) og så må vi summere @Sales-funksjonen.
Innenfor kontekst summerer vi nå de første 5 virkedagene i april, de første 5 virkedagene i mai, og så videre til vi kommer ned til totalt $23 737 430, i så fall har den ingen kontekst av måned og år å operere .
Dette oppsummerer hele @Sales-kolonnen og gir oss nøyaktig samme totalsum som vi hadde i vår power-spørringsløsning.
Du kan se at hvis vi endrer sliceren til 10, får vi dynamisk de samme resultatene med DAX-kodespråk som vi gjorde i power-spørring.
Vi har også søylediagrammet nederst som justeres dynamisk for å gjenspeile endringene vi har gjort.
Juster dynamisk måltittel
Det er et annet ekstra triks jeg ville vise deg. Du kan lage en dynamisk justering på hva-hvis-parameteren din og knytte den dynamisk til en takttittel.
Hvis vi for eksempel endrer sliceren øverst til 15, vil den dynamisk endre navnet på målet nederst til Totalt salg for de første 15 virkedagene i hver måned .
Det er en enkel måte å gjøre dette på i DAX ved å bruke . Vi tar i utgangspunktet bare tre strenger. Den første er Total Sales for First , og deretter koble det sammen med verdien som vi høster fra hva-hvis-parameteren, og så bare knytte det til resten av tittelen.
Så går vi inn i det visuelle, går til betinget formatering av tittelen, og klikker på fx .
Vi formaterer etter feltverdi og velger det dynamiske tittelmålet. Dette vil endre valget av hva-hvis-parameteren.
Konklusjon
Det vi har nå er en komplett løsning som bruker DAX-kodespråk. Vi har diskutert en virkelig kreativ og effektiv måte å gjøre det på ved å bruke GENERATE-funksjonen. Jeg vil takke Antriksh for å dele hans strålende DAX-kunnskap med oss. Jeg lærte mye mens jeg gikk gjennom DAX-løsningen hans, og jeg håper du gjorde det også.
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.