List.Distinct จะคืน List ใหม่ที่ไม่มีค่าซ้ำกัน โดยเก็บสมาชิกตัวแรกที่พบไว้ และทิ้งตัวที่ซ้ำกันทิ้งไป สามารถกำหนด Comparer เพื่อใช้ Logic การเปรียบเทียบที่แตกต่างกันได้ เช่น ไม่สนใจตัวพิมพ์เล็ก/ใหญ่
=List.Distinct(list as list, optional equationCriteria as any) as list
=List.Distinct(list as list, optional equationCriteria as any) as list
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| list | list | Yes | List ที่ต้องการลบค่าซ้ำ | |
| equationCriteria | function or list | Optional | Comparer.Ordinal (Case Sensitive) | กำหนดวิธีเปรียบเทียบ สามารถใช้ Comparer (เช่น Comparer.OrdinalIgnoreCase) หรือ Key Selector function ได้ |
ดึงรายชื่อลูกค้า หรือรายชื่อสินค้าที่ไม่ซ้ำกันจากฐานข้อมูลขนาดใหญ่
ใช้เป็น Source สำหรับ Filter หรือ Parameter ที่ต้องการ List ตัวเลือกที่ไม่ซ้ำ
ลบค่าที่ซ้ำซ้อนออก เพื่อเตรียมข้อมูลสำหรับการวิเคราะห์
List.Distinct({1, 2, 5, 5, 4, 4, 4, 3, 3})= List.Distinct({1, 2, 5, 5, 4, 4, 4, 3, 3})
{1, 2, 5, 4, 3}
List.Distinct({"Apple", "apple", "Banana"})= List.Distinct({"Apple", "apple", "Banana"})
{"Apple", "apple", "Banana"}
List.Distinct({"Apple", "apple", "Banana"}, Comparer.OrdinalIgnoreCase)= List.Distinct({"Apple", "apple", "Banana"}, Comparer.OrdinalIgnoreCase)
{"Apple", "Banana"}
let Sales = Table.FromRows({{"Bangkok", 1500}, {"Chiang Mai", 2000}, {"Bangkok", 1800}}, {"City", "Revenue"}), Cities = Table.Column(Sales, "City"), UniqueCitie…let
Sales = Table.FromRows({{"Bangkok", 1500}, {"Chiang Mai", 2000}, {"Bangkok", 1800}}, {"City", "Revenue"}),
Cities = Table.Column(Sales, "City"),
UniqueCities = List.Distinct(Cities)
in
UniqueCities
{"Bangkok", "Chiang Mai"}
let Fruits = {"Apple", "Banana", "Pear", "Fig", "Cherry"}, Result = List.Distinct(Fruits, each Text.Length(_)) in Resultlet
Fruits = {"Apple", "Banana", "Pear", "Fig", "Cherry"},
Result = List.Distinct(Fruits, each Text.Length(_))
in
Result
{"Apple", "Banana", "Pear"}
เก็บตัวแรกที่พบในลำดับเดิม ส่วนตัวที่ซ้ำหลังจากนั้นจะถูกทิ้ง
List.Union ใช้รวม 2 List และลบซ้ำ ส่วน List.Distinct ใช้ลบซ้ำจาก List เดียว นอกจากนี้ List.Union ไม่รับประกันลำดับ แต่ List.Distinct เก็บลำดับเดิม
ไม่ได้โดยตรง แต่สามารถประมวลผล Table ก่อน ถ้าต้องการลบซ้ำตามหลายคอลัมน์ให้ใช้ Table.Distinct แทน
List.Distinct ลบค่าซ้ำ ส่วน List.Select ใช้กรองข้อมูลตามเงื่อนไข (เช่น เลือกเฉพาะค่าที่มากกว่า 10)
Comparer.Ordinal (Case Sensitive, ค่าเริ่มต้น) และ Comparer.OrdinalIgnoreCase (ไม่สนใจตัวพิมพ์) ส่วนใหญ่ใช้แค่สองตัวนี้
ฟังก์ชัน List.Distinct ใน Power Query ใช้สำหรับลบค่าที่ซ้ำกันทั้งหมดออกจาก List โดยจะคืน List ใหม่ที่มีเฉพาะค่าที่ไม่ซ้ำกัน (Unique Values).
ส่วนตัวผม List.Distinct นี่เป็นเครื่องมือสำคัญเวลาต้องทำ Data Cleanup ครับ เช่น ดึงรายการสินค้า Category ที่ไม่ซ้ำกันจากตารางใหญ่ๆ หรือสร้าง Dropdown List ของเมืองต่างๆ ที่ไม่ซ้ำ
เจ๋งที่สุดของ List.Distinct คือสามารถกำหนดวิธีเปรียบเทียบโดยใช้ Comparer ได้ครับ ตัวอย่างเช่น ถ้าใช้ Comparer.OrdinalIgnoreCase มันจะถือว่า “APPLE” กับ “apple” เป็นค่าเดียวกัน ตัวแรกที่มาจะเก็บไว้