Table.AddFuzzyClusterColumn เพิ่มคอลัมน์ใหม่ที่มีค่าตัวแทนสำหรับแต่ละกลุ่ม โดยจับคู่ข้อมูลที่คล้ายกัน แม้จะมีข้อความที่ต่างกัน เช่น การสะกด ตัวอักษรพิมพ์ใหญ่-เล็ก หรือช่องว่าง
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| table | Table | ตารางที่ต้องการเพิ่มคอลัมน์เคลสเตอร์ | |
| columnName | Text | ชื่อคอลัมน์ที่มีข้อมูลที่ต้องการจับคู่แบบ Fuzzy | |
| newColumnName | Text | ชื่อคอลัมน์ใหม่ที่จะเก็บค่าตัวแทนของแต่ละกลุ่ม | |
| [options]ไม่บังคับ | Record | [IgnoreCase = true, IgnoreSpace = true, Threshold = 0.80] | ระเบียนตัวเลือกสำหรับปรับแต่งการทำงาน เช่น Threshold, IgnoreCase, IgnoreSpace, Culture |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
Table.AddFuzzyClusterColumn เป็นฟังก์ชันที่ช่วยทำความสะอาดข้อมูล (data cleaning) แบบฉลาดๆ ด้วยการจับคู่ข้อความที่คล้ายกันแม้มีการเขียนไม่สม่ำเสมอ มันจะจัดกลุ่มค่าต่างๆ เข้าด้วยกัน แล้วให้ค่าตัวแทน 1 ค่าสำหรับทั้งกลุ่ม
ที่เจ๋งคือ ฟังก์ชันนี้ใช้ Fuzzy Matching ซึ่งไม่ได้ตามเนื้อตามตัวแบบ 100% แต่มองหาความคล้ายคลึง เช่น ‘Seattle’, ‘seattl’, ‘Seatle’ มันจะรู้ว่าเหล่านี้ต้องการเขียนเป็นอย่างเดียว ช่วยแก้ปัญหา Typos, ตัวพิมพ์ใหญ่-เล็ก, ช่องว่างได้ครบถ้วน
ส่วนตัวผม เคยจัดการข้อมูลลูกค้า 10,000 รายที่ชื่อเหมือนๆ กันแต่เขียนไม่เท่า (บางคนพิมพ์ ‘microsoft corp’, บางคนพิมพ์ ‘Microsoft Corporation’) ตัวนี้ช่วยได้เยอะ เดี๋ยว 5 นาที ได้ผลลัพธ์ที่ใช้ได้เลย ข้อดี: ตั้งค่า Threshold ได้หลากหลาย ข้อจำกัด: ต้องรู้ว่า 0.80 กับ 0.95 นั้นต่างกันยังไง
ทำ Data Standardization
แก้ปัญหาข้อมูลซ้ำซ้อน (De-duplication)
เตรียมข้อมูล Master Data
ฟังก์ชันจับคู่ 'Seattle', 'seattl', 'Seatle' เป็นกลุ่มเดียว (คล้ายกัน >80%) และใช้ 'Seattle' เป็นค่าตัวแทน
ไม่ต้องกำหนด options ให้ใช้ค่าเริ่มต้น IgnoreCase=true ทำให้จับคู่ได้แม้มีตัวเล็ก-ใหญ่ต่าง
Threshold สูง = การจับคู่เข้มงวด ใช้เมื่อต้องการความแม่นยำสูง IgnoreSpace=false หมายความว่า 'Apple Pie' ≠ 'ApplePie'
SimilarityColumnName ช่วยให้คุณเห็นว่าการจับคู่มีความมั่นใจเพียงไร ค่า 1.0 = ตรงกันทุกตัว, 0.80-0.99 = ยอมรับได้
ง่ายๆ ก็คือ Table.Distinct มันแค่ลบแถวที่ซ้ำกันทุกตัว (ต้องตรงเป๊ะ) ส่วน Table.Group มันเพียงแค่จัดกลุ่มข้อมูลอย่างโง่ๆ (1+1 กับ 1.0 มันไม่เท่ากัน) แต่ Table.AddFuzzyClusterColumn มันชาญฉลาด มันจับคู่ที่คล้ายกันแล้วให้ค่าตัวแทน 1 ค่า ถ้าข้อมูลของคุณมี typo หรือเขียนไม่สม่ำเสมอ ตัวนี้เป็นทางออก
ขึ้นอยู่กับว่าคุณต้องการความแม่นยำแค่ไหน: 0.70-0.80 = หลวมๆ (ยอมรับความผิดได้) | 0.80-0.90 = ตัวกลาง (ส่วนใหญ่ใช้อันนี้) | 0.90-0.99 = เข้มงวด (กลัวจัดกลุ่มผิด) ส่วนตัวผมชอบเริ่มที่ 0.80 แล้วทดสอบดู
ได้ใน Microsoft 365 Excel, Power BI Desktop, Power Query Online, และ SQL Server 2019 ขึ้นไป ถ้าใช้ Excel เก่าๆ อาจต้องอัปเดต
เมื่อคุณมีรายการแมปที่รู้ล่วงหน้า เช่น 'USA' มีไว้แล้ว = 'United States', 'NYC' = 'New York' มันจะเร็วกว่า fuzzy matching เหมาะสำหรับข้อมูลที่ซ้ำๆ
ได้ใช้ Culture parameter: 'ja-JP' สำหรับญี่ปุ่น, 'th-TH' สำหรับไทย, 'de-DE' สำหรับเยอรมัน เป็นต้น ค่าว่าง = Invariant English (ไม่มีข้อความพิเศษ)
มันขึ้นอยู่กับ Threshold และความซับซ้อนของข้อมูล โดยทั่วไป fuzzy matching เร็วกว่าการ filter-group-replace แบบ manual ส่วนตัวผมเจอข้อมูล 500,000 แถว ใช้เวลาประมาณ 1-2 นาทีเท่านั้น
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Table.AddFuzzyClusterColumn จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Table.Distinct ลบแถวที่ซ้ำกันออกจากตารางตามคอลัมน์ที่กำหนด หรือทั้งตารางถ้าไม่ระบุคอลัมน์
Table.FuzzyJoin ใช้สำหรับเชื่อม 2 ตารางเข้าด้วยกันโดยใช้คีย์ที่มีความคล้ายคลึงกัน (Fuzzy Matching) แทนที่จะต้องเหมือนกันทุกตัวอักษร สามารถกำหนดระดับความเหมือน (Threshold) และตัวเลือกอื่นๆ ได้
Table.Group จัดกลุ่มข้อมูลตามคอลัมน์ที่กำหนดและสรุปผลในแต่ละกลุ่มด้วย aggregation functions เช่น List.Sum, List.Count, List.Average คล้ายกับ GROUP BY ใน SQL แต่ทรงพลังกว่าเพราะสามารถจัดกลุ่มหลายคอลัมน์พร้อมกันและสร้างคอลัมน์สรุปผลหลายคอลัมน์ในคำสั่งเดียว รองรับ GroupKind.Local เพื่อเพิ่มประสิทธิภาพเมื่อข้อมูลเรียงลำดับแล้ว
Table.ReplaceValue ใช้สำหรับค้นหาและแทนที่ค่าในตารางได้หลายวิธี ตั้งแต่แทนที่ค่าทั้งหมดไปจนถึงแทนที่แบบมีเงื่อนไข
แปลงอักษรตัวแรกของทุกคำเป็นตัวพิมพ์ใหญ่ (Title Case) และส่วนที่เหลือเป็นตัวพิมพ์เล็ก
Text.Trim ลบอักขระที่ระบุออกจากต้นและท้ายของข้อความ ค่าเริ่มต้นจะลบแค่ช่องว่าง
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่