Čítať v angličtine

Zdieľať cez


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

O

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ú:

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é".

Príklad č. 1

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