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

Calling all Data Engineers! Fabric Data Engineer (Exam DP-700) live sessions are back! Starting October 16th. Sign up.

Reply
anandav
Skilled Sharer
Skilled Sharer

Generating row value combinations

Hi,

 

I am trying to generate combination of values found in row data.

 

Source Data

CustomerColumn2
PaulA
PaulB
PaulC
TomD
TomE
TomF
JerryH
JerryI
JerryJ

 

Expected Output

CustomerCombined Column
PaulA-B
PaulA-C
PaulB-C
TomD-E
TomD-F
TomE-F
JerryH-I
JerryH-J
JerryI-J

 

Any suggestion on how this can be achieved either in M or DAX?

Even if the combinations are repeated, for example  A-B and B-A, I am fine with that.

 

Thanks in advance for your help.

Anand.

3 ACCEPTED SOLUTIONS
Greg_Deckler
Community Champion
Community Champion

This seems close, albeit with duplicates:

 

Table = 
VAR __tmpTable1 = SELECTCOLUMNS(ALL('Data'),"__Customer",[Customer],"__Column2",[Column2])
VAR __tmpTable2 = SELECTCOLUMNS(ALL('Data'),"___Customer",[Customer],"___Column2",[Column2])
VAR __tmpTable3 = FILTER(GENERATE(__tmpTable1,__tmpTable2),[__Customer]=[___Customer]&&([__Column2]>[___Column2]||[__Column2]<[___Column2]))
VAR __tmpTable4 = ADDCOLUMNS(__tmpTable3,"__CombinedColumn",[__Column2]&"-"&[___Column2])
RETURN SELECTCOLUMNS(__tmpTable4,"Customer",[__Customer],"Combined Column",[__CombinedColumn])


Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

Hi,

 

See the image.  Download file from here.

 

Untitled.png


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

View solution in original post

@Greg_Deckler,

Thanks to your solution I made a minor adjustment to step3. Removed "[__Column2]>[___Column2]||". And that gave the exact result I nmeeded.

 

VAR __tmpTable3 =
    FILTER (
        GENERATE ( __tmpTable1, __tmpTable2 ),
        [__Customer] = [___Customer]
            && ([__Column2] < [___Column2] )
    )

 

Capture.JPG

View solution in original post

9 REPLIES 9
Ashish_Mathur
Super User
Super User

Hi,

 

Here's the M code i used

 

let
    Source = Table.NestedJoin(Data,{"Customer"},#"Data (2)",{"Customer"},"Data (2)",JoinKind.LeftOuter),
    #"Expanded Data (2)" = Table.ExpandTableColumn(Source, "Data (2)", {"Column2"}, {"Column2.1"}),
    #"Added Custom" = Table.AddColumn(#"Expanded Data (2)", "Custom", each [Column2]&"-"&[Column2.1]),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Column2", "Column2.1"})
in
    #"Removed Columns"


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

@Ashish_Mathur,

I downloaded the data into a table named Data.

Then from Get Source I selected Blank Query and type your M code.

But it does not create a table. I get the following:

Capture.JPG

Hi,

 

See the image.  Download file from here.

 

Untitled.png


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

@Ashish_Mathur,

That is a very simple solution using M.

Thanks a lot.

 

It needs some tweaking to remove same letter combination, e.g. A-A, but still very easy to achieve.

Thank you for your help.

You are welcome.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
Greg_Deckler
Community Champion
Community Champion

This seems close, albeit with duplicates:

 

Table = 
VAR __tmpTable1 = SELECTCOLUMNS(ALL('Data'),"__Customer",[Customer],"__Column2",[Column2])
VAR __tmpTable2 = SELECTCOLUMNS(ALL('Data'),"___Customer",[Customer],"___Column2",[Column2])
VAR __tmpTable3 = FILTER(GENERATE(__tmpTable1,__tmpTable2),[__Customer]=[___Customer]&&([__Column2]>[___Column2]||[__Column2]<[___Column2]))
VAR __tmpTable4 = ADDCOLUMNS(__tmpTable3,"__CombinedColumn",[__Column2]&"-"&[___Column2])
RETURN SELECTCOLUMNS(__tmpTable4,"Customer",[__Customer],"Combined Column",[__CombinedColumn])


Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

@Greg_Deckler,

Thanks to your solution I made a minor adjustment to step3. Removed "[__Column2]>[___Column2]||". And that gave the exact result I nmeeded.

 

VAR __tmpTable3 =
    FILTER (
        GENERATE ( __tmpTable1, __tmpTable2 ),
        [__Customer] = [___Customer]
            && ([__Column2] < [___Column2] )
    )

 

Capture.JPG

@Greg_Deckler,

That's works! Excellent solution!

Thanks a lot for the prompt reply.

 

I can sort out the duplicate combination.

Thanks you.

Aree
Resolver I
Resolver I

Not sure if this helps you or if i understand what you are attempting to achieve becuase the Combine Column values seem random.
If am wrong and they are not random i apologise.

 

For a given Customer Paul join the first letter of their name with the value in Column2

Combination = [Column2] &"-"& LEFT( [Customer],1 )

The result will be: A-P

Helpful resources

Announcements
FabCon Global Hackathon Carousel

FabCon Global Hackathon

Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!

September Power BI Update Carousel

Power BI Monthly Update - September 2025

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

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Solution Authors
Top Kudoed Authors