Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
SusuYes
Helper III
Helper III

Transpose Repeating Header Rows into Column Headers after Merging

I have an ICS calendar that I am trying to transform in PowerBI. However, the data I recieve is organised as follows:

Data
Event: NAME XXX
Date: xx xx xx
Location: NOWHERE
URL: www.hi.com
Event: NAME YYY
Date: yy yy yy
Location: SOMEHWERE
URL: www.hello.com

... and so on

I need to be able promote the text before the : delimiter on every four rows as headers. so that my data looks like this:

Event Date Location URL
NAME Xxx xx xxSOMEHWEREhello.com
NAME Yxx xx xxNOWHEREbye.com

I can use SQL or Python or data visualisation software such as PowerBI, alternatively, good ol' Excel works fine.

I tried other tools and workarounds such as uploading the ICS calendar into my Outlook calendar and then exporting the calendar. This worked fine but it is a work around.

 

These are the steps I followed so far: Most of the steps are data cleaning excepting the grouping at the end. 

SusuYes_0-1668579867320.png

however, I cannot properly expand the tables without causing a mess with the data. 

 

Any helps would be appreciated. The data can be found here: shorturl.at/ektHK 

 

1 ACCEPTED SOLUTION
wdx223_Daniel
Super User
Super User

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wci1LzSuxUvBz9HVViIiIUIrViVZySSxJtVKoqIAgsJBPfnJiSWZ+HlClf7iHa5ArWDQ0yMdKoby8XC8jUy85PxcshmxgZGQkkoGVlRCEZmCwv6+rRzimkak5OfkQU2MB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    Custom1 = Table.FromRecords(Table.Group(Source,"Column1",{"n",each Record.FromTable(#table({"Name","Value"},List.Transform([Column1],each Splitter.SplitTextByDelimiter(": ")(_))))},0,(x,y)=>Byte.From(Text.StartsWith(y,"Event")))[n])
in
    Custom1

wdx223_Daniel_0-1668588832495.png

 

View solution in original post

1 REPLY 1
wdx223_Daniel
Super User
Super User

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wci1LzSuxUvBz9HVViIiIUIrViVZySSxJtVKoqIAgsJBPfnJiSWZ+HlClf7iHa5ArWDQ0yMdKoby8XC8jUy85PxcshmxgZGQkkoGVlRCEZmCwv6+rRzimkak5OfkQU2MB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    Custom1 = Table.FromRecords(Table.Group(Source,"Column1",{"n",each Record.FromTable(#table({"Name","Value"},List.Transform([Column1],each Splitter.SplitTextByDelimiter(": ")(_))))},0,(x,y)=>Byte.From(Text.StartsWith(y,"Event")))[n])
in
    Custom1

wdx223_Daniel_0-1668588832495.png

 

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors
Top Kudoed Authors