Table.FuzzyJoin
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
Joinforbinder rækkerne i table1
med rækkerne i table2
baseret på en fuzzy matchning af værdierne for 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 en valgfri joinKind
kan inkluderes for at angive jointypen. Indstillingerne omfatter:
- JoinKind.Inner-
- JoinKind.LeftOuter-
- JoinKind.RightOuter-
- JoinKind.FullOuter-
- JoinKind.LeftAnti-
- JoinKind.RightAnti-
- JoinKind.LeftSemi
- JoinKind.RightSemi-
Der kan inkluderes et valgfrit sæt joinOptions
for at angive, hvordan nøglekolonnerne skal sammenlignes. Indstillingerne omfatter:
-
ConcurrentRequests
: Et tal mellem 1 og 8, der angiver antallet af parallelle tråde, der skal bruges til fuzzymatchning. 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 tillader matchning af 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 (sand/falsk), 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å kolonnen, 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, hvor to værdier matches. "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".
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
]
})