Bagikan melalui


Table.FuzzyNestedJoin

Sintaksis

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

Tentang

Menggabungkan baris table1 dengan baris table2 berdasarkan pencocokan fuzzy dari nilai kolom kunci yang dipilih oleh key1 (untuk table1) dan key2 (untuk table2). Hasilnya dikembalikan dalam kolom baru bernama newColumnName.

Pencocokan fuzzy adalah perbandingan berdasarkan kesamaan teks daripada kesetaraan teks.

joinKind opsional menentukan jenis gabungan yang akan dilakukan. Secara bawaan, join outer kiri dilakukan jika joinKind tidak ditentukan. Opsinya meliputi:

Sekumpulan joinOptions opsional dapat disertakan untuk menentukan cara membandingkan kolom kunci. Opsinya meliputi:

  • ConcurrentRequests: Angka antara 1 dan 8 yang menentukan jumlah utas paralel yang digunakan untuk pencocokan fuzzy. Nilai defaultnya adalah 1.
  • Culture: Memungkinkan pencocokan rekaman 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 (benar/salah) yang memungkinkan pencocokan kunci yang tidak membedakan huruf besar dan kecil. Misalnya, ketika benar, "Anggur" dicocokkan dengan "anggur". Nilai defaultnya adalah true.
  • IgnoreSpace: Nilai logis (benar/salah) yang memungkinkan penggpaduan bagian teks untuk menemukan kecocokan. Misalnya, ketika benar, "Gra pes" dicocokkan dengan "Anggur". 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" (hilangnya "p") hanya dicocokkan jika opsi ini diatur ke kurang dari 0.90. Ambang batas 1,00 hanya memungkinkan kecocokan persis. (Perhatikan bahwa "kecocokan fuzzy yang tampak persis" mungkin mengabaikan perbedaan seperti penulisan huruf, urutan kata, dan tanda baca.) Nilai defaultnya adalah 0,80.
  • TransformationTable: Tabel yang memungkinkan mencocokkan rekaman berdasarkan pemetaan nilai kustom. Ini harus berisi kolom "Dari" dan "Ke". Misalnya, "Anggur" dicocokkan dengan "Kismis" jika ada tabel transformasi yang menyediakan 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".

Contoh 1

Gabungan inner fuzzy kiri dari dua tabel berdasarkan [FirstName]

Penggunaan

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

Keluaran

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