Advance your Data & AI career with 50 days of live learning, dataviz contests, hands-on challenges, study groups & certifications and more!
Get registeredJoin us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM. Register now.
The problem is the following:
I need to match two tables, I'm using Left Outer Join.
Second table can have 0,1,2 or more matches.
If I use expand after matching the columns are duplicated.
What I want is to extract matching result (Table) to a single text string.
For example, table1:
ID name
1 mark
2 jack
3 robert
Table2:
ID profession phone
1 health
1 cleaning
2 manager
after join by using ID
ID name joined
1 mark health,cleaning
2 jack manager
3 robert null
Solved! Go to Solution.
@Vampirtc , you are only one step away from your goal,
let
Table1 = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUcpNLMpWitWJVjICcrISkyEcYyCnKD8ptahEKTYWAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, name = _t]),
Table2 = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUcpITcwpyVCK1YFwk3NSE/My89LBAkZAgdzEvMT01CKl2FgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Profession = _t]),
#"Left Outer join" = Table.NestedJoin(Table1, "ID", Table2, "ID", "joined", JoinKind.LeftOuter),
Concatenation = Table.TransformColumns(#"Left Outer join", {"joined", each Text.Combine([Profession], ", ")})
in
Concatenation
| Thanks to the great efforts by MS engineers to simplify syntax of DAX! Most beginners are SUCCESSFULLY MISLED to think that they could easily master DAX; but it turns out that the intricacy of the most frequently used RANKX() is still way beyond their comprehension! |
DAX is simple, but NOT EASY! |
@Vampirtc , you are only one step away from your goal,
let
Table1 = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUcpNLMpWitWJVjICcrISkyEcYyCnKD8ptahEKTYWAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, name = _t]),
Table2 = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUcpITcwpyVCK1YFwk3NSE/My89LBAkZAgdzEvMT01CKl2FgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Profession = _t]),
#"Left Outer join" = Table.NestedJoin(Table1, "ID", Table2, "ID", "joined", JoinKind.LeftOuter),
Concatenation = Table.TransformColumns(#"Left Outer join", {"joined", each Text.Combine([Profession], ", ")})
in
Concatenation
| Thanks to the great efforts by MS engineers to simplify syntax of DAX! Most beginners are SUCCESSFULLY MISLED to think that they could easily master DAX; but it turns out that the intricacy of the most frequently used RANKX() is still way beyond their comprehension! |
DAX is simple, but NOT EASY! |
Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!
Check out the October 2025 Power BI update to learn about new features.