DAX Studio EVALUATE Nøkkelord: Grunnleggende eksempler
Lær å bruke DAX Studio EVALUATE nøkkelordet med grunnleggende eksempler og få en bedre forståelse av hvordan dette kan hjelpe deg med databehandling.
I denne opplæringen skal vi gå tilbake til et emne jeg dekket tidligere om hvordan du kan løsne flere kolonner i Power Query ved å bruke List.Zip. Et LuckyTemplates-medlem spurte omom hvordan du kan gjøre den metoden dynamisk. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.
Jeg har merket dette som avansert fordi vi kommer til å skrive en rekke M-funksjoner, og noen av dem kan til og med være nye for deg.
Med det sagt, la oss gå over til Power Query.
Innholdsfortegnelse
Data i tabellformat
Som du kan se, har disse dataene allerede blitt transformert til et riktig nettbrettformat egnet for analyse. Denne prosessen, selv om den er veldig viktig, vil ikke bli dekket her, men vi vil kort gå gjennom hvert trinn.
I kildetrinnet ser vi en konstant repetisjon av verdiparene, som er timene og kontaktene for hver av attributtene som er oppført ovenfor.
I de anvendte trinnene kan du se resten av trinnene. Vi fjernet noen øverste rader, fjernet de tomme kolonnene, ryddet opp i tekstverdiene og fylte dem ned. Deretter transponerte vi dataene våre, fjernet den tomme posten, slo sammen kolonne én og to, renset tekstverdiene våre igjen og transponerte dataene våre tilbake.
Vi opprettet et tilpasset trinn, som vi skal undersøke mer detaljert senere, hentet ut verdier fra listen vår og endret til slutt typen.
La oss se på hele koden. Det vi er interessert i her er List.Zip -funksjonen. Kort oppsummering, det tar en enkelt liste som en og returnerer deretter en liste. Som et resultat ser vi at denne enkeltlisten i dette tilfellet inneholder tre separate lister.
Hvis vi undersøker den første listen, inneholder den hardkodede attributtnavn, bare tekstverdier som ble skrevet inn. Den andre listen inneholder hardkodede kolonnereferanser for timeverdiene. Den endelige listen inneholder hardkodede kolonnereferanser for kontaktverdiene.
List.Zip tar deretter et element fra hver av disse tre listene og kombinerer dem basert på deres plassering i en ny liste. For eksempel blir hvert første element fra disse listene kombinert til en ny liste. Det samme skjer for alle verdiene som er oppført på andreplass i den listen, og så videre.
Hardkodede verdier kan være bekymret hvis attributtene sannsynligvis ikke endres over tid. Så hvis neste gang ikke alle gjenstander er til stede eller nye gjenstander eksisterer, kan du få problemer.
Endre kode for å løsne flere kolonner dynamisk
Så hvordan gjør vi dette dynamisk?
Det første jeg gjør er å gå gjennom koden for å se om det er et sted hvor vi kan plukke opp disse attributtverdiene uten å måtte designe et eget trinn for å oppnå det. Så vi skal gå tilbake gjennom koden, og dette RemoveNull- trinnet er perfekt.
Du kan se at den viser alle attributtverdiene her i kolonne én. Vi kan bruke brukergrensesnittet til å trekke dem ut.
Så høyreklikk på overskriften, og velg Legg til som ny spørring ned nedenfor .
Vi får denne listen, og det er gode nyheter fordi vi ønsker å erstatte den hardkodede listen vi så tidligere med den dynamiske. Alt vi trenger å gjøre er å rydde opp i verdiene.
La oss starte med å fjerne disse nullene. Så inne i formellinjen legger vi til en List.RemoveNulls . Som du kan se nå, gjentas alle elementer, og det er på grunn av verdiparene. Den er oppført én gang for timene.
Og så igjen, for kontaktene, for å fjerne disse duplikatene, kan vi legge til en List.Distinct . Nå har vi laget denne logikken, og alt vi trenger å gjøre er å kopiere den og lime den inn tilbake til eksempelspørringen vår.
I eksempelspørringen åpner du Advanced Editor og oppretter et nytt variabelnavn. La oss kalle det AttributeList . Så limer vi inn koden og setter komma.
La oss nå gå tilbake til vårt tilpassede trinn. Inne i List.Zip kan vi erstatte den første listen med variabelnavnet vårt (AttributeList).
La oss nå se nærmere på den andre listen. Vi vet at det refererer til kolonnenavn, og hver av disse kolonnenavnene starter med det samme attributtet som vi allerede har i listen etterfulgt av et mellomrom og en tekst "timer".
Vi trenger bare å legge til et suffiks til hvert element. Så la oss gå et trinn tilbake og legge til en egendefinert kolonne for å lage litt logikk.
Løsne flere kolonner dynamisk: Legge til tilpasset kolonnelogikk
Det er bare en midlertidig spalte, så vi trenger ikke gi den et riktig navn. Vi fjerner den når vi er ferdige.
For å endre verdiene i en liste kan vi bruke List.Transform- funksjonen. Vi må transformere verdiene i AttributeList vår , så jeg skal lime det inn.
Her i overskriftene ser vi at tekstverdiene starter med stor bokstav, og så er resten små bokstaver. Attributtet vårt inneholder bare et stort ord, så vi må også transformere den tekstverdien. Og vi kan bruke understrekingen for å få tilgang til hvert element på listen, og vi legger til det suffikset.
Med det får vi en listeverdi i kolonnen vår. Det spiller ingen rolle hvilken du velger, men bare klikk til siden i det hvite rommet i noen av dem her.
Under siden ser vi en forhåndsvisning av den listen vi har laget. Så du ser at vi har disse kolonneoverskriftene som nå er riktig omsluttet slik at de samsvarer med kolonneoverskriftene vi ser her med denne listen.
Vi har nå midler til å identifisere feltene fra posten vår som vi ønsker tilgang til. Så la oss åpne vår egendefinerte kolonnedialogboks igjen og legge til Record.SelectFields . Den vil ha en post som en post, så vi kan bruke den understrekingen for å få tilgang til den gjeldende posten vi er på. Og så har vi gitt den en liste med alle disse feltnavnene, så legg til en avsluttende parentes og trykk OK .
Så vi har ikke lenger en liste, men vi får nå rekord. La oss klikke til siden i det hvite rommet igjen for å se innholdet i den posten. Her ser vi at den viser postfeltnavnene og postfeltverdiene.
Men vi er bare interessert i rekordfeltverdiene, så det må vi trekke ut. La oss gå tilbake til vår egendefinerte kolonnedialogboks og legge til Record.FieldsValues .
Vi får nå en liste igjen og ikke lenger rekord. Vi klikker ut til siden i det hvite rommet igjen, og du ser at vi nå har en liste med nettopp disse verdiene. Så det ser bra ut.
La oss kopiere hele logikken som vi har laget, bortsett fra de siste avsluttende parentesene. Og nå kan vi fjerne den midlertidige kolonnen vår fordi vi ikke trenger den lenger.
På formellinjen velger vi vår andre liste og erstatter den med logikken vår.
For å lage en liste med postfeltverdiene for kontaktene, er alt vi trenger å endre suffikset. Så vi kan velge den siste listen også, og lime inn logikken vår.
Så, i stedet for timer , la oss endre dette til kontakter .
Ingen feil og det ser bra ut. Dette er nå en dynamisk løsning for å løsne flere kolonner.
Konklusjon
Det er slik du deaktiverer flere kolonner dynamisk innved å bruke List.Zip.
Hvis et nytt attributt kommer inn, vil det automatisk bli plukket opp av AttributeList. Og når et element ikke lenger eksisterer, vil det ikke være til stede på den listen.
Jeg håper du likte denne. Se hele videoen nedenfor for mer informasjon om denne opplæringen og sjekk ut lenkene nedenfor for mer innhold rundt unpivot flere kolonner i LuckyTemplates.
Beste ønsker
Melissa
Lær å bruke DAX Studio EVALUATE nøkkelordet med grunnleggende eksempler og få en bedre forståelse av hvordan dette kan hjelpe deg med databehandling.
Finn ut hvorfor det er viktig å ha en dedikert datotabell i LuckyTemplates, og lær den raskeste og mest effektive måten å gjøre det på.
Denne korte opplæringen fremhever LuckyTemplates mobilrapporteringsfunksjon. Jeg skal vise deg hvordan du kan utvikle rapporter effektivt for mobil.
I denne LuckyTemplates-utstillingen vil vi gå gjennom rapporter som viser profesjonell tjenesteanalyse fra et firma som har flere kontrakter og kundeengasjementer.
Gå gjennom de viktigste oppdateringene for Power Apps og Power Automate og deres fordeler og implikasjoner for Microsoft Power Platform.
Oppdag noen vanlige SQL-funksjoner som vi kan bruke som streng, dato og noen avanserte funksjoner for å behandle eller manipulere data.
I denne opplæringen lærer du hvordan du lager din perfekte LuckyTemplates-mal som er konfigurert til dine behov og preferanser.
I denne bloggen vil vi demonstrere hvordan du legger feltparametere sammen med små multipler for å skape utrolig nyttig innsikt og grafikk.
I denne bloggen vil du lære hvordan du bruker LuckyTemplates rangering og tilpassede grupperingsfunksjoner for å segmentere et eksempeldata og rangere det i henhold til kriterier.
I denne opplæringen skal jeg dekke en spesifikk teknikk rundt hvordan du viser kumulativ total kun opp til en bestemt dato i grafikken i LuckyTemplates.