Forum Discussion
Power BI - Use List to Generate Column Headers when Splitting Column by Delimiter
- Anonymous3 years ago
Hi amitchandak ,
I figured out how to do this.
Rather than having the List.Transform function select the number of columns, I added referenced my list here, then amended the "each" clause to it pulled the name from the list. As below:
= Table.SplitColumn(#"Added Data Source", "Taxonomy_Campaign", Splitter.SplitTextByDelimiter(#"DV360 Campaign Name - Delimiter", QuoteStyle.Csv), List.Transform(#"DV360 Campaign Name - Fields", each Text.From(_)))Thanks,
Mark
Anonymous ,
Can you share sample data and sample output in table format? Or a sample pbix after removing sensitive data.
Check if these can help
Calculation Groups- Measure Slicer, Measure Header Grouping, Measure to dimension conversion. Complex Table display : https://youtu.be/qMNv67P8Go0
Show dynamic column name
https://perytus.com/2021/02/04/improve-ux-show-year-in-legend-when-using-time-intelligence-measures/
dynamic Column Header
https://www.youtube.com/watch?v=yEemVBiaTuk
https://www.goodly.co.in/dynamic-column-names-power-query/
https://www.thebiccountant.com/2018/07/04/efficiently-rename-column-names-with-a-function-in-power-bi-and-power-query/
https://community.powerbi.com/t5/Desktop/Dynamic-column-name-from-its-value/td-p/189442
- Anonymous3 years agoNot applicable
Hi amitchandak ,
I'm not able to upload a PBIX or Excel file so I'll need to copy some rows into a table:
Campaign ID Campaign Name Taxonomy_Campaign MinDate MaxDate Impressions 1
036029 | NNOOPH | FYNSOH | SYDNEY OPERA HOUSE | FIND YOUR SYDNEY OPERA HOUSE | PO CODE (MBA) | 04-DEC-22 | 18-DEC-22 036029 | NNOOPH | FYNSOH | SYDNEY OPERA HOUSE | FIND YOUR SYDNEY OPERA HOUSE | PO CODE (MBA) | 04-DEC-22 | 18-DEC-22 08/12/2022 18/12/2022 338831 2 035021 | NTRTRN | EDDYAA | TRANSPORT FOR NSW | EDDY AVENUE | PO CODE (MBA) | 14-NOV-22 | 25-JAN-23 035021 | NTRTRN | EDDYAA | TRANSPORT FOR NSW | EDDY AVENUE | PO CODE (MBA) | 14-NOV-22 | 25-JAN-23 16/11/2022 18/12/2022 1065397 3 033925 | NGDOCS | N/A | NSW GOV - SYDNEY OPERA HOUSE | AMADEUS | N/A | 06-OCT-22 | 22-JAN-23 033925 | NGDOCS | N/A | NSW GOV - SYDNEY OPERA HOUSE | AMADEUS | N/A | 06-OCT-22 | 22-JAN-23 08/10/2022 18/12/2022 743704 4 033911 | NLREPA | CLEANA | NSW GOV - ENVIRONMENTAL PROTECTION AUTHORITY | CLEAN FILL | 07-OCT-22 | 31-OCT-23 033911 | NLREPA | CLEANA | NSW GOV - ENVIRONMENTAL PROTECTION AUTHORITY | CLEAN FILL | 07-OCT-22 | 31-OCT-23 26/10/2022 01/11/2022 398403 5 034744 | NTRTRN | DRKDRA | NSW GOV - TRANSPORT NSW | DRINK DRIVING | PO CODE (MBA) | 26-OCT-22 | 25-MAY-23 034744 | NTRTRN | DRKDRA | NSW GOV - TRANSPORT NSW | DRINK DRIVING | PO CODE (MBA) | 26-OCT-22 | 25-MAY-23 26/10/2022 27/10/2022 9 6 033710 | NLRTAR | WLDREA | TARONGA ZOO | WILDLIFE RETREAT | VIDEO | 06-OCT-22 | 17-DEC-22 033710 | NLRTAR | WLDREA | TARONGA ZOO | WILDLIFE RETREAT | VIDEO | 06-OCT-22 | 17-DEC-22 06/10/2022 18/12/2022 2809713 7 035824 | NNROPH | VELVRA | NSW GOV - SYDNEY OPERA HOUSE | VELVET REWIRED | PO CODE (MBA) | 21-NOV-22 | 17-DEC-22 035824 | NNROPH | VELVRA | NSW GOV - SYDNEY OPERA HOUSE | VELVET REWIRED | PO CODE (MBA) | 21-NOV-22 | 17-DEC-22 29/11/2022 18/12/2022 165450 8 035181 | NLREPA | ASBAWA | NSW GOV - ENVIRONMENTAL PROTECTION AUTHORITY | ASBESTOS AWARENESS | 13-NOV-22 | 30-JUN-23 035181 | NLREPA | ASBAWA | NSW GOV - ENVIRONMENTAL PROTECTION AUTHORITY | ASBESTOS AWARENESS | 13-NOV-22 | 30-JUN-23 18/11/2022 18/12/2022 1327217 9 034744 | NTRTRN | DRKDRA | NSW GOV - TRANSPORT FOR NSW | DRINK DRIVING | PO CODE | YOUTUBE | 06-OCT-22 | 30-OCT-22 034744 | NTRTRN | DRKDRA | NSW GOV - TRANSPORT FOR NSW | DRINK DRIVING | PO CODE | YOUTUBE | 06-OCT-22 | 30-OCT-22 08/10/2022 31/10/2022 2336278 I'm splitting the Taxonomy_Campaign column. It's the result of this splilt that I'm trying to dynamically rename.
I've given the M Query info for this too, if that helps:
Main Table -
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("xVbbbuMgEP0VlKddqVZgMLdHGkji1oEIY0feKn/Sj1+InbXTOtLuSk1frMEY5szMOTN+e1sxUMAxw6unFaYcg0LvyDnvj/tkbHvX+Gw0vXG2R/5og0Z73zY271bOoN63YXn76NHGG4t+HJ71z7TGZWHspgBINpGj/Y1u5ZrAGvBlQeYLSqWkZHV+ytmRnGCiLjAZBpJhxhCDS4Y1ptc6GTFo1xx9iGjrA3LNadxEurOuXQJFysL5bgAFrHjRrgD6KCeErwlZjJxgzqgSY+gCK6DygooqYBnVzvhNk411hpRB7HyHiuVK6IM2tp0+x7zwmzjigXnQX3t9ihAvhitKKnB5jbZkDMgIh1xqUAd7zDdvaqvdLSLruip4d7Au6hodg492EyvvkG7j3ocq9tdzia91neGJCR4lg00f7w74LBuYzJhAlSwxvWaDUKBDNkpRlnNGmvBqwi28iZsDL02o3Gt+dpXbLTAT5qVixUH311w80NlNJkDMFuqaBMCMsKFGguChRlGHZJxqE+xFljrVZafRL+/z66o2dbW1KNiY9mN61VXG+g/0JGLe/r7wbn6P+iCxSjW+NjnFFQwjgEm4FMCFoRd3tu7CX6gxf2djwnaqgjVLZSBTN7qN/+EuQd1tgJyVaRaOWSk5yBEikTcS1c2zPv2HRNM520TfoHQ6WGeb3L4InWBSXLy00zD4Drc5IXeyQ5MkiJgaZvpz+HfVTuPrnnLf83iP7bP9QO2EcrC/zel8lFAy7x+UchDyT/cErvgobpBzcbs6qfmzuPNzGyrrTJOG1xroZxQzXnzFpeJeq1BckDwZz+ff", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Campaign_ID = _t, Campaign_Name = _t, Taxonomy_Campaign = _t, MinDate = _t, MaxDate = _t, Total_Impressions = _t]), #"Split Column by Delimiter - Campaign Name" = Table.SplitColumn(Source, "Taxonomy_Campaign", Splitter.SplitTextByDelimiter(#"DV360 Campaign Name - Delimiter", QuoteStyle.Csv), List.Transform({1..#"DV360 Campaign Name - Count of Delimiters"+1}, each "Campaign Field."&Text.From(_))) in #"Split Column by Delimiter - Campaign Name"Here are the look up fields, in row order:
1 IO Number 2 Client Code 3 Product Code 4 Campaign 5 Detail 6 Start Date 7 End Date And here's the M Query for this table:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8vRX8CvNTUotUorViVZyzslMzStRcM5PSQXzA4ryU0qTkQScE3MLEjPT88Acl9SSxMwcMDO4JLGoRMElsQSizDUvBcqJBQA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]), Column1 = Source[Column1] in Column1Thanks,
Mark
- Anonymous3 years agoNot applicable
Hi amitchandak ,
I figured out how to do this.
Rather than having the List.Transform function select the number of columns, I added referenced my list here, then amended the "each" clause to it pulled the name from the list. As below:
= Table.SplitColumn(#"Added Data Source", "Taxonomy_Campaign", Splitter.SplitTextByDelimiter(#"DV360 Campaign Name - Delimiter", QuoteStyle.Csv), List.Transform(#"DV360 Campaign Name - Fields", each Text.From(_)))Thanks,
Mark
- Anonymous3 years agoNot applicable
Hi amitchandak ,
I posted a whole response to this, but for some reason it's totally disappeared. However ... I've made some progress with a potential solution. But I still need some help.
I've done a standard splittextbydelimiter to see the coding. When I do this, I see the following:
Table.SplitColumn(#"Taxonomy Match - Line Item", "Campaign_Name", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), {"Campaign_Name.1", "Campaign_Name.2", "Campaign_Name.3", "Campaign_Name.4", "Campaign_Name.5", "Campaign_Name.6", "Campaign_Name.7"})So I wondered if I could perhaps convert my list into a string, to then pass through where different Column Names appear. So I tried the following:
= Table.SplitColumn(#"Taxonomy Match - Line Item", "Campaign_Name", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), {Text.Combine(#"DV360 Campaign Name - Fields",",")})With this I'm trying to create the string. In my list table, I added "" to the start and end of each row. However when I go this, it renames the first column with this string, as below:
Do you know how I can convert this string to replace the code so it uses each field from the list as a Header for each column?
Thanks,
Mark