Číst v angličtině

Sdílet prostřednictvím


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

Asi

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ří:

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

Příklad 1

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