Forum Discussion

Alicia_Anderson's avatar
Alicia_Anderson
Resolver I
6 years ago
Solved

How to merge two tables based on a partial match

I have two tables each with one column:  Release Table [Release] & Release CID Table [Release CID].

I want to associate Release CID to Release based on whether there is a exact match first and if not, if there is a partial match.   

 

I can merge the two queries just fine if there is an exact match.    If there isn't an exact match, I want it to search for the closest partial match.   For example:   "ABCD 11.1.5" does not exist in Release CID but there is a match on the first 7 digits to "ABCD 11".

If there is no match, I want it to show "None".    Note for row 5, "ABCD 11.4.1 HF1" should match to "ABCD 11.4.1" not "ABCD 11" as this is more complete match.     

 

RowRelease Table

Row

Release CID TableRowNew Release Tablewith Release CID
1ABCD 11.1.51ABCD 111ABCD 11.1.5ABCD 11
2ABCD 11.22ABCD 11.4.12ABCD 11.2ABCD 11
3ABCD 11.4.03ABCD 11.53ABCD 11.4.0ABCD 11
4ABCD 11.4.14XYZ 17.14ABCD 11.4.1ABCD 11.4.1
5ABCD 11.4.1 HF15XYZ 17.1 CU45ABCD 11.4.1 HF1ABCD 11.4.1
6ABCD 11.56XYZ 17.1_CU106ABCD 11.5.0ABCD 11.5
7ABCD 11.5.0 HF3  7ABCD 11.5.0 HF3ABCD 11.5
8ABCD 11.6  8ABCD 11.6None
9EFG 1.0  9EFG 1.0None
10XYZ 17.1   10XYZ 17.1 XYZ 17.1 
11XYZ 17.1 CU1  11XYZ 17.1 CU1XYZ 17.1 
12XYZ 17.1 CU2  12XYZ 17.1 CU2XYZ 17.1 CU4
13XYZ 17.1 CU4 WC1  13XYZ 17.1 CU4 WC1XYZ 17.1 CU4
14XYZ 17.1_CU10 WC1  14XYZ 17.1_CU10 WC1XYZ 17.1_CU10
15YYZ 18  15XYZ 18None

 

  • ImkeF's avatar
    ImkeF
    6 years ago

    Hi Alicia_Anderson ,

    my code included the small letter L "l" and not 1. 

    The reason for your error message is that you used a number instead. 

    So either replacing it with any character or a string like Jimmy801  mentioned should solve the problem.

     

    BTW: It might be more suitable for your use case to use the "Text.StartWith"- function instead of the "Text.Contains"-function.

     

15 Replies

  • Greg_Deckler's avatar
    Greg_Deckler
    Community Champion

    The Query Editor's Merge query function has fuzzy matching capabilities.

    • Alicia_Anderson's avatar
      Alicia_Anderson
      Resolver I

      I did try that with a couple variations.  Everytime it returned only errors for each item.    

    • Alicia_Anderson's avatar
      Alicia_Anderson
      Resolver I

      Yes, it matches but I want it to only match to one value and I want it to be the one with the most characters matched.   

       

       

      • ImkeF's avatar
        ImkeF
        Community Champion

        Having problems to understand that logic: How about those other duplicates then?

         

         

  • I am having a hard time getting this to work.   I get an error "Token Identifer expected".   It seems to have a problem with the (1).   See image.

      • Jimmy801's avatar
        Jimmy801
        Community Champion

        Hello Alicia_Anderson 

         

        try to substitute this code

        (l) => Text.Contains( [Release Table], l)

        with this one

        (oneint) => Text.Contains( [Release Table], oneint)

        Hope this helps

         

        Jimmy