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
Menggabungkan baris dengan baris table2
berdasarkan pencocokan fuzzy dari nilai kolom kunci yang dipilih oleh key1
(untuk table1
) dan key2
(untuk table2
).table1
Pencocokan fuzzy adalah perbandingan berdasarkan kesamaan teks daripada kesetaraan teks.
Secara default, gabungan dalam dilakukan, namun opsional joinKind
dapat disertakan untuk menentukan jenis gabungan. Opsi meliputi:
- JoinKind.Inner
- JoinKind.LeftOuter
- JoinKind.RightOuter
- JoinKind.FullOuter
- JoinKind.LeftAnti
- JoinKind.RightAnti
- JoinKind.LeftSemi
- JoinKind.RightSemi
Sekumpulan joinOptions
opsional dapat disertakan untuk menentukan cara membandingkan kolom kunci. Opsi meliputi:
ConcurrentRequests
: Angka antara 1 dan 8 yang menentukan jumlah utas paralel yang digunakan untuk pencocokan fuzzy. Nilai default adalah 1.Culture
: Memungkinkan rekaman yang cocok berdasarkan aturan khusus budaya. Ini bisa menjadi nama budaya yang valid. Misalnya, opsi Budaya "ja-JP" cocok dengan rekaman berdasarkan budaya Jepang. Nilai defaultnya adalah "", yang cocok berdasarkan budaya Bahasa Inggris Invariant.IgnoreCase
: Nilai logis (true/false) yang memungkinkan pencocokan kunci yang tidak peka huruf besar/kecil. Misalnya, ketika benar, "Anggur" dicocokkan dengan "anggur". Nilai defaultnya adalah true.IgnoreSpace
: Nilai logis (true/false) yang memungkinkan penggpaduan bagian teks untuk menemukan kecocokan. Misalnya, ketika true, "Gra pes" dicocokkan dengan "Grapes". Nilai defaultnya adalah true.NumberOfMatches
: Bilangan bulat yang menentukan jumlah maksimum baris yang cocok yang dapat dikembalikan untuk setiap baris input. Misalnya, nilai 1 akan mengembalikan paling banyak satu baris yang cocok untuk setiap baris input. Jika opsi ini tidak disediakan, semua baris yang cocok dikembalikan.SimilarityColumnName
: Nama untuk kolom yang menunjukkan kesamaan antara nilai input dan nilai perwakilan untuk input tersebut. Nilai default adalah null, dalam hal ini kolom baru untuk kesamaan tidak akan ditambahkan.Threshold
: Angka antara 0,00 dan 1,00 yang menentukan skor kesamaan di mana dua nilai akan dicocokkan. Misalnya, "Anggur" dan "Graes" (kehilangan "p") hanya dicocokkan jika opsi ini diatur ke kurang dari 0,90. Ambang batas 1,00 hanya memungkinkan kecocokan yang tepat. (Perhatikan bahwa "kecocokan persis" fuzzy mungkin mengabaikan perbedaan seperti casing, urutan kata, dan tanda baca.) Nilai defaultnya adalah 0,80.TransformationTable
: Tabel yang memungkinkan rekaman yang cocok berdasarkan pemetaan nilai kustom. Ini harus berisi kolom "Dari" dan "Ke". Misalnya, "Anggur" dicocokkan dengan "Kismis" jika tabel transformasi disediakan dengan kolom "Dari" yang berisi "Anggur" dan kolom "Ke" yang berisi "Kismis". Perhatikan bahwa transformasi akan diterapkan ke semua kemunculan teks dalam tabel transformasi. Dengan tabel transformasi di atas, "Anggur manis" juga akan dicocokkan dengan "Kismis manis".
Gabungan fuzzy dalam kiri dari dua tabel berdasarkan [FirstName]
Penggunaan
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]
)
Hasil
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
]
})