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í riadky table1
s riadkami table2
na základe približnej zhody hodnôt kľúčových stĺpcov vybratých key1
(pre table1
) a key2
(pre table2
).
Približná zhoda je porovnanie na základe podobnosti textu namiesto rovnosti textu.
V predvolenom nastavení sa vykonáva vnútorné spojenie, ale na určenie typu spojenia možno zahrnúť voliteľný joinKind
. Možnosti zahŕňajú:
- JoinKind.Inner
- JoinKind.LeftOuter
- JoinKind.RightOuter
- JoinKind.FullOuter
- JoinKind.LeftAnti
- JoinKind.RightAnti
- JoinKind.LeftSemi
- JoinKind.RightSemi
Možno zahrnúť voliteľnú množinu joinOptions
na určenie spôsobu porovnania kľúčových stĺpcov. Možnosti zahŕňajú:
-
ConcurrentRequests
: číslo v rozsahu od 1 do 8 určujúce počet paralelných vlákien, ktoré sa majú použiť pre približnú zhodu. Predvolená hodnota je 1. -
Culture
: Umožňuje záznamy zhody na základe pravidiel špecifických pre jazykovú verziu. Môže ísť o ľubovoľný platný názov jazykovej verzie. Napríklad možnosť Culture s názvom "ja-JP" zodpovedá záznamom založeným na japonskej kultúre. Predvolená hodnota je "", ktorá zodpovedá invariantnej anglickej jazykovej verzii. -
IgnoreCase
: Logická hodnota (true/false), ktorá umožňuje zhodu kľúča bez rozlišovania veľkých a malých písmen. Napríklad, ak je hodnota True, reťazec "Hrozno" sa bude zhodovať s reťazcom "hrozno". Predvolená hodnota je True. -
IgnoreSpace
: Logická hodnota (true/false), ktorá umožňuje kombinovať textové časti s cieľom vyhľadať zhodu. Napríklad, ak je hodnota True, reťazec "H no" sa bude zhodovať s reťazcom "Hrozno". Predvolená hodnota je True. -
NumberOfMatches
: celé číslo určujúce maximálny počet zhodujúcich sa riadkov, ktoré možno vrátiť pre každý vstupný riadok. Napríklad hodnota 1 vráti najviac jeden zodpovedajúci riadok pre každý vstupný riadok. Ak táto možnosť nie je zadaná, vrátia sa všetky zhodné riadky. -
SimilarityColumnName
: názov stĺpca, ktorý zobrazuje podobnosť medzi vstupnou hodnotou a reprezentatívnou hodnotou pre daný vstup. Predvolená hodnota je null, v takom prípade sa nový stĺpec pre podobnosti nepridá. -
Threshold
: Číslo medzi 0,00 a 1,00, ktoré určuje skóre podobnosti, pri ktorom sa budú zhodovať dve hodnoty. Napríklad reťazec "Hrozno" sa bude zhodovať s reťazecmi "Graes" (chýba písmeno "z") iba v prípade, že je táto možnosť nastavená na hodnotu menšiu ako 0,90. Prahová hodnota 1,00 umožňuje len presné zhody. (Všimnite si, že približná "presná zhoda" môže ignorovať rozdiely, ako je napríklad puzdro, poradie slov a interpunkčné znenie.) Predvolená hodnota je 0,80. -
TransformationTable
: tabuľka, ktorá umožňuje záznamy zhody na základe mapovaní vlastných hodnôt. Mala by obsahovať stĺpce "Od" a "Do". Reťazec "Hrozno" sa napríklad bude zhodovať s reťazcom "Hrozienka", ak je v transformačnej tabuľke uvedené v stĺpci "Od" hodnota "Hrozno" a v stĺpci "Do" je uvedená hodnota "Hrozienka". Všimnite si, že transformácia sa použije na všetky výskyty textu v tabuľke transformácie. S vyššie uvedenou tabuľkou transformácie sa výraz "Hrozno je sladké" bude zhodovať aj s reťazcom "Hrozienka sú sladké".
Ľavé vnútorné približné spojenie dvoch tabuliek na základe hodnoty [FirstName]
používania
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ýstupu
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
]
})