Table.FuzzyJoin
Syntaksi
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
Tietoja
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".
Esimerkki 1
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
]
})