Table.FuzzyJoin

Syntaks

Table.FuzzyJoin(table1 as table, key1 as any, table2 as table, key2 as any, optional joinKind as nullable number, optional joinOptions as nullable record) as table

Om

Joinforbinder rækkerne table1 i med rækkerne table2 baseret på en fuzzy matchning af værdierne i de nøglekolonner, der er valgt af key1 (for table1) og key2 (for table2).

Fuzzymatchning er en sammenligning, der er baseret på lighed mellem tekst og ikke lighed i tekst.

Der udføres som standard en indre joinforbindelse, men der kan inkluderes en valgfri joinKind for at angive typen af joinforbindelse. Der findes følgende valgmuligheder:

Der kan inkluderes et valgfrit sæt for joinOptions at angive, hvordan nøglekolonnerne skal sammenlignes. Der findes følgende valgmuligheder:

  • ConcurrentRequests: Et tal mellem 1 og 8, der angiver antallet af parallelle tråde, der skal bruges til fuzzymatching. Standardværdien er 1.
  • Culture: Tillader matchende poster baseret på kulturspecifikke regler. Det kan være et vilkårligt gyldigt kulturnavn. En kulturindstilling med "ja-JP" svarer f.eks. til poster, der er baseret på den japanske kultur. Standardværdien er "", som stemmer overens med den invariante engelske kultur.
  • IgnoreCase: En logisk værdi (true/false), der gør det muligt at matche nøgle, hvor der ikke skelnes mellem store og små bogstaver. Når sand, matches "Druer" f.eks. med "druer". Standardværdien er true.
  • IgnoreSpace: En logisk værdi (true/false), der gør det muligt at kombinere tekstdele for at finde forekomster. Når sand, matches "Gra pes" f.eks. med "Druer". Standardværdien er true.
  • NumberOfMatches: Et heltal, der angiver det maksimale antal matchende rækker, der kan returneres for hver inputrække. Værdien 1 returnerer f.eks. højst én tilsvarende række for hver inputrække. Hvis denne indstilling ikke er angivet, returneres alle tilsvarende rækker.
  • SimilarityColumnName: Et navn på den kolonne, der viser ligheden mellem en inputværdi og den repræsentative værdi for det pågældende input. Standardværdien er null, og i så fald tilføjes der ikke en ny kolonne for ligheder.
  • Threshold: Et tal mellem 0,00 og 1,00, der angiver den lighedsscore, som to værdier matches med. "Druer" og "Graes" (mangler "p") matches f.eks. kun, hvis denne indstilling er angivet til mindre end 0,90. En grænse på 1,00 tillader kun nøjagtige match. Bemærk, at et fuzzy "nøjagtigt match" kan ignorere forskelle, f.eks. kasse, ordrækkefølge og tegnsætning. Standardværdien er 0,80.
  • TransformationTable: En tabel, der tillader matchende poster baseret på brugerdefinerede værditilknytninger. Den skal indeholde kolonnerne "Fra" og "Til". "Druer" matches f.eks. med "Rosiner", hvis der er angivet en transformationstabel med kolonnen "Fra", der indeholder "Druer" og kolonnen "Til", der indeholder "Rosiner". Bemærk, at transformationen anvendes på alle forekomster af teksten i transformationstabellen. Med ovenstående transformationstabel vil "Druer er søde" også blive matchet med "Rosiner er søde".

Eksempel 1

Venstre indre fuzzyjoinforbindelse af to tabeller baseret på [FirstName]

Brug

Table.FuzzyJoin(
    Table.FromRecords(
        {
            [CustomerID = 1, FirstName1 = "Bob", Phone = "555-1234"],
            [CustomerID = 2, FirstName1 = "Robert", Phone = "555-4567"]
        },
        type table [CustomerID = nullable number, FirstName1 = nullable text, Phone = nullable text]
    ),
    {"FirstName1"},
    Table.FromRecords(
        {
            [CustomerStateID = 1, FirstName2 = "Bob", State = "TX"],
            [CustomerStateID = 2, FirstName2 = "bOB", State = "CA"]
        },
        type table [CustomerStateID = nullable number, FirstName2 = nullable text, State = nullable text]
    ),
    {"FirstName2"},
    JoinKind.LeftOuter,
    [IgnoreCase = true, IgnoreSpace = false]
)

Output

Table.FromRecords({
    [
        CustomerID = 1,
        FirstName1 = "Bob",
        Phone = "555-1234",
        CustomerStateID = 1,
        FirstName2 = "Bob",
        State = "TX"
    ],
    [
        CustomerID = 1,
        FirstName1 = "Bob",
        Phone = "555-1234",
        CustomerStateID = 2,
        FirstName2 = "bOB",
        State = "CA"
    ],
    [
        CustomerID = 2,
        FirstName1 = "Robert",
        Phone = "555-4567",
        CustomerStateID = null,
        FirstName2 = null,
        State = null
    ]
})