อ่านในภาษาอังกฤษ

แชร์ผ่าน


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

ประมาณ

รวมแถวของ table1 กับแถวของ table2 โดยยึดตามการจับคู่ค่าของคอลัมน์คีย์แบบไม่น่าเบื่อซึ่งถูกเลือกโดย key1 (สําหรับ table1) และ key2 (สําหรับ table2)

การจับคู่แบบไม่ชัดเจนคือการเปรียบเทียบตามความคล้ายคลึงกันของข้อความมากกว่าความเท่าเทียมกันของข้อความ

ตามค่าเริ่มต้น การรวมภายใน (inner join) จะดําเนินการ อย่างไรก็ตามอาจมีการรวม joinKind ที่เลือกได้เพื่อระบุชนิดของการรวม ตัวเลือกได้แก่:

อาจมีชุด joinOptions ที่เลือกได้เพื่อระบุวิธีการเปรียบเทียบคอลัมน์คีย์ ตัวเลือกได้แก่:

  • ConcurrentRequests: ตัวเลขระหว่าง 1 ถึง 8 ที่ระบุจํานวนเธรดขนานที่จะใช้สําหรับการจับคู่แบบไม่ชัดเจน ค่าเริ่มต้นคือ 1
  • Culture: อนุญาตให้มีระเบียนที่ตรงกันตามกฎเฉพาะของวัฒนธรรม ซึ่งอาจเป็นชื่อวัฒนธรรมที่ถูกต้อง ตัวอย่างเช่น ตัวเลือกวัฒนธรรมของ "ja-JP" จะจับคู่ระเบียนตามวัฒนธรรมญี่ปุ่น ค่าเริ่มต้นคือ "" ซึ่งจะจับคู่ตามวัฒนธรรมอังกฤษที่ไม่แปรเปลี่ยน
  • IgnoreCase: ค่าตรรกะ (จริง/เท็จ) ที่อนุญาตให้มีการจับคู่คีย์แบบไม่เทียบตรงตามตัวพิมพ์ใหญ่-เล็ก ตัวอย่างเช่น เมื่อเป็นจริง "Grapes" จะถูกจับคู่กับ "grapes" ค่าเริ่มต้นคือ จริง
  • IgnoreSpace: ค่าตรรกะ (จริง/เท็จ) ที่อนุญาตให้มีการรวมส่วนของข้อความเพื่อค้นหารายการที่ตรงกัน ตัวอย่างเช่น เมื่อเป็นจริง "Gra pes" จะถูกจับคู่กับ "Grapes" ค่าเริ่มต้นคือ จริง
  • NumberOfMatches: จํานวนเต็มที่ระบุจํานวนแถวที่ตรงกันสูงสุดที่สามารถแสดงได้สําหรับแถวอินพุตทั้งหมด ตัวอย่างเช่น ค่า 1 จะส่งกลับในแถวที่ตรงกันมากที่สุดสําหรับแต่ละแถวอินพุต ถ้าไม่ได้ระบุตัวเลือกนี้ แถวที่ตรงกันทั้งหมดจะถูกส่งกลับ
  • SimilarityColumnName: ชื่อสําหรับคอลัมน์ที่แสดงความคล้ายคลึงกันระหว่างค่าอินพุตและค่าตัวแทนสําหรับอินพุตนั้น ค่าเริ่มต้นเป็น null ซึ่งในกรณีนี้จะไม่มีการเพิ่มคอลัมน์ใหม่สําหรับความคล้ายคลึงกัน
  • Threshold: ตัวเลขระหว่าง 0.00 ถึง 1.00 ที่ระบุคะแนนความคล้ายคลึงกันที่จะจับคู่ค่าสองค่า ตัวอย่างเช่น "Grapes" และ "Graes" ("p" หายไป) จะจับคู่ก็ต่อเมื่อตั้งค่าตัวเลือกนี้น้อยกว่า 0.90 ค่าเกณฑ์ 1.00 จะอนุญาตให้จับคู่ตรงกันทั้งหมดเท่านั้น (โปรดทราบว่า "การจับคู่ที่แน่นอน" แบบไม่ชัดเจนอาจละเว้นความแตกต่าง เช่น การกําหนดลําดับคํา และเครื่องหมายวรรคตอน) ค่าเริ่มต้นคือ 0.80
  • TransformationTable: ตารางที่อนุญาตให้มีระเบียนที่ตรงกันตามการแมปค่าแบบกําหนดเอง ซึ่งควรประกอบด้วยคอลัมน์ "From" และ "To" ตัวอย่างเช่น "Grapes" จับคู่กับ "Raisins" ถ้ามีตารางการแปลงที่มีคอลัมน์ "From" ที่มี "Grapes" และคอลัมน์ "To" ที่มี "Raisins" โปรดทราบว่าการแปลงจะนําไปใช้กับข้อความทั้งหมดที่เกิดขึ้นในตารางการแปลง ด้วยตารางการแปลงข้างต้น "Grapes are sweet" จะจับคู่กับ "Raisins are sweet"

ตัวอย่างที่ 1

การรวมภายในด้านซ้ายแบบไม่เป็นทางการของสองตารางโดยยึดตาม [FirstName]

การใช้งาน

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

ผลลัพธ์ของ

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