Hur man dynamiskt slår samman kolumner i en Power Query-tabell

I den här handledningen kommer vi att undersöka en intressant fråga som togs upp påom hur man dynamiskt slår samman ett ändrat antal kolumner i en Power Query-tabell. Du kan se hela videon av denna handledning längst ner på den här bloggen.

Det här scenariot handlar om export av rådata som gör att data spills in i ett okänt antal intilliggande kolumner. När du tittar på exemplet kan du se att beskrivningen har spillt över till kolumn 4 och beskrivning 2 har delats upp på två intilliggande kolumner. Men det kommer inte alltid att vara fallet. I nästa cykel kan detta antal kolumner ändras.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Innan vi går in i lösningen, låt oss undersöka M-koden som Power Query genererar när du slår samman kolumner.

Innehållsförteckning

Power Query Tabell M-kod

Det finns ett par sätt att slå samman kolumner. En är att välja både beskrivningskolumnen och trycka ner antingen skift- eller kontrolltangenten och sedan välja kolumn 4 också. Högerklicka sedan och välj Slå samman kolumner .

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Eller, påfliken, välj slå samman kolumner . Och den här dialogrutan kommer att visas, som låter dig välja separatorn.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

I popup-rutan väljer du Tab och du kan ange ett nytt kolumnnamn. I det här fallet döpte jag det till Beskrivning.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

I formelfältet ser vi M-koden som detta transformationssteg har skapat.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Om formelfältet inte är synligt på skärmen, gå till fliken Visa och aktivera den.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Så funktionen som Power Query använder för att slå samman kolumner är Table.CombinedColumns . Den första parametern som krävs är en tabell. Den tabellen returneras av föregående steg i vår kod, så i de tillämpade stegen ser du att detta kallas Källa .

Sedan hårdkodade den kolumnnamnen i en lista. Här ser du listinitierare, och mellan in-textvärden, kolumnnamnsbeskrivningen och kolumnnamnet kolumn 4. Sedan anropar den en annan M-funktion för att kombinera textvärdena i dessa kolumner.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Och slutligen skickar den det nya kolumnnamnet som en text så att vi kan justera det.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Så om vi vill att den här funktionen dynamiskt ska slå samman ett ändrande antal kolumner, måste vi ändra det andra parametervärdet som nu innehåller en lista med hårdkodade kolumnnamn.

Slår ihop ett växlande antal kolumner i en Power Query-tabell

Jag går tillbaka till min rådatafråga, och om vi tittar närmare på kolumnnamnen ser vi att var och en av spillkolumnerna är anonyma. De har inga egennamn, men de börjar alla med textkolumnen följt av en siffra. Låt oss se om vi kan använda det. Först skapar jag en referens genom att högerklicka här och välja Referens .

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Och för att få kolumnnamnen inuti formelfältet kan jag lägga till Table.ColumnNames . Denna funktion returnerar en lista med alla kolumnnamn från den tabellen. Låt oss förvandla detta tillbaka till en tabell genom att klicka på Till tabell .

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Klicka på OK i den här popup-rutan.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Sedan, på fliken Lägg till kolumn , väljer jag Format , och sedan Trim .

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Nu är det här inte en transformation som jag vill utföra, men det genererar huvuddelen av M-koden för mig. Allt jag behöver göra är.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Så inuti formelfältet, istället för Text.Trim , kan vi säga om Text.StartsWith , och sedan peka på vår kolumn 1 , så kopierar jag det direkt. Den vill ha den texten som vi letar efter, så det kommer att bli kolumn. Så om den börjar med en textkolumn så vill vi ha "null" – för allt annat vill vi ha vad som finns i kolumn 1. Vi kan också byta namn på den kolumnen, så inuti formelfältet, istället för Trim, låt oss kalla det GroupColumn .

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Nu behöver vi bara fylla dem med dessa värden. Så jag högerklickar på min rubrik, väljer Fyll och ner .

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Så nästa gång data kommer in och antalet kolumner har ändrats kommer den här gruppen automatiskt att ta upp det.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Låt oss byta namn på den här frågan, jag kallar den kolumngrupper.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Låt oss se till att laddningen har inaktiverats eftersom detta bara är en stödjande fråga.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Jag kan referera till den här stödjande frågan och jag byter namn på den senare. Låt oss lämna det för nu. Så om du kommer ihåg började vi med att slå samman två kolumner och det skapade en hårdkodad lista med kolumnnamnen , men nu kan vi filtrera på Beskrivning i vår GroupColumn .

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Så om vi gör det filtret på beskrivningen i kolumn 1 får vi de kolumner som uppfyller de kriterierna.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Detta är dock en tabell och inte en lista.eftersom vi måste inkludera dessa kolumner i vår sammanslagningsoperation. Så för att göra det kan vi högerklicka på vår kolumn 1-rubrik och välja Drill Down .

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Och nu får vi en lista. Så låt oss ge den här frågan ett rätt namn ( ListDescr ) och låt oss kontrollera om den är inaktiverad från laddning.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Nu kan vi gå tillbaka till vår resultatfråga och ersätta det andra argumentet här med vår dynamiska lista. Så här kan vi referera till vår ListDescr .

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Låt oss upprepa detta för beskrivning 2 också. Jag går till min kolumngrupper-fråga. Jag skapar en annan referens och väljer de kolumner som jag behöver. Sedan filtrerar jag Beskrivning 2, som returnerar dessa tre kolumner. Jag högerklickar på min rubrik och väljer Drill Down och byter namn på den här frågan också ( ListDescr2 ).

Jag går sedan tillbaka till min resultatfråga, väljer kolumn Beskrivning2 och trycker på antingen shift eller kontroll för att också välja nästa kolumn (kolumn2). Jag högerklickar på rubriken och väljer.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

I popup-rutan väljer jag Tab som Separator och jag kallar detta Beskrivning2.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell

Jag ska bara ändra kolumnnamnet här på formelfältet. Jag kommer att ändra den hårdkodade listan också från listan vi just skapade. Och nu har detta, som ni kan se, även plockat upp kolumn 8 som vi tidigare uteslutit.

Hur man dynamiskt slår samman kolumner i en Power Query-tabell




Slutsats

I den här bloggen har jag visat dig hur du använder M-koder i Power Query för att dynamiskt slå samman kolumner. Det är inte svårt så länge du är bekant med hur Power Query fungerar och vilka M-koder du ska använda.

Jag hoppas att du har njutit av den här. Kolla in länkarna nedan för mer relaterat innehåll.

Med vänliga hälsningar!

Melissa


Upptäck unika insikter med LuckyTemplates TOPN-funktion

Upptäck unika insikter med LuckyTemplates TOPN-funktion

Den här bloggen innehåller LuckyTemplates TOPN DAX-funktion, som gör att du kan få unika insikter från dina data, vilket hjälper dig att fatta bättre marknadsföringsbeslut.

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Lär dig några fantastiska analytiska tekniker som vi kan göra för datamodellering i LuckyTemplates med hjälp av DAX-stödtabeller.

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Här dyker vi in ​​i LuckyTemplates Advanced DAX och implementerar rankningslogik för att få en mycket unik insikt. Jag visar också upp måttförgrening i det här exemplet.

LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Den här bloggen introducerar den nya funktionen i LuckyTemplates, analysparametern What-If. Du kommer att se hur det gör allt snabbt och enkelt för din scenarioanalys.

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Lär dig hur du avgör om din intäktstillväxt är bra genom att kontrollera om dina marginaler ökade med hjälp av LuckyTemplates mäter förgrening.

LuckyTemplates parametrar via frågeredigerare

LuckyTemplates parametrar via frågeredigerare

Lär dig och förstå hur du kan skapa och använda LuckyTemplates-parametrar som är en kraftfull funktion i frågeredigeraren.

Runda stapeldiagram – En visualisering för din instrumentpanel

Runda stapeldiagram – En visualisering för din instrumentpanel

Denna handledning kommer att diskutera hur man skapar ett runt stapeldiagram med Charticulator. Du kommer att lära dig hur du designar dem för din LuckyTemplates-rapport.

PowerApps funktioner och formler | En introduktion

PowerApps funktioner och formler | En introduktion

Lär dig hur du använder PowerApps funktioner och formler för att förbättra funktionaliteten och ändra ett beteende i vår Power Apps canvas-app.

Pipe In R: Anslutningsfunktioner med Dplyr

Pipe In R: Anslutningsfunktioner med Dplyr

I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.