Table.FromColumns สร้างตารางจากลิสต์ของลิสต์ โดยแต่ละลิสต์จะเป็นคอลัมน์หนึ่ง เหมาะกับข้อมูล column-oriented จาก API หรือ JSON
=Table.FromColumns(lists as list, optional columns as any) as table
=Table.FromColumns(lists as list, optional columns as any) as table
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| lists | list | Yes | ลิสต์ที่บรรจุลิสต์ของค่าแต่ละคอลัมน์ เช่น {{1, 2, 3}, {“A”, “B”, “C”}} | |
| columns | any | Optional | null | ชื่อคอลัมน์ (ลิสต์ของ Text) หรือ Table Type – ถ้าไม่ระบุจะเป็น Column1, Column2, … เป็นต้น |
let IDList = {1, 2, 3}, NameList = {"Bob", "Jim", "Paul"}, Result = Table.FromColumns({IDList, NameList}, {"ID", "Name"}) in Resultlet
IDList = {1, 2, 3},
NameList = {"Bob", "Jim", "Paul"},
Result = Table.FromColumns({IDList, NameList}, {"ID", "Name"})
in
Result
ตาราง 3 แถว 2 คอลัมน์: ID (1,2,3) และ Name (Bob, Jim, Paul)
let Col1 = {1, 2}, Col2 = {"A", "B", "C"}, Result = Table.FromColumns({Col1, Col2}, {"Numbers", "Letters"}) in Resultlet
Col1 = {1, 2},
Col2 = {"A", "B", "C"},
Result = Table.FromColumns({Col1, Col2}, {"Numbers", "Letters"})
in
Result
ตาราง 3 แถว: แถว 1-2 มีค่า แถว 3 มี null ในคอลัมน์ Numbers
let Data1 = {100, 200, 300}, Data2 = {50, 75, 25}, Data3 = {"X", "Y", "Z"}, Result = Table.FromColumns({Data1, Data2, Data3}) in Resultlet
Data1 = {100, 200, 300},
Data2 = {50, 75, 25},
Data3 = {"X", "Y", "Z"},
Result = Table.FromColumns({Data1, Data2, Data3})
in
Result
ตาราง 3 แถว 3 คอลัมน์ ชื่อคอลัมน์เป็น Column1, Column2, Column3 (อัตโนมัติ)
let Empty1 = {}, Empty2 = {}, Result = Table.FromColumns({Empty1, Empty2}, {"A", "B"}) in Resultlet
Empty1 = {},
Empty2 = {},
Result = Table.FromColumns({Empty1, Empty2}, {"A", "B"})
in
Result
ตาราง 0 แถว 2 คอลัมน์
Table.FromRows คาดหวัง {{Row1}, {Row2}, …} ข้อมูลเป็นแถวๆ ส่วน Table.FromColumns คาดหวัง {{Col1}, {Col2}, …} ข้อมูลเป็นคอลัมน์ๆ – ตรงข้ามกันเลยครับ
ไม่บอก Power Query ก็เติม null ให้เอง ใช้ List.Max(List.Transform({Col1, Col2, Col3}, List.Count)) ถ้าอยากรู้ว่าจะมีกี่แถว
ก็จะได้ตารางว่าง (0 แถว) แต่คอลัมน์จะยังอยู่ถ้าระบุชื่อคอลัมน์ไว้
Table.FromColumns ใช้สร้างตารางจากข้อมูลที่จัดเก็บเป็นคอลัมน์แยกกัน แทนแถว ฟังก์ชันนี้คาดหวัง {{Col1}, {Col2}, {Col3}} ก็จะสร้างตารางแนวนอนให้เองครับ
ที่เจ๋งคือถ้า List แต่ละอันมีจำนวนข้อมูลไม่เท่ากัน Power Query จะเติม null ให้อัตโนมัติแทนที่จะพังเลย ก็ไม่ต้องกังวลเรื่องข้อมูลที่ไม่เรียบร้อย
ส่วนตัวผมใช้ฟังก์ชันนี้บ่อยครั้งตอนดึงข้อมูลจาก API ที่ return เป็น {“ids”: [1,2,3], “names”: [“Bob”, “Jim”]} อย่างนี้ ก็นำ List ทั้งสองมา feed ให้ Table.FromColumns เสร็จสรรค์ใจแล้ว 😎