Table.FuzzyNestedJoin
Syntaxe
Table.FuzzyNestedJoin(table1 as table, key1 as any, table2 as table, key2 as any, newColumnName as text, optional joinKind as nullable number, optional joinOptions as nullable record) as table
Informace
Spojí řádky s řádky table2
založenými na přibližné shodě hodnot klíčových sloupců vybraných key1
(protable1
) a key2
(protable2
).table1
Výsledky se vrátí v novém sloupci s názvem newColumnName
.
Přibližné porovnávání je porovnání založené na podobnosti textu místo rovnosti textu.
joinKind
Volitelné určuje typ spojení, který se má provést. Ve výchozím nastavení se provede levé vnější spojení, pokud joinKind
není zadáno. K dispozici jsou následující možnosti:
- JoinKind.Inner
- JoinKind.LeftOuter
- JoinKind.RightOuter
- JoinKind.FullOuter
- JoinKind.LeftAnti
- JoinKind.RightAnti
- JoinKind.LeftSemi
- JoinKind.RightSemi
Volitelná sada joinOptions
může být zahrnuta, aby bylo možné určit, jak porovnat klíčové sloupce. K dispozici jsou následující možnosti:
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 jazykovou verzi. Může to být libovolný platný název jazykové verze. Například možnost Jazyková verze "ja-JP" odpovídá záznamům založeným na japonské jazykové verzi. 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 shodují s "hrozny". Výchozí hodnota je true.IgnoreSpace
: Logická hodnota (true/false), která umožňuje kombinování částí textu za účelem vyhledání shod. 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 od 0,00 do 1,00, které určuje skóre podobnosti, při kterém se budou shodovat dvě hodnoty. Například "Hrozny" a "Graes" (chybí "p") se shodují pouze v případě, že je tato možnost nastavená 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é".
Příklad 1
Levé vnitřní přibližné spojení dvou tabulek na základě [FirstName]
Využití
Table.FuzzyNestedJoin(
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"},
"NestedTable",
JoinKind.LeftOuter,
[IgnoreCase = true, IgnoreSpace = false]
)
Výstup
Table.FromRecords({
[
CustomerID = 1,
FirstName1 = "Bob",
Phone = "555-1234",
NestedTable = Table.FromRecords({
[
CustomerStateID = 1,
FirstName2 = "Bob",
State = "TX"
],
[
CustomerStateID = 2,
FirstName2 = "bOB",
State = "CA"
]
})
],
[
CustomerID = 2,
FirstName1 = "Robert",
Phone = "555-4567",
NestedTable = Table.FromRecords({})
]
})