Olvasás angol nyelven

Megosztás a következőn keresztül:


Table.FuzzyJoin

Szintaxis

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

Rólunk

Összekapcsolja a table1 sorait a table2 soraival a key1 (table1) és key2 (table2) által kiválasztott kulcsoszlopok értékeinek homályos egyeztetése alapján.

A homályos egyezés a szöveg hasonlóságán alapuló összehasonlítás, nem pedig a szöveg egyenlősége.

Alapértelmezés szerint belső illesztés történik, de opcionális joinKind is szerepelhet az illesztés típusának megadásához. A lehetőségek a következők:

A kulcsoszlopok összehasonlításának módját megadni kívánva választhatóan szerepelhet egy joinOptions készlet. A lehetőségek a következők:

  • ConcurrentRequests: Egy 1 és 8 közötti szám, amely megadja a párhuzamos szálak számát, amelyeket a homályos egyeztetéshez használnak. Az alapértelmezett érték 1.
  • Culture: Lehetővé teszi a rekordok egyezését a kultúraspecifikus szabályok alapján. Bármilyen érvényes kulturális név lehet. Például a "ja-JP" kultúrabeállítása megegyezik a japán kultúra alapján megadott rekordokkal. Az alapértelmezett érték a "", amely az invariáns angol kultúra alapján egyezik.
  • IgnoreCase: Logikai (igaz/hamis) érték, amely lehetővé teszi a kis- és nagybetűk megkülönböztetésére nem érzékeny kulcsok összehasonlítását. Ha például igaz, a "Szőlő" a "szőlővel" egyezik. Az alapértelmezett érték igaz.
  • IgnoreSpace: Logikai (igaz/hamis) érték, amely lehetővé teszi a szövegrészek kombinálását az egyezések keresése érdekében. Például, ha igaz az állítás, akkor a "Gra pes" egyezik a "Szőlő" kifejezéssel. Az alapértelmezett érték igaz.
  • NumberOfMatches: Egy egész szám, amely meghatározza az összes bemeneti sorhoz visszaadható egyező sorok maximális számát. Egy 1 érték például legfeljebb egy egyező sort ad vissza az egyes bemeneti sorokhoz. Ha ez a beállítás nincs megadva, a rendszer az összes egyező sort visszaadja.
  • SimilarityColumnName: Az oszlop neve, amely egy bemeneti érték és az adott bemenet reprezentatív értéke közötti hasonlóságot mutatja. Az alapértelmezett érték null, ebben az esetben a rendszer nem ad hozzá új oszlopot a hasonlóságokhoz.
  • Threshold: Egy 0,00 és 1,00 közötti szám, amely megadja azt a hasonlósági pontszámot, amelyen két érték lesz megfeleltetve. Például a "Szőlő" és a "Graes" (hiányzik a "p") csak akkor lesznek egymáshoz illesztve, ha ez az opció 0,90-nél kisebbre van állítva. Az 1,00-s küszöbérték csak pontos egyezéseket tesz lehetővé. (Vegye figyelembe, hogy a homályos "pontos egyezés" figyelmen kívül hagyhatja a különbségeket, például a burkolatot, a szósorrendet és az írásjeleket.) Az alapértelmezett érték 0,80.
  • TransformationTable: Olyan tábla, amely lehetővé teszi az egyéni értékleképezéseken alapuló rekordok egyeztetését. Tartalmaznia kell a "Feladó" és a "To" oszlopot. Például a "Szőlő" párosítva van a "Mazsola" elemmel, ha egy átalakítási táblázatban a "From" oszlop tartalmazza a "Szőlő"-t, és a "Hová" oszlop pedig a "Mazsola"-t. Vegye figyelembe, hogy az átalakítás az átalakítási táblázat szövegének minden előfordulására érvényes lesz. A fenti átalakítási táblázattal a "Szőlő édes" össze lesz párosítva a "Mazsola édes" kijelentéssel is.

1. példa

Két tábla bal oldali belső fuzzy illesztése [FirstName] alapján

Használat

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

kimeneti

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