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

Get inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.

Reply
RichardF-CRC
New Member

Join 2 data source as a view and transpose results turning rows in to columns

I have 2 data sources from web-service APIs from a proprietary service.

Table A has the items i want to report

Table B has "field values" that i want to include but they are stored as variable types within Table B.

 

Table A is 1:M(optional) to Table B

 

I have already joined these two tables with this simple relationship.

note that not every value in A has every field in B - the rows returned in B can vary

So I get 

A.ItemB.codeB.description
001B.field_nameStatus
001B.field_valueOpen
001B.field_nameUser
001B.field_valueBob
002B.field_nameStatus
002B.field_valueClosed
002B.field_nameUser
002B.field_valueJune
002B.field_namePriority
002B.field_value1

 

and i want to transform it in to

ItemStatusUserPriority
001OpenBob 
002ClosedJune1
1 ACCEPTED SOLUTION
v-heq-msft
Community Support
Community Support

Hi @RichardF-CRC ,
A

Item
001
002
003

B

 

Item code description
001 B.field_name Status
001 B.field_value Open
001 B.field_name User
001 B.field_value Bob
002 B.field_name Status
002 B.field_value Closed
002 B.field_name User
002 B.field_value June
002 B.field_name Priority
002 B.field_value 1

vheqmsft_0-1735020085208.png

 

Chnage B with power query

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjAwVNJRctJLy0zNSYnPS8xNBXKDSxJLSouVYnXQ5csSc0pBCvwLUvOwSEO1hxanFuHR7JSfBJU1ImC1ERbdzjn5xakpuA1Ashybdq/SvFTcmgOKMvOLMksq8RhgqBQbCwA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Item = _t, code = _t, description = _t]),
    FieldNames = Table.SelectRows(Source, each Text.Contains([code], "field_name")),
    FieldValues = Table.SelectRows(Source, each Text.Contains([code], "field_value")),
    FieldNamesWithIndex = Table.AddIndexColumn(FieldNames, "Index", 0, 1, Int64.Type),
    FieldValuesWithIndex = Table.AddIndexColumn(FieldValues, "Index", 0, 1, Int64.Type),
    MergedTable = Table.NestedJoin(FieldValuesWithIndex,{"Item", "Index"},FieldNamesWithIndex,{"Item", "Index"},"Table",JoinKind.Inner),
    #"Expanded Table" = Table.ExpandTableColumn(MergedTable, "Table", {"code", "description", "Index"}, {"Table.code", "Table.description", "Table.Index"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Table",{"Index", "Table.Index", "code", "Table.code"}),
    #"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Table.description]), "Table.description", "description")
in
    #"Pivoted Column"

Final output

vheqmsft_1-1735020140684.png

 

Best regards,
Albert He


If this post helps, then please consider Accept it as the solution to help the other members find it more quickly

 

 

View solution in original post

1 REPLY 1
v-heq-msft
Community Support
Community Support

Hi @RichardF-CRC ,
A

Item
001
002
003

B

 

Item code description
001 B.field_name Status
001 B.field_value Open
001 B.field_name User
001 B.field_value Bob
002 B.field_name Status
002 B.field_value Closed
002 B.field_name User
002 B.field_value June
002 B.field_name Priority
002 B.field_value 1

vheqmsft_0-1735020085208.png

 

Chnage B with power query

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjAwVNJRctJLy0zNSYnPS8xNBXKDSxJLSouVYnXQ5csSc0pBCvwLUvOwSEO1hxanFuHR7JSfBJU1ImC1ERbdzjn5xakpuA1Ashybdq/SvFTcmgOKMvOLMksq8RhgqBQbCwA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Item = _t, code = _t, description = _t]),
    FieldNames = Table.SelectRows(Source, each Text.Contains([code], "field_name")),
    FieldValues = Table.SelectRows(Source, each Text.Contains([code], "field_value")),
    FieldNamesWithIndex = Table.AddIndexColumn(FieldNames, "Index", 0, 1, Int64.Type),
    FieldValuesWithIndex = Table.AddIndexColumn(FieldValues, "Index", 0, 1, Int64.Type),
    MergedTable = Table.NestedJoin(FieldValuesWithIndex,{"Item", "Index"},FieldNamesWithIndex,{"Item", "Index"},"Table",JoinKind.Inner),
    #"Expanded Table" = Table.ExpandTableColumn(MergedTable, "Table", {"code", "description", "Index"}, {"Table.code", "Table.description", "Table.Index"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Table",{"Index", "Table.Index", "code", "Table.code"}),
    #"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Table.description]), "Table.description", "description")
in
    #"Pivoted Column"

Final output

vheqmsft_1-1735020140684.png

 

Best regards,
Albert He


If this post helps, then please consider Accept it as the solution to help the other members find it more quickly

 

 

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code FABINSIDER for a $400 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

Check out the February 2025 Power BI update to learn about new features.

March2025 Carousel

Fabric Community Update - March 2025

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