แชร์ผ่าน


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