Table.PromoteHeaders เลื่อนข้อมูลในแถวแรกของตารางขึ้นมาเป็นชื่อคอลัมน์ และลบแถวนั้นออกจากส่วนข้อมูล รองรับพารามิเตอร์เสริม options เป็น record ที่มีฟิลด์ PromoteAllScalars สำหรับอนุญาตให้ค่าที่ไม่ใช่ข้อความ เช่น ตัวเลขและวันที่ ถูกแปลงเป็นชื่อคอลัมน์ได้ และ Culture สำหรับกำหนดรูปแบบการแปลงค่าตามภูมิภาค
.
ที่เจ๋งคือ PromoteAllScalars=true ช่วยให้หัวตารางที่เป็นตัวเลขหรือวันที่ก็ใช้ได้ ไม่ติดว่าต้องเป็นข้อความอย่างเดียว
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| table | table | ตารางข้อมูลที่ต้องการเลื่อนแถวแรกขึ้นเป็นส่วนหัว | |
| [options]ไม่บังคับ | nullable record | null | Record ที่มีฟิลด์ PromoteAllScalars (true/false) สำหรับอนุญาตทุกประเภทข้อมูล และ Culture (เช่น “en-US”) สำหรับกำหนดรูปแบบการแปลง |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
Table.PromoteHeaders ใน Power Query ใช้สำหรับเลื่อนข้อมูลในแถวแรกของตารางขึ้นไปเป็นหัวคอลัมน์
.
เคยเจอมั้ยครับว่า… พอนำเข้าไฟล์ Excel หรือ CSV แล้วหัวตารางมันยังอยู่ในส่วนข้อมูล? ฟังก์ชันนี้มันเกิดมาแก้ปัญหานี้แหละครับ 😎
เมื่อนำเข้าไฟล์ข้อมูล แถวแรกมักเป็นชื่อคอลัมน์ แต่ Power Query อาจมองเป็นข้อมูลธรรมดา ใช้ฟังก์ชันนี้เพื่อเลื่อนแถวแรกขึ้นเป็นหัวตารางอย่างถูกต้อง
เมื่อใช้ Table.Transpose สลับแถวเป็นคอลัมน์ แถวแรกของผลลัพธ์มักจะเป็นส่วนหัวที่ต้องการ ใช้ Table.PromoteHeaders ตามหลังเพื่อจัดรูปแบบให้ถูกต้อง
เมื่อหัวตารางเป็นปี ค.ศ. (2020, 2021, 2022) หรือวันที่ ใช้ [PromoteAllScalars=true] เพื่อให้ Power Query แปลงค่าเหล่านี้เป็นชื่อคอลัมน์ได้
เลื่อนแถวแรก (CustomerID, Name, Age) ขึ้นเป็นชื่อคอลัมน์ และลบแถวนั้นออกจากข้อมูล
ค่าที่เป็นข้อความและตัวเลขจะถูก promote โดยอัตโนมัติครับ ไม่ต้องทำอะไรเพิ่ม 😎
ใช้ PromoteAllScalars=true เพื่ออนุญาตให้ทุกประเภทข้อมูล (รวมตัวเลข 1 และวันที่) ถูกแปลงเป็นชื่อคอลัมน์
วันที่จะแปลงเป็นข้อความในรูปแบบ default culture ซึ่งขึ้นอยู่กับการตั้งค่าระบบครับ
ระบุ Culture="en-US" เพื่อให้วันที่ในหัวตารางถูก format เป็น MM/DD/YYYY (รูปแบบอเมริกัน) แทนรูปแบบ default ของระบบ
เหมาะสำหรับควบคุม format ให้สอดคล้องกับข้อมูลครับ ไม่งั้นบางทีรูปแบบมันอาจจะไม่ตรงกับที่คาดหวังไว้ 😅
หลังจาก Transpose สลับแถวเป็นคอลัมน์ แถวแรกของผลลัพธ์จะเป็น "Revenue", "Cost" ใช้ Table.PromoteHeaders เพื่อเลื่อนขึ้นเป็นชื่อคอลัมน์
Pattern นี้ใช้บ่อยมากในการ pivot ข้อมูลครับ คู่หูกันไปเลย 😎
เป็นฟังก์ชันเดียวกัน เมื่อคลิกปุ่ม Use First Row as Headers ใน Power Query Editor จะสร้าง step ที่เรียกใช้ฟังก์ชัน Table.PromoteHeaders โดยอัตโนมัติ
คอลัมน์ที่มีค่าว่างในแถวแรกจะได้ชื่อเป็น Column1, Column2, Column3 ฯลฯ แทน ไม่ใช้ค่าว่างเป็นชื่อคอลัมน์
ถ้าต้องการเปลี่ยนชื่อคอลัมน์ ให้ใช้ Table.RenameColumns ตามหลังครับ
ใช้เมื่อหัวตารางมีค่าที่ไม่ใช่ข้อความ เช่น ปี ค.ศ. (2020, 2021, 2022) หรือวันที่ครับ
โดย default Table.PromoteHeaders จะ promote เฉพาะข้อความและตัวเลขเท่านั้น ถ้าต้องการให้ทุกประเภทข้อมูลถูกแปลงเป็นชื่อคอลัมน์ ต้องตั้ง PromoteAllScalars=true
ทำได้ แต่ไม่แนะนำครับ เพราะแต่ละครั้งจะเลื่อนแถวแรกขึ้นเป็น header ทำให้ข้อมูลหายไป 😭
ควรใช้ครั้งเดียวหลังจากนำเข้าข้อมูลหรือ transform ให้ได้รูปแบบที่ต้องการแล้ว
Excel.Workbook useHeaders ทำงานตอนนำเข้าไฟล์ Excel โดยอัตโนมัติ ส่วน Table.PromoteHeaders เป็น transformation step ที่ทำกับตารางใดก็ได้ใน Power Query
ส่วนตัวผมแนะนำให้ใช้ Table.PromoteHeaders แทน useHeaders เพราะปลอดภัยกว่า (ไม่มีปัญหา culture conversion) และควบคุมได้มากกว่าครับ 💡
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Table.PromoteHeaders จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Table.ColumnNames ดึงชื่อคอลัมน์ทั้งหมดจากตาราง และส่งกลับมาเป็นลิสต์ข้อความ ซึ่งจำเป็นสำหรับการตรวจสอบ schema แบบ dynamic
Table.RenameColumns ใช้สำหรับเปลี่ยนชื่อคอลัมน์หนึ่งหรือหลายคอลัมน์ในตารางพร้อมกัน โดยส่งผ่าน list ของ rename pairs {ชื่อเก่า, ชื่อใหม่}
Table.Transpose จะกลับด้านตาราง คล้ายกับการ Copy > Paste Special > Transpose ใน Excel โดยข้อมูลในแถวที่ 1 จะกลายเป็นคอลัมน์ที่ 1 แถวที่ 2 เป็นคอลัมน์ที่ 2 ไปเรื่อยๆ
Csv.Document แปลงข้อมูลรูปแบบ CSV (Comma-Separated Values) ให้เป็นตารางข้อมูล (table) ใน Power Query โดยรองรับการกำหนดตัวแบ่งข้อมูล (delimiter), รหัสภาษา (encoding) และโครงสร้างคอลัมน์ (column structure) แบบต่างๆ ได้ตามความต้องการ function นี้สามารถแยกวิเคราะห์ทั้งข้อมูลแบบ binary content ที่ได้จาก File.Contents และข้อความแบบ text string ที่ได้จาก Web.Contents พร้อมจัดการข้อความที่ครอบด้วย quote ตามมาตรฐานสากล CSV standard เหมาะสมสำหรับการนำเข้าไฟล์ CSV จากระบบไฟล์ในเครื่อง (local), ที่อยู่เว็บไซต์ (URL) หรือการตอบกลับจาก API (API response) ที่มีตัวแบ่งข้อมูลแบบกำหนดเอง (custom delimiter), เนื้อหาภาษาต่างประเทศ หรือโครงสร้างพิเศษที่ต้องการการควบคุมเฉพาะ คืนค่าออกมาเป็นตารางที่ทุกคอลัมน์มีประเภทข้อมูลเป็นข้อความ (text type) ควรใช้ร่วมกับ Table.PromoteHeaders เพื่อยกแถวแรกขึ้นเป็นหัวตาราง และ Table.TransformColumnTypes เพื่อแปลงประเภทข้อมูลให้เหมาะสมกับการใช้งาน
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่