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
Spojí řádky table1
s řádky table2
na základě přibližné shody hodnot klíčových sloupců vybraných key1
(pro table1
) a key2
(pro table2
).
Přibližné porovnávání je porovnání založené na podobnosti textu místo rovnosti textu.
Ve výchozím nastavení se provádí vnitřní spojení, ale volitelný joinKind
může být zahrnut k určení typu spojení. Mezi možnosti patří:
- JoinKind.Inner
- JoinKind.LeftOuter
- JoinKind.RightOuter
- JoinKind.FullOuter
- JoinKind.LeftAnti
- JoinKind.RightAnti
- JoinKind.LeftSemi
- JoinKind.RightSemi
K určení způsobu porovnání klíčových sloupců může být zahrnuta volitelná sada joinOptions
. Mezi možnosti patří:
-
ConcurrentRequests
: Číslo mezi 1 a 8, které určuje počet paralelních vláken, které se mají použít pro přibližné shody. Výchozí hodnota je 1. -
Culture
: Umožňuje porovnávání záznamů na základě pravidel specifických pro kulturní aspekty. Může to být libovolný platný název kultury. Například možnost Kultura "ja-JP" odpovídající záznamům založeným na japonské kultuře. Výchozí hodnota je "", která odpovídá na základě invariantní anglické jazykové verze. -
IgnoreCase
: Logická hodnota (true/false), která umožňuje porovnávání klíčů bez rozlišování malých a velkých písmen. Pokud je například pravda, "Hrozny" se shoduje s "hrozny". Výchozí hodnota je true. -
IgnoreSpace
: Logická hodnota (true/false), která umožňuje kombinování částí textu, aby bylo možné najít shody. Pokud je například pravda, "Gra pes" se shoduje s "Hrozny". Výchozí hodnota je true. -
NumberOfMatches
: Celé číslo, které určuje maximální počet odpovídajících řádků, které lze vrátit pro každý vstupní řádek. Například hodnota 1 vrátí maximálně jeden odpovídající řádek pro každý vstupní řádek. Pokud tato možnost není k dispozici, vrátí se všechny odpovídající řádky. -
SimilarityColumnName
: Název sloupce, který zobrazuje podobnost mezi vstupní hodnotou a reprezentativní hodnotou pro daný vstup. Výchozí hodnota je null, v takovém případě se nepřidá nový sloupec pro podobnosti. -
Threshold
: Číslo mezi 0,00 a 1,00, které určuje skóre podobnosti, při kterém se budou shodovat dvě hodnoty. Například "Grapes" a "Graes" (chybí "p") se shodují pouze v případě, že je tato možnost nastavena na méně než 0,90. Prahová hodnota 1,00 umožňuje pouze přesné shody. (Všimněte si, že přibližná "přesná shoda" může ignorovat rozdíly, jako jsou velikost textu, pořadí slov a interpunkce.) Výchozí hodnota je 0,80. -
TransformationTable
: Tabulka, která umožňuje porovnávání záznamů na základě vlastních mapování hodnot. Měl by obsahovat sloupce Od a Komu. Například "Hrozny" se shoduje s "Rozinky", pokud je transformační tabulka k dispozici se sloupcem "From" obsahujícím "Hrozny" a sloupec "To" obsahující "Rozinky". Všimněte si, že transformace se použije u všech výskytů textu v transformační tabulce. S výše uvedenou transformační tabulkou se také "Hrozny jsou sladké" budou shodovat s "Rozinky jsou sladké".
Levé vnitřní přibližné spojení dvou tabulek na základě [FirstName]
Použití
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]
)
výstup
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
]
})