Table.FuzzyJoin
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
Liittää - table1
rivit -riveihin perustuen table2
avainsarakkeiden arvojen sumeaan vastaavuuksien valintaan key1
(taulukolle table1
) ja key2
(taulukolle table2
).
Sumea vastaavuus on vertailu, joka perustuu tekstin samankaltaisuuteen tekstin yhtäläisyyden sijaan.
Oletusarvon mukaan tehdään sisäliitos, mutta valinnainen joinKind
voidaan sisällyttää määrittämään liitoksen tyyppi. Vaihtoehtoja ovat:
- JoinKind.Inner
- JoinKind.LeftOuter
- JoinKind.RightOuter
- JoinKind.FullOuter
- JoinKind.LeftAnti
- JoinKind.RightAnti
- JoinKind.LeftSemi
- JoinKind.RightSemi
Valinnainen - joinOptions
joukko voidaan sisällyttää määrittämään, miten avainsarakkeita verrataan. Vaihtoehtoja ovat:
ConcurrentRequests
: Luku 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 tekee tietueiden vastaavuudet japanin kieliasetuksen 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 tosi.IgnoreSpace
: Looginen arvo (tosi/epätosi), joka sallii tekstiosien yhdistämisen vastaavuudet etsimistä varten. Esimerkiksi kun arvo on tosi, Viinirypäleet ja viinirypäleet vastaavat toisiaan. Oletusarvo on tosi.NumberOfMatches
: Kokonaisluku, joka määrittää, montako toisiaan vastaavaa riviä enintään voidaan palauttaa jokaista syöteriviä kohden. 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 arvoyksityismää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".
Kahden taulukon vasen sumea sisäliitos perustuen :een [FirstName]
Käyttö
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]
)
Tuloste
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
]
})