Ophæv pivot flere kolonner dynamisk i Lucky Templates

I dette selvstudium vil vi gense et emne, som jeg dækkede tidligere, om hvordan man kan fjerne pivot af flere kolonner i Power Query ved hjælp af List.Zip. Et LuckyTemplates-medlem spurgte omom, hvordan man gør den metode dynamisk. Du kan se den fulde video af denne tutorial nederst på denne blog.

Jeg har mærket dette avanceret, fordi vi vil skrive en række M-funktioner, og nogle af dem kan endda være nye for dig.

Med det sagt, lad os gå over til Power Query.

Indholdsfortegnelse

Data i tabelformat

Som du kan se, er disse data allerede blevet transformeret til et ordentligt tabletformat, der er egnet til analyse. Denne proces, selvom den er meget vigtig, vil ikke blive dækket her, men vi vil kort gennemgå hvert trin.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

I kildetrinnet ser vi en konstant gentagelse af værdiparrene, som er timerne og kontakterne for hver af de ovennævnte attributter.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

I de anvendte trin kan du se resten af ​​trinene. Vi fjernede nogle øverste rækker, fjernede de tomme kolonner, ryddede op i vores tekstværdier og udfyldte dem. Derefter transponerede vi vores data, fjernede den tomme post, slog kolonne et og to sammen, rensede vores tekstværdier igen og transponerede vores data tilbage.

Vi oprettede et brugerdefineret trin, som vi vil undersøge mere detaljeret senere, udtrak værdier fra vores liste og ændrede til sidst typen.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Lad os se på hele koden. Det, vi er interesseret i her, er List.Zip -funktionen. Kort opsummering, det tager en enkelt liste som en og returnerer derefter en liste. Som et resultat ser vi, at denne enkelte liste i dette tilfælde indeholder tre separate lister.

Hvis vi undersøger den første liste, indeholder den hårdkodede attributnavne, blot tekstværdier, der blev indtastet. Den anden liste indeholder hårdkodede kolonnereferencer for timeværdierne. Den endelige liste indeholder hårdkodede kolonnereferencer for kontaktværdierne.

List.Zip tager derefter et element fra hver af disse tre lister og kombinerer dem baseret på deres placering i en ny liste. For eksempel bliver hvert første element fra disse lister kombineret til en ny liste. Det samme sker for alle værdier, der er anført som nummer to på listen, og så videre.

Hardkodede værdier kan være bekymrede, hvis attributterne sandsynligvis ikke ændrer sig over tid. Så hvis næste gang ikke alle varer er til stede eller nye varer findes, kan du få problemer.

Ændring af kode for at fjerne pivotering af flere kolonner dynamisk

Så hvordan gør vi denne dynamisk?

Den første ting, jeg gør, er at gå gennem koden for at se, om der er et sted, hvor vi kan hente disse attributværdier uden at skulle designe et separat trin for at opnå det. Så vi går tilbage gennem koden, og dette RemoveNull- trin er perfekt.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Du kan se, at den viser alle attributværdierne her i kolonne et. Vi kan bruge brugergrænsefladen til at udtrække dem.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Så højreklik på den overskrift, og vælg Tilføj som ny forespørgsel nede under .

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Vi får denne liste, og det er gode nyheder, fordi vi ønsker at erstatte den hårdkodede liste, vi så tidligere, med den dynamiske. Det eneste, vi skal gøre, er at rydde op i værdierne.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Lad os starte med at fjerne disse nuller. Så inde i formellinjen tilføjer vi en List.RemoveNulls . Som du kan se nu, gentages alle elementer, og det er på grund af værdiparrene. Det er opført én gang for timerne.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Og så igen, for kontakterne, for at fjerne disse dubletter, kan vi tilføje en List.Distinct . Nu har vi skabt denne logik, og alt vi skal gøre er at kopiere den og indsætte den tilbage til vores eksempelforespørgsel.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

I prøveforespørgslen skal du åbne Advanced Editor og oprette et nyt variabelnavn. Lad os kalde det, AttributeList . Så indsætter vi koden og sætter et komma.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Lad os nu gå tilbage til vores brugerdefinerede trin. Inde i List.Zip kan vi erstatte den første liste med vores variabelnavn (AttributeList).

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Lad os nu se nærmere på den anden liste. Vi ved, at det refererer til kolonnenavne, og hver af disse kolonnenavne starter med den samme attribut, som vi allerede har på listen efterfulgt af et mellemrum og en tekst "timer".

Vi skal blot tilføje et suffiks til hver vare. Så lad os gå et trin tilbage og tilføje en brugerdefineret kolonne for at skabe noget logik.

Ophæv pivotering af flere kolonner dynamisk: Tilføjelse af brugerdefineret kolonnelogik

Det er kun en midlertidig spalte, så vi behøver ikke give den et rigtigt navn. Vi fjerner det, når vi er færdige.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

For at ændre værdierne i en liste kan vi bruge List.Transform- funktionen. Vi er nødt til at transformere værdierne i vores AttributeList , så jeg vil indsætte det.

Her i overskrifterne ser vi, at tekstværdierne starter med stort bogstav, og så er resten med små bogstaver. Vores attribut indeholder kun et stort ord, så vi skal også transformere denne tekstværdi. Og vi kan bruge understregningen til at få adgang til hvert punkt på listen, og vi tilføjer det suffiks.

Med det får vi en listeværdi i vores kolonne. Det er lige meget, hvilken du vælger, men klik blot ud til siden i det hvide rum i en af ​​dem her.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Under siden ser vi en forhåndsvisning af den liste, vi har oprettet. Så du kan se, at vi har disse kolonneoverskrifter, der nu er korrekt indkapslede, så de matcher de kolonneoverskrifter, vi ser her med denne liste.

Vi har nu midlerne til at identificere de felter fra vores registrering, som vi ønsker at få adgang til. Så lad os åbne vores brugerdefinerede kolonnedialogboks igen og tilføje Record.SelectFields . Den vil have en post som en post, så vi kan bruge den understregning til at få adgang til den aktuelle post, som vi er på. Og så har vi givet den en liste med alle de feltnavne, så tilføj en afsluttende parentes og tryk OK .

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Så vi har ikke længere en liste, men vi får nu en rekord. Lad os klikke ud til siden i det hvide rum igen for at se indholdet af den post. Her ser vi, at den viser postfeltnavnene og postfeltværdierne.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Men vi er kun interesserede i rekordfeltværdierne, så det skal vi udtrække. Lad os gå tilbage til vores brugerdefinerede kolonnedialogboks og tilføje Record.FieldsValues ​​.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Vi får nu en liste igen og ikke længere en rekord. Vi klikker ud til siden i det hvide rum igen, og du ser, at vi nu har en liste med netop disse værdier. Så det ser godt ud.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Lad os kopiere den fulde logik, som vi har oprettet, bortset fra de sidste afsluttende parenteser. Og nu kan vi fjerne vores midlertidige kolonne, fordi vi ikke længere har brug for den.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

På vores formellinje vælger vi vores anden liste og erstatter den med vores logik.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

For at oprette en liste med postfelternes værdier for kontakterne skal vi kun ændre suffikset. Så vi kan også vælge den sidste liste og indsætte vores logik.

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Så lad os i stedet for timer ændre dette til kontakter .

Ophæv pivot flere kolonner dynamisk i Lucky Templates

Ingen fejl og det ser godt ud. Dette er nu en dynamisk løsning til at frigøre flere kolonner.

Ophæv pivot flere kolonner dynamisk i Lucky Templates




Konklusion

Det er sådan, du deaktiverer flere kolonner dynamisk indved hjælp af List.Zip.

Hvis en ny attribut kommer ind, vil den automatisk blive hentet af AttributeList. Og når en vare ikke længere eksisterer, vil den ikke være til stede på listen.

Jeg håber, du har nydt denne. Se hele videoen nedenfor for flere detaljer om denne tutorial og tjek nedenstående links for mere indhold omkring unpivot flere kolonner i LuckyTemplates.

Alt det bedste

Melissa


Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Denne blog indeholder LuckyTemplates TOPN DAX-funktionen, som giver dig mulighed for at få unik indsigt fra dine data, hvilket hjælper dig med at træffe bedre markedsføringsbeslutninger.

Datamodellering i LuckyTemplates ved hjælp af understøttende tabeller

Datamodellering i LuckyTemplates ved hjælp af understøttende tabeller

Lær nogle fantastiske analytiske teknikker, som vi kan gøre til datamodellering i LuckyTemplates ved hjælp af DAX-understøttende tabeller.

Avanceret DAX til LuckyTemplates: Implementering af rangeringslogik på tværs af unikke indsigter

Avanceret DAX til LuckyTemplates: Implementering af rangeringslogik på tværs af unikke indsigter

Her dykker vi ned i LuckyTemplates Advanced DAX og implementerer rangeringslogik for at få en meget unik indsigt. Jeg viser også måleforgrening i dette eksempel.

LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Denne blog introducerer den nye funktion i LuckyTemplates, What-If-analyseparameteren. Du vil se, hvordan det gør alt hurtigt og nemt til din scenarieanalyse.

Brug LuckyTemplates Mål forgrening for at kontrollere, om dine avancer udvides, efterhånden som omsætningen vokser

Brug LuckyTemplates Mål forgrening for at kontrollere, om dine avancer udvides, efterhånden som omsætningen vokser

Lær, hvordan du afgør, om din omsætningsvækst er god ved at kontrollere, om dine avancer er udvidet ved hjælp af LuckyTemplates, der måler forgrening.

LuckyTemplates-parametre via forespørgselseditor

LuckyTemplates-parametre via forespørgselseditor

Lær og forstå, hvordan du kan oprette og bruge LuckyTemplates Parameters, som er en kraftfuld funktion i Query Editor.

Rundt søjlediagram – en visualisering til dit dashboard

Rundt søjlediagram – en visualisering til dit dashboard

Denne vejledning vil diskutere om oprettelse af et rundt søjlediagram ved hjælp af Charticulator. Du lærer, hvordan du designer dem til din LuckyTemplates-rapport.

PowerApps funktioner og formler | En introduktion

PowerApps funktioner og formler | En introduktion

Lær, hvordan du bruger PowerApps-funktioner og -formler til at forbedre funktionaliteten og ændre adfærd i vores Power Apps-lærredsapp.

Pipe In R: Tilslutningsfunktioner med Dplyr

Pipe In R: Tilslutningsfunktioner med Dplyr

I denne øvelse lærer du, hvordan du kæder funktioner sammen ved hjælp af dplyr-røroperatoren i programmeringssproget R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX fra LuckyTemplates giver dig mulighed for at returnere rangeringen af ​​et specifikt tal i hver tabelrække, der udgør en del af en liste over tal.