Läs på engelska

Dela via


Table.FuzzyJoin

Syntax

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

Kopplar raderna i table1 med raderna i table2 baserat på en fuzzy matchning av värdena för de nyckelkolumner som valts av key1 (för table1) och key2 (för table2).

Fuzzy-matchning är en jämförelse som baseras på likheten mellan text och inte på likheten mellan text.

Som standard utförs en inre koppling, men en valfri joinKind kan inkluderas för att ange typ av koppling. Alternativen är:

En valfri uppsättning joinOptions kan inkluderas för att ange hur du jämför nyckelkolumnerna. Alternativen är:

  • ConcurrentRequests: Ett tal mellan 1 och 8 som anger antalet parallella trådar som ska användas för fuzzy-matchning. Standardvärdet är 1.
  • Culture: Tillåter matchning av poster baserat på kulturspecifika regler. Det kan vara valfritt giltigt kulturnamn. Till exempel matchar kulturalternativet "ja-JP" poster baserat på den japanska kulturen. Standardvärdet är "", som matchar baserat på den invarianta engelska kulturen.
  • IgnoreCase: Ett logiskt värde (sant/falskt) som tillåter skiftlägesokänslig nyckelmatchning. När det till exempel är sant matchas "Vindruvor" med "vindruvor". Standardvärdet är sant.
  • IgnoreSpace: Ett logiskt värde (sant/falskt) som gör det möjligt att kombinera textdelar för att hitta matchningar. När det till exempel är sant matchas "Gra pes" med "Vindruvor". Standardvärdet är sant.
  • NumberOfMatches: Ett heltal som anger det maximala antalet matchande rader som kan returneras för varje indatarad. Ett värde på 1 returnerar till exempel högst en matchande rad för varje indatarad. Om det här alternativet inte anges returneras alla matchande rader.
  • SimilarityColumnName: Ett namn på kolumnen som visar likheten mellan ett indatavärde och det representativa värdet för indata. Standardvärdet är null, i vilket fall en ny kolumn för likheter inte läggs till.
  • Threshold: Ett tal mellan 0,00 och 1,00 som anger likhetspoängen som två värden ska matchas med. Till exempel matchas "Vindruvor" och "Graes" (som saknar "p") endast om det här alternativet är inställt på mindre än 0,90. Ett tröskelvärde på 1,00 tillåter bara exakta matchningar. (Observera att en fuzzy "exakt matchning" kan ignorera skillnader som hölje, ordordning och skiljetecken.) Standardvärdet är 0,80.
  • TransformationTable: En tabell som tillåter matchande poster baserat på anpassade värdemappningar. Den bör innehålla kolumnerna "Från" och "Till". Till exempel matchas "Vindruvor" med "Russin" om en transformeringstabell tillhandahålls med kolumnen "Från" som innehåller "Vindruvor" och kolumnen "Till" som innehåller "Russin". Observera att omvandlingen tillämpas på alla förekomster av texten i transformeringstabellen. Med ovanstående transformeringstabell matchas även "Vindruvor är söta" med "Russin är söta".

Exempel 1

Vänster inre fuzzy-koppling av två tabeller baserat på [FirstName]

Användning

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]
)

utdata

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
    ]
})