Zdieľať cez


Table.FuzzyNestedJoin

Syntax

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

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). Výsledky sa vrátia v novom stĺpci s názvom newColumnName.

Približná zhoda je porovnanie na základe podobnosti textu namiesto rovnosti textu.

Voliteľný joinKind určuje druh spojenia, ktoré sa má vykonať. Ak nie je zadaný joinKind, vykoná sa podľa predvoleného nastavenia ľavé vonkajšie spojenie. 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.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ýstupu

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({})
    ]
})