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
ที่เลือกได้เพื่อระบุชนิดของการรวม ตัวเลือกได้แก่:
- JoinKind.Inner
- JoinKind.LeftOuter
- JoinKind.RightOuter
- JoinKind.FullOuter
- JoinKind.LeftAnti
- JoinKind.RightAnti
- JoinKind.LeftSemi
- JoinKind.RightSemi
อาจมีชุด 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"
การรวมภายในด้านซ้ายแบบไม่เป็นทางการของสองตารางโดยยึดตาม [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
]
})