Table.ConformToPageReader ปรับโครงสร้างตารางให้เข้ากับกลไก page reader โดยรับฟังก์ชันสำหรับการจัดรูปแบบ เป็นฟังก์ชันภายในของ Power Query ไม่แนะนำให้ใช้ในโค้ดทั่วไป
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| table | table | ตารางต้นทางที่ต้องการปรับรูปแบบเพื่อการอ่านแบบแบ่งหน้า |
| shapingFunction | function | ฟังก์ชันที่รับตารางเป็น input แล้วคืนค่าตารางที่ปรับรูปแบบแล้ว สามารถใช้ Table.* functions ต่างๆ ในฟังก์ชันนี้ |
Table.ConformToPageReader เป็นฟังก์ชัน internal use ที่ Power Query ใช้เวลาการเชื่อมต่อ data source บางประเภท (โดยเฉพาะตัวเชื่อมต่อที่สนับสนุน paging หรือการโหลดข้อมูลแบบแบ่งหน้า) เพื่อปรับโครงสร้างตารางให้เข้ากับกระบวนการอ่านแบบแบ่งหน้า
ที่เจ๋งคือถ้าคุณเข้าใจว่า shapingFunction มันคือฟังก์ชันที่รับ table แล้วคืน table กลับมา คุณสามารถสร้าง custom logic ที่ซับซ้อนได้ เช่น เลือกคอลัมน์ เพิ่มลำดับแถว ฟิลเตอร์ข้อมูล หรือแปลง data type ทั้งหมดนี้ก่อนที่ page reader จะเข้ามาทำการ paginate
ส่วนตัวผม ไม่แนะนำให้ใช้ฟังก์ชันนี้หรือก็เพราะมันเป็น internal function และเอกสารไม่มีรายละเอียด ตัวจริงในโครงการส่วนใหญ่ เราจะจัดการตารางด้วยฟังก์ชัน public API เช่น Table.SelectColumns Table.AddIndexColumn หรือ Table.SelectRows แทน ดังนั้นไม่ต้องยุ่งกับ ConformToPageReader 😎
ใช้ shapingFunction เพื่อทำให้ตารางมีรูปแบบที่กลไก page reader ต้องการ เช่น เลือกเฉพาะคอลัมน์ที่จำเป็น หรือเพิ่มคอลัมน์ลำดับ
ใช้ lambda function (t) => t ซึ่งเป็น identity function ที่รับตารางและคืนตารางเดิมอย่างไม่เปลี่ยนแปลง ตรงนี้ฝั่ง page reader ยังคงได้รับตารางเดิม แต่ผ่านขั้นตอน ConformToPageReader ตามลำดับ
shapingFunction ใช้ Table.SelectColumns เพื่อเลือกคอลัมน์ที่ต้องการ เมื่อ page reader ทำการอ่านแบบแบ่งหน้า มันจะได้รับตารางที่มีเฉพาะคอลัมน์ที่สำคัญเท่านั้น ช่วยลดปริมาณข้อมูลที่ต้องส่งต่อ
shapingFunction ใช้ Table.AddIndexColumn เพื่อเพิ่มคอลัมน์ลำดับแถว ซึ่งในบางตัวเชื่อมต่อที่ทำงานแบบแบ่งหน้า อาจจำเป็นต้องมีตัวระบุแถว (row identifier) เพื่อติดตามตำแหน่งของข้อมูลในแต่ละหน้า
ใส่ Table.SelectColumns เข้าไปใน Table.AddIndexColumn เพื่อทำ chaining transformations ก่อนที่ page reader จะเข้ามาจัดการ ลำดับการทำงาน: เลือกคอลัมน์ → เพิ่มตัวระบุแถว → ส่งไปให้ page reader
ผมเข้าใจว่า Table.ConformToPageReader ออกแบบมาเพื่องานภายใน Power Query เท่านั้น Microsoft ไม่ได้ให้ commitments เกี่ยวกับความเสถียรหรือ API ของมันได้ เนื่องจาก internal functions มักเปลี่ยนแปลงไปตามเวอร์ชัน ดังนั้น Microsoft จึงห้ามผู้ใช้ใช้ในโค้ด production
ผลลัพธ์ออกมาคล้ายกัน แต่ตัว ConformToPageReader มีการล้างหรือเตรียมตารางเพิ่มเติมให้เข้ากับกลไก page reader ของตัวเชื่อมต่อบางประเภท ส่วนใหญ่ถ้าเราใช้ Table.SelectColumns หรือฟังก์ชัน public อื่นๆ โดยตรง ก็ใช้ได้ดีแล้วโดยไม่ต้องเรียก ConformToPageReader
ได้ทีเดียว แต่ไม่มีประโยชน์นะ เพราะมันออกแบบมาสำหรับตัวเชื่อมต่อที่ support paging เมื่อใช้กับ data source ธรรมชาติ (เช่น Excel Table หรือ CSV) อาจไม่มีเอฟเฟกต์อะไร
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Table.ConformToPageReader จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Table.AddIndexColumn ใช้สำหรับเพิ่มคอลัมน์ที่มีลำดับเลขให้กับตาราง ช่วยให้สามารถกำหนดหมายเลขแถวตามลำดับได้
แปลง List ของ Record เป็นตาราง โดยแต่ละ Record กลายเป็นหนึ่งแถว เหมาะสำหรับข้อมูลจาก API หรือ JSON
Table.SelectColumns ใช้สำหรับเลือกคอลัมน์เฉพาะจากตารางและสร้างตารางใหม่ที่มีเฉพาะคอลัมน์เหล่านั้น
Table.SelectRows เป็นฟังก์ชันสำหรับกรองตาราง (filter table) ใน Power Query โดยใช้ฟังก์ชันเงื่อนไข (condition function) เพื่อตรวจสอบแต่ละแถว ถ้าเงื่อนไขคืนค่า true จะเก็บแถวนั้นไว้ ถ้าเป็น false จะตัดทิ้ง สามารถใช้ keyword 'each' ร่วมกับการอ้างอิงคอลัมน์ด้วย [ColumnName] เพื่อเขียนเงื่อนไขได้สะดวก รองรับการกรองตามตัวเลข ข้อความ วันที่ การตรวจสอบค่า null และเงื่อนไขที่ซับซ้อนด้วย and/or operators ฟังก์ชันนี้รองรับ Query Folding ซึ่งช่วยเพิ่มประสิทธิภาพเมื่อทำงานกับ data source ขนาดใหญ่
Table.TransformColumns ใช้สำหรับแปลงข้อมูลในคอลัมน์โดยใช้ฟังก์ชันที่กำหนดไว้ แต่ละคอลัมน์สามารถมีการแปลงแตกต่างกันได้ รองรับการเปลี่ยนแปลงประเภทข้อมูลในเวลาเดียวกัน
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่