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
ndeshpande
Frequent Visitor

Checking for Partial Row Matches in the Same Table

 

Hi Folks,

I have an table called "Client_Shipments" with the following columns: [Client_name], [Send_location], [Receive_location], [Cost], [Error_rate]. I'm trying to check if for the client_name in each row, there's a match in the same table "Client_Shipments", which has the same values for [Send_Location], [Receive_Location], but does not have the same Client_name.

 

Basically, are there other clients who've sent something from the same start and end point? The [Cost] and [Error_rate] values do not need to match, since that's what I want to compare later. I created an example table below, along with the desired output in column [Match_found?].

 

Client_nameSend_locationReceive_locationCostError_rateMatch_found?
Client_ACANJ$10001%true
Client_AAZIL$30010%true
Client_AFLDE$4005%false
Client_BMACO15003%false
Client_BMOAK$5001%false
Client_BAZIL$4005%true
Client_BCANJ$12001%true

 

Any thoughts on how to make that work? Thank you in advance.

1 ACCEPTED SOLUTION
Smauro
Solution Sage
Solution Sage

Hi @ndeshpande 

You could add it as a new column:

 

Match_Found_Col =
VAR cl = [Client_name]
VAR sl = [Send_location]
VAR rl = [Receive_location]
VAR c =
    COUNTROWS (
        CALCULATETABLE (
            VALUES ( ClientOrders ),
            FILTER (
                ALL ( ClientOrders ),
                [Send_location] = sl
                    && [Receive_location] = rl
                    && [Client_name] <> cl
            )
        )
    ) + 0
RETURN
    IF ( c > 0, TRUE (), FALSE () )

 


Or as a measure:

 

Match_Found_Mes =
VAR cl =
    FIRSTNONBLANK ( ClientOrders[Client_name], 1 )
VAR sl =
    SELECTEDVALUE ( ClientOrders[Send_location], "123" )
VAR rl =
    SELECTEDVALUE ( ClientOrders[Receive_location], "123" )
VAR c =
    COUNTROWS (
        CALCULATETABLE (
            VALUES ( ClientOrders ),
            FILTER (
                ALL ( ClientOrders ),
                [Send_location] = sl
                    && [Receive_location] = rl
                    && [Client_name] <> cl
            )
        )
    ) + 0
RETURN
    IF ( c > 0, TRUE (), FALSE () )

 

 

Cheers


Edit: Ah, sorry @parry2k , I hadn't seen your answer.




Spyros Mavroforos

Data Consultant


Find me on LinkedIn or drop me an email

eSpyros

View solution in original post

4 REPLIES 4
Smauro
Solution Sage
Solution Sage

Hi @ndeshpande 

You could add it as a new column:

 

Match_Found_Col =
VAR cl = [Client_name]
VAR sl = [Send_location]
VAR rl = [Receive_location]
VAR c =
    COUNTROWS (
        CALCULATETABLE (
            VALUES ( ClientOrders ),
            FILTER (
                ALL ( ClientOrders ),
                [Send_location] = sl
                    && [Receive_location] = rl
                    && [Client_name] <> cl
            )
        )
    ) + 0
RETURN
    IF ( c > 0, TRUE (), FALSE () )

 


Or as a measure:

 

Match_Found_Mes =
VAR cl =
    FIRSTNONBLANK ( ClientOrders[Client_name], 1 )
VAR sl =
    SELECTEDVALUE ( ClientOrders[Send_location], "123" )
VAR rl =
    SELECTEDVALUE ( ClientOrders[Receive_location], "123" )
VAR c =
    COUNTROWS (
        CALCULATETABLE (
            VALUES ( ClientOrders ),
            FILTER (
                ALL ( ClientOrders ),
                [Send_location] = sl
                    && [Receive_location] = rl
                    && [Client_name] <> cl
            )
        )
    ) + 0
RETURN
    IF ( c > 0, TRUE (), FALSE () )

 

 

Cheers


Edit: Ah, sorry @parry2k , I hadn't seen your answer.




Spyros Mavroforos

Data Consultant


Find me on LinkedIn or drop me an email

eSpyros

@Smauro 

This is perfect, thank you!

parry2k
Super User
Super User

@ndeshpande you can try following method

 

Add new column and measure and measure will return true/false

 

Receive and Send Column = 'Table'[Receive_location] & 'Table'[Send_location]


Is Exist Measure = 
VAR __current = VALUES ( 'Table'[Receive and Send Column] )
VAR __client = SELECTEDVALUE ( 'Table'[Client_name] )
VAR __other = CALCULATETABLE ( VALUES ( 'Table'[Receive and Send Column] ), ALL ( 'Table'[Receive and Send Column] ), 'Table'[Client_name] <> __client )
VAR __isExist = CALCULATE ( COUNTROWS ( 'Table' ), INTERSECT ( __other, __current ) ) + 0
RETURN
IF ( __isExist = 0, "False", "True" )

 

I would  Kudos if my solution helped. 👉 If you can spend time posting the question, you can also make efforts to give Kudos whoever helped to solve your problem. It is a token of appreciation!

Visit us at https://perytus.com, your one-stop shop for Power BI related projects/training/consultancy.



Subscribe to the @PowerBIHowTo YT channel for an upcoming video on List and Record functions in Power Query!!

Learn Power BI and Fabric - subscribe to our YT channel - Click here: @PowerBIHowTo

If my solution proved useful, I'd be delighted to receive Kudos. When you put effort into asking a question, it's equally thoughtful to acknowledge and give Kudos to the individual who helped you solve the problem. It's a small gesture that shows appreciation and encouragement! ❤


Did I answer your question? Mark my post as a solution. Proud to be a Super User! Appreciate your Kudos 🙂
Feel free to email me with any of your BI needs.

Thanks for the quick response, I was thinking I'll probably need to convert the measure to a column. However the combining the relevant separate column values into a single colum was a great idea because it will simplify my searches later on. 

 

Thank you!

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