Table.RemoveColumns ใช้ลบคอลัมน์เดียวหรือหลายคอลัมน์จาก table ครั้งเดียว เป็นวิธีที่สะดวกเมื่อต้องการลบ column ที่ไม่ต้องการ เช่น unwanted columns จากการโหลด Excel หรือ column ชั่วคราวหลังใช้คำนวณเสร็จ
=Table.RemoveColumns(table as table, columns as any, optional missingField as nullable number) as table
=Table.RemoveColumns(table as table, columns as any, optional missingField as nullable number) as table
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| table | table | Yes | Table ที่ต้องการลบ column ออก | |
| columns | any | Yes | ชื่อ column ที่ต้องลบ (ส่งเป็น text สำหรับ 1 column เช่น “Phone” หรือ list สำหรับหลาย column เช่น {“Phone”, “Email”, “Address”}) | |
| missingField | nullable number | Optional | MissingField.Error | พฤติกรรมเมื่อ column ไม่มีจริง ๆ มีตัวเลือก MissingField.Ignore (ข้ามไป ไม่ error) หรือ MissingField.Error (ค่าปกติ เกิด error) |
ลบคอลัมน์ที่ใช้คำนวณเสร็จแล้วและไม่ต้องการแสดงผลลัพธ์สุดท้าย
ลบคอลัมน์ที่มีข้อมูลส่วนบุคคล (PII) ก่อนแชร์ข้อมูล
let Customers = Table.FromRecords({ [ID = 1, Name = "Bob", Phone = "123-4567", Email = "bob@email.com"], [ID = 2, Name = "Alice", Phone = "234-5678", Email = "a…= let
Customers = Table.FromRecords({
[ID = 1, Name = "Bob", Phone = "123-4567", Email = "bob@email.com"],
[ID = 2, Name = "Alice", Phone = "234-5678", Email = "alice@email.com"]
}),
Removed = Table.RemoveColumns(Customers, "Phone")
in
Removed
Table with 3 columns: ID, Name, Email (Phone ลบออก)
let Sales = Table.FromRecords({ [OrderID = 1001, Product = "Laptop", Price = 50000, InternalID = "X123", TempCalc = 100, Status = "Shipped"] }), Clean = Table.R…= let
Sales = Table.FromRecords({
[OrderID = 1001, Product = "Laptop", Price = 50000, InternalID = "X123", TempCalc = 100, Status = "Shipped"]
}),
Clean = Table.RemoveColumns(Sales, {"InternalID", "TempCalc"})
in
Clean
Table with 4 columns: OrderID, Product, Price, Status
let Data = Table.FromRecords({ [ID = 1, Name = "Product A", Price = 100] }), SafeRemove = Table.RemoveColumns( Data, {"Phone", "Email", "Address"}, MissingField…= let
Data = Table.FromRecords({
[ID = 1, Name = "Product A", Price = 100]
}),
SafeRemove = Table.RemoveColumns(
Data,
{"Phone", "Email", "Address"},
MissingField.Ignore
)
in
SafeRemove
Table unchanged with ID, Name, Price columns (Phone/Email/Address ไม่มี แต่ไม่ error)
let Excel = Table.FromRecords({ [ID = 1, Name = "Item", Column1 = "", Column2 = "", Column3 = ""] }), Clean = Table.RemoveColumns(Excel, {"Column1", "Column2",…= let
Excel = Table.FromRecords({
[ID = 1, Name = "Item", Column1 = "", Column2 = "", Column3 = ""]
}),
Clean = Table.RemoveColumns(Excel, {"Column1", "Column2", "Column3"})
in
Clean
Table with 2 columns: ID, Name
จะเกิด Error: ‘The column… of the table wasn’t found’ ซึ่งถ้าไม่แก้จะทำให้ query ล่มทั้งตัว การแก้คือใส่ MissingField.Ignore: Table.RemoveColumns(Source, “Phone”, MissingField.Ignore) แล้วมันจะข้ามไปถ้า column ไม่มี
ใช้ Table.SelectColumns แทน มันทำงานตรงข้าม คุณชี้เลยว่า column ไหนที่ต้องเก็บ ไม่ใช่ลบออก เช่น Table.SelectColumns(Source, {“ID”, “Name”, “Email”})
ใช่ ถ้าลบ 1 column ส่ง text: “Phone” หรือส่ง list เดียวตัวก็ได้ {“Phone”} แต่ลบหลายตัว ต้องส่ง list {“Phone”, “Email”, “Address”}
ไม่ต้อง ส่ง list ของ columns ทั้งหมดที่ต้องลบในครั้งเดียว ดีกว่าแนวดี: Table.RemoveColumns(Source, {“Col1”, “Col2”, “Col3”}) แทนการลบทีละตัว 3 step
Table.RemoveColumns ทำหน้าที่ลบคอลัมน์ออกจากตารางได้ทีละตัวหรือหลายตัวพร้อมกัน
จริงๆ มันใช้บ่อยมากในงานจริง เพราะเวลาดึงข้อมูลมา (เช่น Excel, Database, API) มักมี column ที่ไม่ต้องการปะปนอยู่ เช่น Row Number, Column1, Column2, Internal ID หรือข้อมูล sensitive ที่ไม่ควรแชร์ Table.RemoveColumns ช่วยลบออกได้ในลูป
จุดสำคัญคือสามารถลบหลายคอลัมน์พร้อมกันได้ (ส่งเป็น List) ซึ่งดีกว่าการลบทีละตัวทีละ step ทั้งจากด้าน performance และความสะอาดของโค้ด และถ้า column ไม่มีจริง ๆ จะ error ตามค่าปกติ แต่สามารถใส่ MissingField.Ignore เพื่อให้ query ยังสำเร็จได้แม้ column ไม่มี (เป็นประโยชน์เวลาข้อมูล source เปลี่ยนโครงสร้าง)