แปลง List เป็น Table โดยใช้ฟังก์ชัน Splitter เพื่อแยกข้อมูลเป็นคอลัมน์
= Table.FromList(list as list, optional splitter as nullable function, optional columns as any, optional default as any, optional extraValues as nullable number) as table
= Table.FromList(list as list, optional splitter as nullable function, optional columns as any, optional default as any, optional extraValues as nullable number) as table
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| list | list | Yes | List ที่ต้องการแปลงเป็น Table | |
| splitter | function | Optional | null | ฟังก์ชัน Splitter ที่ใช้แยกแต่ละ item ของ List (เช่น Splitter.SplitByComma(), Splitter.SplitByDelimiter(“,”), Record.FieldValues) ถ้าเป็น null จะใช้ Splitter.SplitByComma() เป็นค่าเริ่มต้น |
| columns | any | Optional | 1 | ชื่อคอลัมน์ของ Table สามารถเป็น number (จำนวนคอลัมน์), text (ชื่อคอลัมน์เดียว), list (รายชื่อคอลัมน์), หรือ TableType |
| default | any | Optional | ค่าเริ่มต้นสำหรับ cell ที่ว่างหรือไม่มีค่า | |
| extraValues | number | Optional | 0 | วิธีจัดการค่าพิเศษ (0 = Ignore, 1 = Error, 2 = UseAsIs) |
Table.FromList({1, 2, 3}, null, {"Number"})= Table.FromList({1, 2, 3}, null, {"Number"})
ตาราง 3 แถวจาก List {1, 2, 3} โดยมีคอลัมน์ชื่อ "Number"
Table.FromList({"a,apple", "b,ball", "c,cookie", "d,door"}, Splitter.SplitByComma(), {"Letter", "Example"})= Table.FromList({"a,apple", "b,ball", "c,cookie", "d,door"}, Splitter.SplitByComma(), {"Letter", "Example"})
ตาราง 4 แถว 2 คอลัมน์ ได้ Letter (a, b, c, d) และ Example (apple, ball, cookie, door)
Table.FromList({"a,apple", "b,ball", "c,cookie"}, Splitter.SplitByNothing(), {"Combined"})= Table.FromList({"a,apple", "b,ball", "c,cookie"}, Splitter.SplitByNothing(), {"Combined"})
ตาราง 3 แถว 1 คอลัมน์ที่เก็บค่าเดิม "a,apple", "b,ball", "c,cookie"
let RecordList = { [CustomerID = 1, Name = "Alice", City = "Bangkok"], [CustomerID = 2, Name = "Bob", City = "Chiang Mai"] } in Table.FromList(RecordList, Recor…let
RecordList = {
[CustomerID = 1, Name = "Alice", City = "Bangkok"],
[CustomerID = 2, Name = "Bob", City = "Chiang Mai"]
}
in
Table.FromList(RecordList, Record.FieldValues, {"CustomerID", "Name", "City"})
ตาราง 2 แถว 3 คอลัมน์ ได้ CustomerID, Name, City จาก Record List
Table.FromList({"Alice", "Bob", "Charlie"}, null, 1)= Table.FromList({"Alice", "Bob", "Charlie"}, null, 1)
ตาราง 3 แถว 1 คอลัมน์ที่ชื่อ "Column1" (ค่าเริ่มต้น)
Table.FromList({"a|apple", "b|ball", "c|cookie"}, Splitter.SplitByDelimiter("|"), {"Letter", "Example"})= Table.FromList({"a|apple", "b|ball", "c|cookie"}, Splitter.SplitByDelimiter("|"), {"Letter", "Example"})
ตาราง 3 แถว 2 คอลัมน์ แยกตาม delimiter "|"
Table.FromList() สร้าง Table จาก List (อาจต้องแยกข้อมูล) ส่วน Table.FromRecords() สร้าง Table จาก List of Records โดยตรง ถ้าข้อมูลมาเป็น Record List อยู่แล้ว ให้ใช้ Table.FromRecords() จะง่ายกว่า
ใช้ parameter “default” เพื่อตั้งค่าเริ่มต้นสำหรับ cell ที่ว่าง เช่น Table.FromList(list, Splitter.SplitByComma(), {“A”, “B”, “C”}, “”)
extraValues ควบคุมการจัดการเวลา item มี field มากกว่าจำนวนคอลัมน์ที่กำหนด: 0 = Ignore (ทำให้เป็นค่าเริ่มต้าน), 1 = Error (ขึ้น error), 2 = UseAsIs (เก็บค่าเดิม)
ได้ ใช้ Splitter.SplitByDelimiter(), Splitter.SplitByAnyDelimiter(), หรือ custom function ที่คืนค่า list ได้
ไม่จำเป็น ถ้าไม่ระบุ Power Query จะตั้งชื่อเป็น “Column1”, “Column2” เป็นต้น แต่แนะนำให้ระบุไว้เพื่อความชัดเจน
Table.FromList() ใช้สำหรับแปลง List ให้เป็น Table โดยแยกแต่ละ item ใน List เป็นแถวและสามารถระบุวิธีการแยกข้อมูลเป็นคอลัมน์ได้
ที่เจ๋งของ Table.FromList คือมันเอาท์พุทเป็น Table แล้ว สามารถใช้ function อื่นต่อทันทีได้เลย ไม่ต้องแปลง format ใหม่ครับ เหมาะมากสำหรับการแปลงข้อมูลแบบ raw list ให้อยู่ในโครงสร้างตารางที่จัดการง่าย
ส่วนตัวผม ใช้ Table.FromList บ่อยตอนทำ web scraping หรือเวลาดึงข้อมูลจาก API ที่มาเป็น JSON list ยกตัวอย่างเช่น ถ้าได้ list มาแบบ {“a,apple”, “b,ball”, “c,cat”} ผมก็ใช้ Table.FromList ร่วมกับ Splitter function แล้วตั้งชื่อคอลัมน์เรียบร้อย ข้อมูลก็ clean และพร้อม filter/sort ได้เลย นอกจากนี้ยังใช้ได้ดีกับการแปลง text data ที่มี delimiter หรือแม้แต่ record list ที่ต้องการแยก field ออกมาเป็นคอลัมน์ 😎