Variabler og uttrykk i Power Query Editor
Denne opplæringen vil diskutere om variabler og uttrykk i Power Query Editor. Du lærer hvordan du skriver og bygger dem riktig.
Denne opplæringen vil diskutere hvordan du velger eller filtrerer en bestemt dato i . Materialet som brukes i denne opplæringen kommer fra . Du vil lære hvordan du løser problemet og forstår metodene som brukes. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.
Innholdsfortegnelse
Forstå datarapporten i LuckyTemplates
Dette er eksempeldatarapporten som vil bli brukt. Den består av en tabellvisuell og to slicere.
Målet er å ha et datovalg over Dato-kolonnen på sliceren. Det betyr at når en dato i sliceren er valgt, vil tabellvisualiseringen vise de foregående dagene med et 7-dagers intervall. I dette eksemplet er dataene som er valgt i datoutsnittet 12. mai 2007.
Tabellen skal vise den forrige med 7-dagers forskjell mellom datoene.
Du må også lage en hva hvis-parameter for å dynamisk vise antall datoer basert på utvalget. Hvis du velger 3 , skal tabellvisualet bare vise 3 datoer.
Gjenskape tabellen og visualiseringer
Det første trinnet er å lage en hva hvis-parameter . Inne på LuckyTemplates-skrivebordet går du til fanen Modellering og velger Ny parameter .
Legg til et navn til parameteren og sett Datatype til Heltall . Sett deretter minimums-, maksimums-, inkrement- og standardverdiene som vist på bildet nedenfor. Legg til sliceren på siden ved å merke av i boksen.
Etter at du har trykket OK, vil en slicer bli generert. Konverter sliceren til en liste ved å klikke på rullegardinknappen og velge Liste.
Den neste tingen å gjøre er å lage en duplisert datotabell som vil bli brukt som en frakoblet datotabell. Gå til Power Query Editor og dupliser Datoer .
Gi deretter nytt navn til dupliserte DisDate og klikk Lukk og bruk.
Laster inn datotabellene og skjærerne i LuckyTemplates
Når den dupliserte tabellen er lastet inn i LuckyTemplates-modellen, oppretter du en slicer med datokolonnen fra den frakoblede datotabellen. Åpne DisDate-tabellen og dra Date til lerretet.
Deretter gjør du visualiseringen til en slicer.
Deretter endrer du formatet på sliceren til List . Visualiseringen vil da se slik ut.
Deretter dupliserer sliceren og endrer datafeltet med Dato-kolonnen fra Datoer-tabellen.
Hvis du velger en dato fra Dato-sliceren, begrenses salgstabellens antall synlige rader i matrisen. Hvis du velger 14. mars 2005, vil matrisen kun vise den datoen.
Resultatet og målingen vil ikke fungere hvis du bruker dette oppsettet. Årsaken er at allerede før tiltaket begynner å virke, er tilgangen til matrisen allerede filtrert. For disse filtrerte verdiene vil du ikke kunne generere datoene med intervaller.
Opprette mål for utvalgsskjærerne
Du må lage et oppsett av datoer som ikke filtrerer matrisen direkte når et utvalg plasseres over en slicer. Filtreringen av matrisen må komme gjennom og ikke direkte fra slicerne. Så hvis du velger en dato fra DisDate-sliceren, vil ingen endringer skje i matrisen.
Dette skjer fordi DisDate-tabellen ikke har et forhold til Dates-tabellen. Dette er grunnen til at det frakoblede bordet er viktig.
Slett sliceren med Datoer-tabellen og lag det første målet. Målingen vil hente verdien som er valgt fra Dates To Show-skjæreren. Den første variabelen du må lage er ValuesToShow . Deretter sidestiller du det med Dates To Show-verdien og skriv inn RETURN for å returnere verdiene som er valgt.
Dra det målet inn i matrisen. Hvis du velger 6 fra Dates To Show-sliceren, vil målekolonnen i matrisen også gi 6.
Deretter oppretter du en annen variabel som vil hente den frakoblede datoen som er valgt i sliceren.
Når du er ferdig, vil du se verdien valgt i DisDate-sliceren vist i Mål-kolonnen.
Opprette en beregnet tabell
Lag en liste over datoer med 7-dagers intervaller fra den valgte datoen i sliceren. Forsikre deg deretter om at matrisen vil generere antall dager basert på Datoer som skal vises slicer-valget. For å gjøre dette må du først opprette en .
Den beregnede tabellen hjelper deg med å visualisere hvordan datoer genereres inne i DAX-koden. Gå til datavisningen og klikk på Ny tabell.
Skriv inn variabelen SelectedDate og sidestil den med DATE -funksjonen. Skriv deretter inn en dato i parentesen. Deretter oppretter du en annen variabel som spesifiserer antall datoer du vil vise i matrisen. Skriv inn DatesToShow og sidestill det med antall datoer.
Deretter oppretter du en annen variabel som vil generere en liste over datoer med 7-dagers intervaller. Skriv inn datoliste og bruk GENERATESERIES -funksjonen. er en funksjon som genererer en liste med tall ved å sende inn flere argumenter.
For det første argumentet, skriv inn SelectedDate – (DatesToShow * 7) som startverdi. Skriv deretter inn SelectedDate som sluttverdi. For det siste argumentet, skriv inn 7 for økningsverdien eller intervallet mellom datoer. Når du er ferdig, lukk funksjonen og skriv inn RETURN og DateList .
Du kan da se en tabell som inneholder syv verdier som starter fra 5. mai og går tilbake i trinn på syv.
Nå vil du legge merke til at det skapte for mange datoer enn det du trenger. I den opprinnelige eksempelrapporten var den siste datoen som ble vist med de samme Datoer å vise og Dato-valgene 31. mars.
For å fikse det kan du enten endre DatesToShow-variabelverdien til 5 eller trekke fra 1 fra 6. I dette eksemplet trekkes 1 fra 6.
Etter det vil du se at verdiene slutter 31. mars.
Injiserer datoer i filterkonteksten
Deretter må du bruke og injisere disse datoene i en datofilterkontekst. Du må også beregne salgsbeløpet i filterkonteksten. Så kopier GENERATESERIES- syntaksen og gå tilbake til målingen din.
Legg til en ny variabel i målet og skriv inn DatesToShow . Sett deretter likhetstegn mellom variabelen og GENERATESERIES -syntaksen. Endre variablene inne i syntaksen fra SelectedDate til DisSelectedDate , og DatesToShow til ValuesToShow .
Til slutt lager du en variabel for resultatet. Lik det med CALCUATE- funksjonen over Total Sales og DatesToShow for å injisere alle datoene mottatt fra GENERATESERIES- syntaksen i filterkonteksten. Når du er ferdig, skriv inn Resultat i RETURN -funksjonen.
Nå vil du se at matrisen ikke vil vise datoene som DAX-koden ber om. Hvis du tar med Total Sales-målet i matrisen, vil du se at koden returnerer selve salgsbeløpet.
Problemet med tiltaket er at datoen som ble opprettet i GENERATESERIES- syntaksen har en datalinje med den frakoblede datotabellen. Dette betyr at Dato-tabellen ikke er koblet til Sales-tabellen. Det er derfor når listen over datoer ble brukt i filterkonteksten, inkluderte den ikke Salg-tabellen.
Du må bruke funksjonen til å lage virtuelle relasjoner og bruke filterkonteksten.
Bruke TREATAS for å fikse datoen i LuckyTemplates Matrix
Du må behandle verdiene som ble mottatt fra GENERATESERIES -syntaksen som om de var en del av den opprinnelige Dato-tabellen. Dette bygger i utgangspunktet en avstamning med Dato-kolonnen i Dato-tabellen som er i datamodellen.
Så i resultatvariabelen, skriv inn TREATAS etter Total Sales-tabellen og oppgi argumentene. For det første argumentet, oppgi kolonnen eller tabellen som ikke har relasjonen. I dette tilfellet brukes DatesToShow- kolonnen.
For det andre argumentet, oppgi kolonnen du vil tilordne avstamningen til kolonnen til i det første argumentet. I dette eksemplet brukes Dato-kolonnen fra Datoer-tabellen.
Selv med korrigeringene i koden vil imidlertid ikke Mål-kolonnen i matrisen vise de riktige verdiene når du bruker sliceren. Du kan også legge merke til at verdiene i kolonnen gjentar seg.
Problemet ligger i måten koden ble skrevet på. TREATAS bruker alle verdier i filterkonteksten ogoverstyrer den eksisterende filterkonteksten på den valgte datoen med alle verdiene som er hentet fra GENERATESERIES- funksjonen.
Bruk av KEEPFILTERS-funksjonen over TREATAS
For å sikre at filteret injiseres i filteret uten å overstyre den eksisterende filterkonteksten, må du bruke KEEPFILTERS- funksjonen. endrer CALCULATEs filtreringssemantikk.
Skriv inn KEEPFILTERS før TREATAS -funksjonen og bekreft tiltaket.
Du vil nå se at verdiene i Mål-kolonnen ikke gjentar seg.
Hvis du utvider månedene mai og april, vil du se at verdiene i Mål-kolonnen er lik verdiene i Totalt salg-kolonnen.
Fjern totalsalgsmålet i matrisen og velg et tall i Datoer som skal vises. Du vil da se det tilsvarende antallet datoer som vises i matrisen.
Retting av manglende datoproblemer i LuckyTemplates-matrisen
Et annet problem med denne rapporten er at når du velger 8 i DatesToShow- sliceren, endres ikke matrisen.
Hvis du velger 9 i sliceren, viser matrisen bare 8 datoer. Du vil også legge merke til at 17. mars mangler på listen over datoer.
Årsaken er at noen dager i Dato-tabellen er det ingen samsvarende transaksjoner i Sales-tabellen. Så tiltaket returnerer en blank for disse datoene. Siden den returnerer blank, fjerner koden som kjører bak matrisen de tomme radene fra resultatet.
LuckyTemplates bruker deretter det returnerte resultatet til å fylle ut matrisen. Så siden noen dager returnerer tomme, kan du ikke se Salg og oppføringer for disse dagene i matrisen.
Hvis du vil vise noe for dagene uten salg i dataene dine, går du tilbake til målet og fjerner CALCUATE- syntaksen.
Bruker DAX for å løse manglende dato i LuckyTemplates
Lag en datalinje ved å skrive TREATAS over DatesToShow- og Dato- kolonnen i Dates- tabellen. Sjekk deretter om alle datoene som returneres av TREATAS -funksjonen er inkludert i filterkonteksten.
Derfra deler du utførelsen av flere variabler. Endre variabelnavnet fra Result til CreateDataLineage for å vise at den lagrer resultatet av TREATAS .
Deretter oppretter du en annen variabel som vil inneholde alle datoene som er synlige i filterkonteksten som kommer fra matrisen. Skriv inn VisibleDate som variabelnavnet og bruk over Dato- kolonnen.
Den neste tingen å gjøre er å lage en kolonne over resultatet av TREATAS -funksjonen som vil inneholde salgsbeløpet. Skriv DatesWithSales som variabelnavnet og bruk over CreateDataLineage- variabelen.
Inne i funksjonen oppretter du en ny kolonne og gir den navnet Salgsbeløp med Total Sales-målet i radkonteksten for å starte kontekstovergang.
Deretter oppretter du en variabel som vil sjekke om alle datoene som er lagret i DatesWithSales -variabelen er inkludert i filterkonteksten. Skriv inn IsDateInFilterContext som variabelnavnet og bruk funksjonen.
Derfra skriver du DatesWithSales som det første argumentet for funksjonen. Deretter skriver du inn Dates[Dato] IN VisibleDate som det andre argumentet for å sjekke om datoen i DatesWithSales -tabellen er inkludert i VisibleDate- variabelen.
Den siste variabelen du må opprette er Resultat . Bruk funksjonen over IsDateInFilterContext -variabelen. Skriv [@Salgsbeløp] + 0 for å inkludere dagene som ikke tidligere var inkludert.
Etter alt dette vil du se den manglende datoen, 17. mars, i matrisen.
Bruker +0 i originalmålet
De forrige trinnene viste deg hvordan du bygger et mål for å inkludere alle datoene som ikke har transaksjoner i faktatabellen. Nå, hvis du bruker + 0 i det opprinnelige målet du opprettet, vil alle verdiene i Mål-kolonnen være 0.
Årsaken er at resultatvariabelen inneholder enten et tomt beløp eller et salgsbeløp. Så hvis du legger til 0, erstatter du det tomme med 0. Husk at oppsummerte kolonner fjerner de tomme radene fra datasettet. Returner dem til LuckyTemplates slik at de bare kan vise begrensede rader og ikke de tomme feltene.
Men siden 0 er lagt til, tvinges oppsummeringskolonnen til å beholde radene. Den returnerer deretter en tabell som inneholder alle datoene som finnes i Datoer-tabellen og viser null uansett hvor det er aktuelt eller når det er tomt.
Dette er grunnen til at du trenger å omskrive målet på en måte der du bare trenger å legge til 0 til datoene som er synlige i filterkonteksten og er inkludert i DatesToShow- variabelen .
Konklusjon
For å lage en datarapport som lar deg velge en bestemt dato i en , må du bruke beregnede tabeller og. DAX-funksjoner og -mål må skrives på en måte som lett kan oppnå resultater.
Denne opplæringen vil diskutere om variabler og uttrykk i Power Query Editor. Du lærer hvordan du skriver og bygger dem riktig.
Et LuckyTemplates-varmekart er en type visualisering som brukes til å vise datatetthet på et kart. I denne opplæringen vil jeg diskutere hvordan vi kan lage en – ikke gå glipp av noe!
Jeg skal lære deg et veldig interessant eksempel rundt Pareto-prinsippet og hvordan du lager et Pareto-diagram ved hjelp av viktige DAX-formler.
Lær hvordan et tilpasset stolpediagram på markedsplassen kan brukes til datasammenligning og hvordan du kan lage dem ved å bruke eksempler i LuckyTemplates.
Lær hvordan Power Automate Static Results-funksjonen fungerer og hvorfor det er bra å bli lagt til de beste praksisene når du lager flytdiagrammer.
eDNA demonstrerer hvordan du utfører språk- eller tekstoversettelse ved hjelp av Python og overfører det til LuckyTemplates. LuckyTemplates Python-opplæring.
I denne opplæringen lærer du hvordan du bruker Gauge Bullet Graph til å lage et Gantt-diagram i LuckyTemplates Report Builder.
I denne opplæringen lærer du hvordan du lager et tredimensjonalt (3D) spredningsplott ved å bruke Python i LuckyTemplates.
Effektiv LuckyTemplates-rapportering – øktgjennomgang og ressursnedlasting
Ny kundeanalyse med LuckyTemplates – Neste medlemsbegivenhet