Table.ColumnNames ดึงชื่อคอลัมน์ทั้งหมดจากตาราง และส่งกลับมาเป็นลิสต์ข้อความ ซึ่งจำเป็นสำหรับการตรวจสอบ schema แบบ dynamic
= Table.ColumnNames(table as table) as list
= Table.ColumnNames(table as table) as list
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| table | table | Yes | ตารางที่ต้องการดึงชื่อคอลัมน์ |
ใช้เพื่อดูว่าชื่อคอลัมน์ในตารางถูกต้องตามที่คาดไว้หรือไม่ หรือมีคอลัมน์ที่ไม่รู้จักปะปนมา
ใช้เป็น Input สำหรับฟังก์ชันที่ต้องการ List ของชื่อคอลัมน์ เช่น Table.SelectColumns
let SalesTable = Table.FromRecords({ [OrderID = 1, CustomerName = "Alice", Amount = 500], [OrderID = 2, CustomerName = "Bob", Amount = 1200] }), ColumnNames = T…let
SalesTable = Table.FromRecords({
[OrderID = 1, CustomerName = "Alice", Amount = 500],
[OrderID = 2, CustomerName = "Bob", Amount = 1200]
}),
ColumnNames = Table.ColumnNames(SalesTable)
in
ColumnNames
{"OrderID", "CustomerName", "Amount"}
let SalesTable = Table.FromRecords({ [OrderID = 1, CustomerName = "Alice", Amount = 500], [OrderID = 2, CustomerName = "Bob", Amount = 1200] }), ColumnCount = L…let
SalesTable = Table.FromRecords({
[OrderID = 1, CustomerName = "Alice", Amount = 500],
[OrderID = 2, CustomerName = "Bob", Amount = 1200]
}),
ColumnCount = List.Count(Table.ColumnNames(SalesTable))
in
ColumnCount
3
let SalesTable = Table.FromRecords({ [OrderID = 1, CustomerName = "Alice", Amount = 500], [OrderID = 2, CustomerName = "Bob", Amount = 1200] }), ColumnNames = T…let
SalesTable = Table.FromRecords({
[OrderID = 1, CustomerName = "Alice", Amount = 500],
[OrderID = 2, CustomerName = "Bob", Amount = 1200]
}),
ColumnNames = Table.ColumnNames(SalesTable),
HasAmountColumn = List.Contains(ColumnNames, "Amount")
in
HasAmountColumn
true
let SourceTable = Table.FromRecords({ [ID = 1, Name = "Alice", Email = "alice@test.com", Phone = "123-4567"], [ID = 2, Name = "Bob", Email = "bob@test.com", Pho…let
SourceTable = Table.FromRecords({
[ID = 1, Name = "Alice", Email = "alice@test.com", Phone = "123-4567"],
[ID = 2, Name = "Bob", Email = "bob@test.com", Phone = "987-6543"]
}),
AllColumns = Table.ColumnNames(SourceTable),
FilteredColumns = List.Select(AllColumns, each Text.StartsWith(_, "E"))
in
FilteredColumns
{"Email"}
ได้ครับ มันจะคืนค่าลิสต์ของชื่อคอลัมน์เหมือนเดิม แม้ว่าตารางจะไม่มีแถวข้อมูล เพราะชื่อคอลัมน์ยังคงเป็นส่วนหนึ่งของ schema และไม่ขึ้นกับจำนวนแถว
ได้ใช้ #table() เพื่อสร้างตารางจากลิสต์ชื่อคอลัมน์ หรือใช้ List.Buffer() สำหรับการจัดการลิสต์ของคอลัมน์ที่มีขนาดใหญ่
เป็นลำดับที่ปรากฏในตารางจากซ้ายไปขวา ตามลำดับที่กำหนดไว้ในตาราง หากคุณใช้ Table.ReorderColumns() มาก่อน ลำดับก็จะเปลี่ยนไปด้วย
Table.ColumnNames() ดึงชื่อคอลัมน์ทั้งหมด ส่วน Table.ColumnsOfType() ดึงเฉพาะชื่อคอลัมน์ที่มีชนิดข้อมูลเฉพาะเท่านั้น เช่น type number หรือ type text
Table.ColumnNames ใช้สำหรับดึงชื่อคอลัมน์จากตาราง Power Query ออกมาเป็นลิสต์ข้อความ
มี 1 parameter ที่ต้องส่ง:
– table: ตารางที่ต้องการดึงชื่อคอลัมน์
ส่งกลับค่า: ลิสต์ของข้อความ (text list) ที่มีชื่อคอลัมน์ทั้งหมดในลำดับจากซ้ายไปขวา
ที่เจ๋งคือ ฟังก์ชันนี้ช่วยให้เราสามารถเข้าถึงชื่อคอลัมน์แบบ dynamic ได้ ไม่จำเป็นต้องพิมพ์ชื่อคอลัมน์เอง เพราะวาไม่รู้ว่า schema จะเป็นแบบไหน
ส่วนตัวผม มักใช้ Table.ColumnNames เมื่อต้องการตรวจสอบว่าคอลัมน์ที่ต้องการมีอยู่หรือไม่ หรือเมื่อต้องสร้าง transformation ที่ทำงานกับตาราง schema ต่างๆ โดยไม่รู้ชื่อคอลัมน์ล่วงหน้า มันช่วยให้โปรแกรม flexible และ reusable ได้มากจริงๆ 😎