Løsne flere kolonner dynamisk i LuckyTemplates

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.

Løsne flere kolonner dynamisk i LuckyTemplates

I kildetrinnet ser vi en konstant repetisjon av verdiparene, som er timene og kontaktene for hver av attributtene som er oppført ovenfor.

Løsne flere kolonner dynamisk i LuckyTemplates

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.

Løsne flere kolonner dynamisk i LuckyTemplates

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.

Løsne flere kolonner dynamisk i LuckyTemplates

Du kan se at den viser alle attributtverdiene her i kolonne én. Vi kan bruke brukergrensesnittet til å trekke dem ut.

Løsne flere kolonner dynamisk i LuckyTemplates

Så høyreklikk på overskriften, og velg Legg til som ny spørring ned nedenfor .

Løsne flere kolonner dynamisk i LuckyTemplates

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.

Løsne flere kolonner dynamisk i LuckyTemplates

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.

Løsne flere kolonner dynamisk i LuckyTemplates

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.

Løsne flere kolonner dynamisk i LuckyTemplates

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.

Løsne flere kolonner dynamisk i LuckyTemplates

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).

Løsne flere kolonner dynamisk i LuckyTemplates

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.

Løsne flere kolonner dynamisk i LuckyTemplates

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.

Løsne flere kolonner dynamisk i LuckyTemplates

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 .

Løsne flere kolonner dynamisk i LuckyTemplates

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.

Løsne flere kolonner dynamisk i LuckyTemplates

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 ​​.

Løsne flere kolonner dynamisk i LuckyTemplates

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.

Løsne flere kolonner dynamisk i LuckyTemplates

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.

Løsne flere kolonner dynamisk i LuckyTemplates

På formellinjen velger vi vår andre liste og erstatter den med logikken vår.

Løsne flere kolonner dynamisk i LuckyTemplates

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.

Løsne flere kolonner dynamisk i LuckyTemplates

Så, i stedet for timer , la oss endre dette til kontakter .

Løsne flere kolonner dynamisk i LuckyTemplates

Ingen feil og det ser bra ut. Dette er nå en dynamisk løsning for å løsne flere kolonner.

Løsne flere kolonner dynamisk i LuckyTemplates




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


PowerApps-søkefelt: Slik legger du til og tilpasser

PowerApps-søkefelt: Slik legger du til og tilpasser

Lær hvordan du oppretter et PowerApps-søkefelt fra bunnen av og tilpasser det til å matche det overordnede temaet for appen din.

SELECTEDVALUE DAX-eksempel- Valg av høsteskive

SELECTEDVALUE DAX-eksempel- Valg av høsteskive

Høst eller fang en verdi inne i et mål for å gjenbruke i et annet mål for dynamiske beregninger ved å bruke SELECTEDVALUE DAX i LuckyTemplates.

Versjonshistorikk i SharePoint-lister

Versjonshistorikk i SharePoint-lister

Oppdag hvordan versjonshistorikk i SharePoint kan hjelpe deg med å se utviklingen av bestemte data, og hvor mange endringer den har gjennomgått.

Hex-fargekodevelger for Lucky Templates-rapporter

Hex-fargekodevelger for Lucky Templates-rapporter

Her er et verktøy for å lage rapporter og grafikk, en sekskantkodevelger for farger som du kan bruke for enkelt å få fargene til LuckyTemplates-rapportene dine.

Dynamisk datoskjærer i Lucky-maler ved hjelp av en periodetabell

Dynamisk datoskjærer i Lucky-maler ved hjelp av en periodetabell

Du kan enkelt vise en datoperiode som en slicer i rapporten ved hjelp av en periodetabell. Bruk en M-kode for å lage den dynamiske datoskjæreren i LuckyTemplates.

Proporsjons- og frekvenstabeller i Excel

Proporsjons- og frekvenstabeller i Excel

Skulle dykke ned i frekvenstabeller i Excel samt proporsjonstabeller. Se nærmere på hva de er og når du skal bruke dem.

Slik installerer du DAX Studio & Tabular Editor i LuckyTemplates

Slik installerer du DAX Studio & Tabular Editor i LuckyTemplates

Lær hvordan du laster ned og installerer DAX Studio og Tabular Editor 3 og hvordan du konfigurerer dem for bruk i LuckyTemplates og i Excel.

LuckyTemplates Shape Map Visualization for romlig analyse

LuckyTemplates Shape Map Visualization for romlig analyse

Denne bloggen inneholder Shape Map-visualiseringen for romlig analyse i LuckyTemplates. Jeg viser deg hvordan du kan bruke denne visualiseringen effektivt med dens funksjoner og elementer.

LuckyTemplates finansiell rapportering: Allokering av resultater til maler på hver enkelt rad

LuckyTemplates finansiell rapportering: Allokering av resultater til maler på hver enkelt rad

I denne opplæringen viser jeg frem en unik idé rundt finansiell rapportering, som tildeler resultater for å forhåndsbestemme tabellmaler inne i LuckyTemplates.

DAX-mål i LuckyTemplates ved hjelp av måleforgrening

DAX-mål i LuckyTemplates ved hjelp av måleforgrening

Opprett DAX-mål i LuckyTemplates ved å bruke eksisterende mål eller formler. Dette er det jeg kaller tiltaket forgreningsteknikk.