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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Anonymous
Not applicable

How to extract continuous string set from a column with multiple criteria

Hi,

I have a Column A with client names.
Table 1                                                                      Table 2
Client Name                                                              Ongoing Projects
Microsoft Corporation Ltd                                        Microsoft
BARCALAYS (LLP)                                                      Barcalays
Caseys General                                                          Casey's
LLP Ernst and Young                                                 Ernst and Young
ASTRAZENCALimited                                                Astrazanca

I want to search and extract the client names from Table 1 as below:
Result Column
Microsoft
Barcalays
Casey
Ernst and Young
Astrazenca

Basically the logic I am looking for is as below. The function/formula should check for continuous sequence of characters from Table B in Table A and return that entire sequence. Also this search should be case insensitive (For ex: BARCALAYS and Barcalays) and also the search text can be in between the within text column anywhere and not necessarily at the beginning (Ex: LLP Ernst and Youngand Ernst and Young).
One important criteria is it should return matches for continuous string greater than 2 (i.e; 3 and above).

I tried various formulae like Search, Find, Minx, Left but I am not getting the desired result with the above set of criteria met. Please help me with the logical formula for this.

Happy to give any additional info pertaining to this.

1 ACCEPTED SOLUTION

@Anonymous - OK, I updated this with a Client Name output version and Project output version in 2 additional columns. I checked the matches, don't see anything obviously amiss. Solved?

 

PBIX is attached. 

 


@ 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!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

53 REPLIES 53
Anonymous
Not applicable

@Greg_DecklerThe formula you gave returns unnecessary values as mentioned below.

 

Client Name:              Ongoing Projects

Gander ABC                Anderson
Anderson Tech           Ionis

Pivot Solutions           Covenant

Microsoft Corp           Microsoft

Embarcadero Cap      Barclays

 

Result Data

Client Name               Result

Gander ABC               Ander    (since 'Ander' is present in Anderson)

Anderson Tech          Anderson  (No issues)

Pivot Solutions          Ion (since 'Ion' is present in Ionis)

Embarcadero Cap      Barc (since 'Barc' is present in Barclays)

Microsoft Corp          Microsoft (No issues)

 

I have shared the two files ('client name' and 'ongoing projects') in the drive for your reference. Like you can see in the .png image, the results are retunred as per the example above.

@Anonymous - Just increase your matching threshold. It is the GENERATESERIES statement where it currently starts at 1, set the threshold to be 5 for example. So, it will need to match at least 5 characters to be considered a match. I actually called this out in the slightly improved version I posted to the Quick Measures Gallery.

https://community.powerbi.com/t5/Quick-Measures-Gallery/Fuzzy/td-p/1352914

 

Otherwise, open to advice on how you want the algorithm to work. It is fuzzy matching after all, hard to eliminate 100% of the false positives. It kind of goes with the territory. Might be possible to do some kind of logic where it tries to evaluate position of the match within the Client Name maybe? Could get hairy.

I just want to point out, I've spent hours and hours on this thing, not a single Kudo. Just saying.


@ 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!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@Greg_DecklerSorry, marked the post as solution by mistake. Reverted the same.

 

I cannot set the threshold to 5 because there are some Ongoing Projects with just 3 characters (Like: ABB) which matches with the client name. I tried various clean options based on your logic but there is ambiguity (For example 'Casey; has no space after match, 'Ion' has no space after match). This has given me a very bad headache. I can only image what pain you must have gone through.

@Anonymous - What if we set a second threshold and if the match is below that threshold it must be an exact match? What do you think about that approach? Now that I understand the issue, I'll take a look at building this out with all of your data and see what I can do.


@ 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!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...

@Anonymous Here is an implementation of the logic I proposed. PBIX is attached below sig with your full dataset. It has the CleanMatchThreshold set to 5 but I think it works better at 4

 

Fuzzy Column = 
    VAR __MatchThreshold = 3
    VAR __CleanMatchThreshold = 5
    VAR __WordSearchTable = 
        GENERATE(
            'Ongoing Projects',
                VAR __Word = MAXX(FILTER('Ongoing Projects',[Index]=EARLIER('Ongoing Projects'[Index])),[Ongoing Projects])
            RETURN ADDCOLUMNS(GENERATESERIES(3,LEN(__Word),1),"Search",LEFT(__Word,[Value]))
        )
    VAR __Table =
        FILTER(
            ADDCOLUMNS(
                __WordSearchTable,
                "Match",SEARCH([Search],[Column1],,BLANK())
            ),
            NOT(ISBLANK([Match]))
        )
    VAR __Max = MAXX(__Table,[Value])
    VAR __Match = MAXX(FILTER(__Table,[Value]=__Max),[Search])
    VAR __Clean1 = IF(RIGHT(__Match,1)="(",LEFT(__Match,LEN(__Match)-1),__Match)
    VAR __Clean2 = IF(RIGHT(__Clean1,1)=" ",LEFT(__Clean1,LEN(__Clean1)-1),__Clean1)
RETURN
    IF(
        LEN(__Clean2)<=__CleanMatchThreshold,
        IF(
            LEN(__Clean2) = LEN([Column1]),
            __Clean2,
            BLANK()
        ),
        __Clean2
    )

 


@ 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!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...

@Anonymous - Further improvement

Fuzzy Column = 
    VAR __MatchThreshold = 3
    VAR __CleanMatchThreshold = 4
    VAR __WordSearchTable = 
        GENERATE(
            'Ongoing Projects',
                VAR __Word = MAXX(FILTER('Ongoing Projects',[Index]=EARLIER('Ongoing Projects'[Index])),[Ongoing Projects])
            RETURN ADDCOLUMNS(GENERATESERIES(3,LEN(__Word),1),"Search",LEFT(__Word,[Value]))
        )
    VAR __Table =
        FILTER(
            ADDCOLUMNS(
                __WordSearchTable,
                "Match",SEARCH([Search],[Column1],,BLANK())
            ),
            NOT(ISBLANK([Match]))
        )
    VAR __Max = MAXX(__Table,[Value])
    VAR __Match = MAXX(FILTER(__Table,[Value]=__Max),[Search])
    VAR __Clean1 = IF(RIGHT(__Match,1)="(",LEFT(__Match,LEN(__Match)-1),__Match)
    VAR __Clean2 = IF(RIGHT(__Clean1,1)=" ",LEFT(__Clean1,LEN(__Clean1)-1),__Clean1)
RETURN
    IF(
        LEN(__Clean2)<=__CleanMatchThreshold,
        SWITCH(TRUE(),
            LEN(__Clean2) = LEN([Column1]),__Clean2,
            SEARCH(__Clean2,[Column1],,0)=1,__Clean2,
            BLANK()
        ),
        __Clean2
    )

@ 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!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@Greg_DecklerI have attached a final Client name file. The operation needs to be done on this fine. Ongoing project List remains the same. My results on this final client file returns some unwanted data like Anders,Unit,Con,Comm,National,Nor,Tri,Ste,Mar.
This is where I see that the threshold does not be effective. Not able to think of a way to improvise on the formula to eliminate these errors.

 

The good note is that the retuned blank values are perfectly the way they should be since there are no matches for them in the Project list.

 

Drive Link 

@Anonymous - How about this version? I have implemented a smarter matching algorthim taking into account how much of the total client name is matched. Also, there is an exception process in the SWITCH statement where you can call out specific matches, such as the example, "ABB". So if ABB is matched, it returns it. You could add additional rows to the SWITCH statement for other exceptions. I have the exception commented out because it is not needed with the current thresholds but left it there as an example. Updated PBIX attached.

So, basically the new rules are FuzzyThrehold1 = 30%, if 30% of the length is matched and it starts at the beginning, match. FuzzyThreshold2, if more than 80% of the total length is matched, it's a match.

 

Fuzzy Column = 
    VAR __MatchThreshold = 3
    VAR __CleanMatchThreshold = 5
    VAR __FuzzyThreshold1 = .3
    VAR __FuzzyThreshold2 = .8
    VAR __WordSearchTable = 
        GENERATE(
            'Ongoing Projects',
                VAR __Word = MAXX(FILTER('Ongoing Projects',[Index]=EARLIER('Ongoing Projects'[Index])),[Ongoing Projects])
            RETURN ADDCOLUMNS(GENERATESERIES(3,LEN(__Word),1),"Search",LEFT(__Word,[Value]))
        )
    VAR __Table =
        FILTER(
            ADDCOLUMNS(
                __WordSearchTable,
                "Match",SEARCH([Search],[Client Name],,BLANK())
            ),
            NOT(ISBLANK([Match]))
        )
    VAR __Max = MAXX(__Table,[Value])
    VAR __Match = MAXX(FILTER(__Table,[Value]=__Max),[Search])
    VAR __Clean1 = IF(RIGHT(__Match,1)="(",LEFT(__Match,LEN(__Match)-1),__Match)
    VAR __Clean2 = IF(RIGHT(__Clean1,1)=" ",LEFT(__Clean1,LEN(__Clean1)-1),__Clean1)
RETURN
    IF(
        LEN(__Clean2)<=__CleanMatchThreshold,
        SWITCH(TRUE(),
            //__Clean2 = "ABB",__Clean2,
            LEN(__Clean2) = LEN([Client Name]),__Clean2,
            LEN(__Clean2)/LEN([Client Name])>__FuzzyThreshold1 && SEARCH(__Clean2,[Client Name],,0)=1,__Clean2,
            LEN(__Clean2)/LEN([Client Name])>__FuzzyThreshold2,__Clean2,
            BLANK()
        ),
        __Clean2
    )

 

  


@ 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!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@Greg_Deckleryou almost got it but the below two are a few exceptions or are getting mapped wrongly.

 

1. Client Name:  'Bose'
                          'Dell'
                          'Casey'   

The above three Projects are not mapped to any clients even though these clients are present in the client list. Probably because of the minimum threshold set.

2. National is being mapped to more than 'National Grid' client (there are three more client names with the term National in their name)

I do not want to create any exceptions unless they are exhaustive in nature, because I am planning on having a readily automated report pushed to the service.

I still feel the earlier logic that I mentioned in my previous post is pretty much fool proof. considering the given conditions and appearance of the client and project data.

@Anonymous - I would have to think about how to implement that within the program, but what about Ernst & Young, that would only match Ernst then? Perhaps I am not understanding something.

 

VAR __FuzzyThreshold1 = .18
VAR __FuzzyThreshold2 = .8
 
These values fix Bose, Casey and Dell
 
We also thought the last algorithm was foolproof. The stark reality is that fuzzy matching will never be 100% foolproof for all possible cases.

@ 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!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@Greg_DecklerIt will match 'Ernst &' and if the match is present in the Client Name then it will return that Client Name which will be the whole name.
The match reference should be picked from the project list and when the string matches with a value in Client NAme, The Client Name should be returned. 

 

Let me know , I am also trying to improvise on your formula as we speak.

@Anonymous - I do not see how that logic is going to prevent something like International from being mapped to National for example. International will map to National Grid up until national, no space or G and so...

 

With the setting of .18 for threshold 1, is the only outstanding exceptions these:

Greg_Deckler_0-1599599482878.png

 


@ 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!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@Greg_Deckler 
So for 'National Grid',  search operation up until 'National ' there will be all 5 mappings as seen in the screenshot you shared.
Until now the retun values for the increment of characters to Project Name are stored in a variable.
Now increment to the next character 'G' to search for 'National G' in this variable list consisting the 5 mappings.

Since 'National G' matches only with 2 mappings now , These two mappings will overwrite the earlier 5 mappings or the operation eliminates the not matching 3 mappings (whichever is efficient) and the variable list now returns National Grid only for these 2 client names which is fine because both are National Grid Client.

 

This way, the search can be performed on all the cells in Project List up until 'The first character after the first space'. 

@Anonymous - Yes, but "blah blah International blah" is still going to match the "National" in "National Grid" this way and be designated "National" in the match. I don't see that logic preventing this or explain where my thinking is flawed.

 

Are you saying that if the Ongoing Project has a space in it to only match if the match goes beyond the space? Because I'm not sure how to implement that although I have some thoughts. However, even so that still doesn't fix the problem below with WOLTERSKLUWERS.

 

I was able to resolve the National issue though with some additional matching threholding checks. The only thing that I see that is an exception at this point is that the client "WOLTERSKLUWERS" matches the "Wolters" in "Wolters Kluwer" when you probably want it to say "Wolters Kluwer". I don't know of a way around that problem. 

 

Updated PBIX attached. Here is the latest:

Fuzzy Column = 
    VAR __MatchThreshold = 3
    VAR __CleanMatchThreshold = 4
    VAR __FuzzyThreshold1 = .18
    VAR __FuzzyThreshold2 = .8
    VAR __WordSearchTable = 
        GENERATE(
            'Ongoing Projects',
                VAR __Word = MAXX(FILTER('Ongoing Projects',[Index]=EARLIER('Ongoing Projects'[Index])),[Ongoing Projects])
            RETURN ADDCOLUMNS(GENERATESERIES(3,LEN(__Word),1),"Search",LEFT(__Word,[Value]))
        )
    VAR __Table =
        FILTER(
            ADDCOLUMNS(
                __WordSearchTable,
                "Match",SEARCH([Search],[Client Name],,BLANK())
            ),
            NOT(ISBLANK([Match]))
        )
    VAR __Max = MAXX(__Table,[Value])
    VAR __Match = MAXX(FILTER(__Table,[Value]=__Max),[Search])
    VAR __Clean1 = IF(RIGHT(__Match,1)="(",LEFT(__Match,LEN(__Match)-1),__Match)
    VAR __Clean2 = IF(RIGHT(__Clean1,1)=" ",LEFT(__Clean1,LEN(__Clean1)-1),__Clean1)
RETURN
    IF(
        LEN(__Clean2)<=__CleanMatchThreshold,
        SWITCH(TRUE(),
            //__Clean2 = "ABB",__Clean2,
            LEN(__Clean2) = LEN([Client Name]),__Clean2,
            LEN(__Clean2)/LEN([Client Name])>__FuzzyThreshold1 && SEARCH(__Clean2,[Client Name],,0)=1,__Clean2,
            LEN(__Clean2)/LEN([Client Name])>__FuzzyThreshold2,__Clean2,
            BLANK()
        ),
        SWITCH(TRUE(),
            __Clean2 = "Blue Cross",__Clean2,
            LEN(__Clean2)/LEN([Client Name])<__FuzzyThreshold2 && SEARCH(__Clean2,[Client Name],,0)<>1,BLANK(),
            __Clean2
        )
    )

@ 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!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@Greg_DecklerThe latest file still have some flaws. Fuzzy Column: 'Tri', "Ste', 'Unit' these three have no ongoing projects, They need to be blank.

If we implement the logic that I proposed, then these would return blank. Since no projects are there with the string 'Tri P' , Search for characters in Project Name 'Sterling' will return only Sterling and 'Ste' will not get mapped to Steelwave, 'Unit' will not get mapped to 'United' -> similar to Sterling.
Explanation on Sterling:
While searching for the characters in cell 'Sterling' , up until 'Ste' the retun values will be Sterling and Steelwave. Now add the next character and search again. 'Ster' will return only 'Sterling' and eliminate Steelwave leaving it as a blank.
From what I understand it is a teeny bit of reverse mapping from that what we are following now.
Instead of searching for the whole string of Project Name, and returning all matches with the matching strings, why dont we set a criteria to search only until first character after first space in the Project Name, return all matching client names to the string set increment. 

Basically as the increment of the character for the cell by cell Project Name happens, the number of matching clients to this string will reduce leaving just 1 or 2 matching client names. 

Basically consider this, A is Project name.

A = "Barclays L"  --> taking only the characters until the first one after first space. Increment (i++) should stop after the first character after first space if found or end of string without any spaces.

for (A[0]='B', search for matches in client name,i++)

B=All client names matching A[0].
Now for (A[0][1]='Ba', search for matches in client name, i++)

B=All client names matching A[0][1]
.

.

.

Now for (A[0][1]...[8],search for matches,i++)

B=Barclays Corporation -> Client name matching to the searched project Name (retuning Client Name instead of matching strings)

The loop ends at [8] because A0]...[9] = 'Barclays L' is not present in the list of client names. Hence matching Barclays is mapped until A[8] and the mapped client name is Barclays Corporation is returned.

I hope I was able to convey the logic. My apologies for the above way of mentioning the logic.

And Dont worry about Wolters. It is the client name error. There has to be a space after Wolter.

@Anonymous Except it doesn't work that way. To implement the original algorithm in DAX I had to do this:

Let's take just the first 2 client names

1 Aaron's
2 ABB (CA VDA)

In order to emulate looping, which is impossible in DAX, this becomes:

1 1 A
1 2 Aa
1 3 Aar
1 4 Aaro
1 5 Aaron
1 6 Aaron'
1 7 Aaron's
2 1 A
2 2 AB
2 3 ABB

and so on, the entire list of projects gets blown out into a big table like this. Then, I go about adding a column to this table that says whether it matches the client or not, basically a 1 or a 0. Then, I filter out the zeros. Then I grab the MAX of the second column, that is my longest match.

This is looping in DAX.

So, explain again how your logic fits into this?

Steelwave is a Client Name and it matches Sterling up until 3 characters. The only match returned is Sterling, not Sterling and Steelwave because Steelwave is not an Ongoing Project name. So, you are left with Steelwave matching Sterling up until Ste. You can lower the thresholds but then you start running into issues with Dell, etc.


@ 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!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@Greg_DecklerYou are right. My logic has some flaws in case where the Project name does not appear in the client list

@Anonymous - OK, this might actually be the one. I added a KillThreshold that was possible because I moved the cleaning to the end to maximum the length of the match. I got rid of the "Unit" match also. So, basically once I adjusted the cleaning of the special characters and spaces at the end, I was able to increase Threshold1 so that ABB is included but Unit is excluded. The only special exception is for Blue Cross and I'm not sure how else to handle that one quite honestly. Let me know if you find any obvious issues. Updated PBIX attached.

 

Fuzzy Column = 
    VAR __MatchWord = [Client Name]
    VAR __CleanMatchThreshold = 4
    VAR __KillThreshold = 3
    VAR __FuzzyThreshold1 = .4
    VAR __FuzzyThreshold2 = .8
    VAR __WordSearchTable = 
        GENERATE(
            'Ongoing Projects',
                VAR __Word = MAXX(FILTER('Ongoing Projects',[Index]=EARLIER('Ongoing Projects'[Index])),[Ongoing Projects])
            RETURN ADDCOLUMNS(GENERATESERIES(3,LEN(__Word),1),"Search",LEFT(__Word,[Value]),"Original",__Word)
        )
    VAR __Table =
        FILTER(
            ADDCOLUMNS(
                __WordSearchTable,
                "Match",SEARCH([Search],__MatchWord,,BLANK())
            ),
            NOT(ISBLANK([Match]))
        )
    VAR __Max = MAXX(__Table,[Value])
    VAR __Match = MAXX(FILTER(__Table,[Value]=__Max),[Search])
    VAR __Proposed =
        IF(
            LEN(__Match)<=__CleanMatchThreshold,
            SWITCH(TRUE(),
                //__Clean2 = "ABB",__Clean2,
                COUNTROWS(FILTER(__Table,[Value]=__Max))>1,BLANK(),
                LEN(__Match) <= __KillThreshold,BLANK(),
                LEN(__Match) = LEN(__MatchWord),__Match,
                LEN(__Match)/LEN(__MatchWord)>__FuzzyThreshold1 && SEARCH(__Match,__MatchWord,,0)=1,__Match,
                LEN(__Match)/LEN(__MatchWord)>__FuzzyThreshold2,__Match,
                BLANK()
            ),
            SWITCH(TRUE(),
                __Match = "Blue Cross" || __Match = "Blue Cross ",__Match,
                LEN(__Match)/LEN(__MatchWord)<__FuzzyThreshold2 && SEARCH(__Match,__MatchWord,,0)<>1,BLANK(),
                __Match
            )
        )
        VAR __Clean1 = IF(RIGHT(__Proposed,1)="(",LEFT(__Proposed,LEN(__Proposed)-1),__Proposed)
        VAR __Clean2 = IF(RIGHT(__Clean1,1)=" ",LEFT(__Clean1,LEN(__Clean1)-1),__Clean1)
RETURN
    __Clean2

 

 


@ 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!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@Greg_Deckler  Presented today with the exception but obviously I did not mentioned about the exception in the code. However I was thinking, instead of retunring only matched characters and then clean it, can we have the formula return the entire cell value from the Project list?

For example, instead of 'Casey' which has been matched, since 'Casey' is matched, the return value will be the entire cell value of 'Casey' i.e; Casey's General Store (CARES 2019) --> From the project list.

 

This should be similar for other matches.

 

Now I am aware of multiple names in project list (For example: Barclays has 3 variations in the project list). In such cases let the retun value be the first occurance od this match term. i.e; Barclays(VDA).
Sorry for trying to improvise on the initial requirement but could you suggest me a formula for the above?

We can mark the response as a solution since I am satisfied with the results. (Except for my initial concern to avoid giving exception to 'Blue Cross'). You could also clarify why Blue Cross is behaving differently than 'National Grid'. 

 

Thanl you so much for all the time @Greg_Deckler  I really appreciate. You are the saviour 🙂 

@Anonymous - So, yes, we can return the entire matching project, that we can do. I will see what I can do with that. The problem with Blue Cross is that the client names are so long that it ends up not meeting the threshold requirements for a match. I may be able to adjust those. So, for example 

 

Blue Cross and Blue Shield of Arizona I

 

Matches 11 out of like 40 characters or .275% This makes it fall below thresholds set to filter out other stuff. The Ernst & Young entry for Blue Cross is even worse.


@ 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!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@Greg_DecklerI have attached the current list of client names for your reference. You could use this list in your working file if it is convenient.

 

Drive Link 

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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