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

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Anonymous
Not applicable

return uncommon String after Comparisons

I want to compare two colums. Both of them contain strings.

I need to get the un common string in thrid column.

 

Col1

abc|def|ijk|bcd|plk

 

Col2

abc|plk|ijk

Col3 [Resulting Column ]
def|bcd

 

1 ACCEPTED SOLUTION
OwenAuger
Super User
Super User

Hi @Anonymous 

Off the top of my head, whether using M or DAX, I would:

  1. Split each of Col1 & Col2 into lists List1 & List2
  2. Take the union of List1 & List2, and remove the intersection of List1 & List2 (and remove duplicates & sort if desired)
  3. Concatenate the result

Attached PBIX has examples in M & DAX.

The step to add such a column in M in my example is:

= Table.AddColumn(#"Changed Type", "Col3 M",
        each let List1 = Text.Split([Col1],"|"),
                 List2 = Text.Split([Col2],"|"),
                 Union = List.Union({List1,List2}),
                 Intersection = List.Intersect({List1,List2}),
                 Uncommon = List.Sort(List.Distinct(List.Difference(Union,Intersection)))
             in
                 Text.Combine(Uncommon,"|"), type text)

The DAX calculated column version is:

Col3 DAX = 
VAR String1 = Test[Col1]
VAR String2 = Test[Col2]
VAR Length1 = PATHLENGTH ( String1 )
VAR Length2 = PATHLENGTH ( String2 )
VAR List1 =
    SELECTCOLUMNS (
        GENERATESERIES ( 1, Length1 ),
        "Value", PATHITEM ( String1, [Value] )
    )
VAR List2 =
    SELECTCOLUMNS (
        GENERATESERIES ( 1, Length2 ),
        "Value", PATHITEM ( String2, [Value] )
    )
VAR Uncommon = 
    DISTINCT (
        EXCEPT ( 
            UNION ( List1, List2 ),
            INTERSECT ( List1, List2 )
        )
    )
RETURN
    CONCATENATEX (
        Uncommon,
        [Value],
        "|",
        [Value]
    )

There could be some optimization, but that's what comes to mind 🙂

Hope that helps.

 

Regards,

Owen

 


Owen Auger
Did I answer your question? Mark my post as a solution!
Blog
LinkedIn

View solution in original post

1 REPLY 1
OwenAuger
Super User
Super User

Hi @Anonymous 

Off the top of my head, whether using M or DAX, I would:

  1. Split each of Col1 & Col2 into lists List1 & List2
  2. Take the union of List1 & List2, and remove the intersection of List1 & List2 (and remove duplicates & sort if desired)
  3. Concatenate the result

Attached PBIX has examples in M & DAX.

The step to add such a column in M in my example is:

= Table.AddColumn(#"Changed Type", "Col3 M",
        each let List1 = Text.Split([Col1],"|"),
                 List2 = Text.Split([Col2],"|"),
                 Union = List.Union({List1,List2}),
                 Intersection = List.Intersect({List1,List2}),
                 Uncommon = List.Sort(List.Distinct(List.Difference(Union,Intersection)))
             in
                 Text.Combine(Uncommon,"|"), type text)

The DAX calculated column version is:

Col3 DAX = 
VAR String1 = Test[Col1]
VAR String2 = Test[Col2]
VAR Length1 = PATHLENGTH ( String1 )
VAR Length2 = PATHLENGTH ( String2 )
VAR List1 =
    SELECTCOLUMNS (
        GENERATESERIES ( 1, Length1 ),
        "Value", PATHITEM ( String1, [Value] )
    )
VAR List2 =
    SELECTCOLUMNS (
        GENERATESERIES ( 1, Length2 ),
        "Value", PATHITEM ( String2, [Value] )
    )
VAR Uncommon = 
    DISTINCT (
        EXCEPT ( 
            UNION ( List1, List2 ),
            INTERSECT ( List1, List2 )
        )
    )
RETURN
    CONCATENATEX (
        Uncommon,
        [Value],
        "|",
        [Value]
    )

There could be some optimization, but that's what comes to mind 🙂

Hope that helps.

 

Regards,

Owen

 


Owen Auger
Did I answer your question? Mark my post as a solution!
Blog
LinkedIn

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

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

July PBI25 Carousel

Power BI Monthly Update - July 2025

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

Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.