Table.FuzzyNestedJoin
Syntaksi
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
Noin
Liittää table1
rivit table2
riveihin perustuen key1
(table1
) ja key2
(table2
) valitsemien avainsarakkeiden arvojen sumeaan vastaavuuksien perusteella. Tulokset palautetaan uudessa sarakkeessa nimeltä newColumnName
.
Sumea vastaavuus on vertailu, joka perustuu tekstin samankaltaisuuteen tekstin yhtäläisyyden sijaan.
Valinnainen joinKind
määrittää suoritettavan liitoksen lajin. Oletusarvon mukaan vasen ulkoliitos suoritetaan, jos joinKind
ei ole määritetty. Vaihtoehtoja ovat seuraavat:
- JoinKind.Inner
- JoinKind.LeftOuter
- JoinKind.RightOuter
- JoinKind.FullOuter
- JoinKind.LeftAnti
- JoinKind.RightAnti
- JoinKind.LeftSemi
- JoinKind.RightSemi
Valinnainen joukko joinOptions
voidaan sisällyttää määrittämään, miten avainsarakkeita verrataan. Vaihtoehtoja ovat seuraavat:
-
ConcurrentRequests
: Luku välillä 1–8, joka määrittää sumean vastaavuuden kanssa käytettävien rinnakkaisten säikeiden määrän. Oletusarvo on 1. -
Culture
: Mahdollistaa tietueiden vastaavuuden maa-asetuskohtaisten sääntöjen perusteella. Se voi olla mikä tahansa kelvollinen maa-asetuksen nimi. Esimerkiksi maa-asetus "ja-JP" vastaa tietueita japanin maa-asetuksen perusteella. Oletusarvo on "", joka muuttumattoman englannin maa-asetuksen perusteella. -
IgnoreCase
: Looginen arvo (tosi/epätosi), joka sallii kirjainkooltaan riippumattoman avainvastaavuuden. Esimerkiksi kun arvo on tosi, Viinirypäleet ja viinirypäleet vastaavat toisiaan. Oletusarvo on true. -
IgnoreSpace
: Looginen arvo (true/false), joka sallii tekstiosien yhdistämisen vastaavuudet etsimistä varten. Esimerkiksi kun arvo on tosi, Viinirypäleet ja viinirypäleet vastaavat toisiaan. Oletusarvo on true. -
NumberOfMatches
: Kokonaisluku, joka määrittää kullekin syöteriville palautettavien vastaavien rivien enimmäismäärän. Esimerkiksi arvo 1 palauttaa enintään yhden vastaavan rivin kullekin syöteriville. Jos tätä asetusta ei anneta, kaikki vastaavat rivit palautetaan. -
SimilarityColumnName
: Sarakkeen nimi, joka näyttää syötteen arvon ja kyseisen syötteen edustavan arvon samankaltaisuuden. Oletusarvo on tyhjäarvo, jolloin uutta saraketta samankaltaisuuksille ei lisätä. -
Threshold
: Luku väliltä 0,00–1,00, joka määrittää samankaltaisuuspistemäärän, jolla kaksi arvoa vastaavat toisiaan. Esimerkiksi Rypäleet ja Ryäleet (p puuttuu) vastaavat vain, jos tämän asetuksen arvo on pienempi kuin 0,90. Raja-arvo 1,00 sallii vain tarkat vastaavuudet. (Huomaa, että sumea "tarkka vastaavuus" saattaa ohittaa erot, kuten johdannaisen, sanajärjestyksen ja välimerkit.) Oletusarvo on 0,80. -
TransformationTable
: Taulukko, joka sallii tietueiden vastaavuuden mukautettujen arvoyhteenmääritysten perusteella. Sen tulee sisältää sarakkeet From ja To. Esimerkiksi Rypäleet on vastaava kuin Rusinat, jos annetaan muunnostaulukko, jossa on From-sarakkeessa Rypäleet ja To-sarakkeessa Rusinat. Ota huomioon, että muunnoksia käytetään tekstin kaikissa esiintymiskertoissa muunnostaulukossa. Yllä olevassa muunnostaulukossa "Rypäleet ovat makeita" ja "Rusinat ovat makeita" ja "Rusinat ovat makeita".
Esimerkki 1
Kahden taulukon vasen sumea sisäliitos perustuen :een [FirstName]
käyttö
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]
)
Output
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({})
]
})