List.Transform ใช้สำหรับสร้างลิสต์ใหม่โดยนำฟังก์ชันไปประมวลผลแต่ละตัวในลิสต์เดิม
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| list | List | ลิสต์ที่ต้องการแปลงค่า เช่น {1, 2, 3, 4, 5} |
| transform | Function | ฟังก์ชันที่ใช้แปลงแต่ละตัว เขียนแบบ each [operation] |
List.Transform(list, transform) ใช้สำหรับแปลงค่าในลิสต์ โดยนำฟังก์ชันที่กำหนดไปประมวลผลแต่ละตัว ผลลัพธ์คือลิสต์ใหม่ที่มีค่าที่ถูกแปลงแล้ว
ส่วนตัวผม List.Transform ใช้ได้กับหลายสถานการณ์ เช่น การแปลงตัวเลข การเปลี่ยนข้อความ หรือการจัดการข้อมูล เมื่อคู่กับ each สามารถเขียนได้แบบสั้นๆ ทำให้อ่านง่ายขึ้น
ที่เจ๋งคือ List.Transform ไม่เปลี่ยนลิสต์เดิม แต่สร้างลิสต์ใหม่ที่มีข้อมูลแปลงแล้ว ซึ่งทำให้ปลอดภัยในการใช้งาน
นำตัวเลขทุกตัวใน List มาคูณด้วยค่าคงที่ หรือคำนวณซับซ้อนขึ้น
เปลี่ยนข้อความทุกตัวใน List ให้เป็นตัวพิมพ์ใหญ่ (Text.Upper(each _))
ใช้ร่วมกับ Table.AddColumn เพื่อสร้างคอลัมน์ใหม่จาก List ที่มีการแปลงค่าแล้ว
คูณแต่ละตัวเลขในลิสต์ด้วย 2 ผ่าน each _ * 2 ซึ่ง _ แทนแต่ละตัวในลิสต์
แปลงข้อความทั้งหมดเป็นตัวพิมพ์ใหญ่ โดยใช้ฟังก์ชัน Text.Upper บนแต่ละข้อความ
ใช้ let…in เพื่อจัดการข้อมูล แล้วแปลงแต่ละตัวเลขให้เพิ่มขึ้น 10%
ใช้ List.Transform ซ้อนกันสองชั้น ชั้นแรกคูณด้วย 2 ชั้นสองบวกด้วย 10
แตกต่างค่ะ List.Select กรองข้อมูลออก แต่ List.Transform แปลงค่า List.Select ส่งคืนลิสต์เดิมแบบบาง แต่ List.Transform ส่งคืนลิสต์ใหม่ที่มีค่าต่างไป
ไม่จำเป็น สามารถใช้ฟังก์ชันอื่นๆ ได้ เช่น = List.Transform(list, Date.AddDays(_, 1)) แล้วแต่ความต้องการ
ได้ค่า เช่น List.Transform(ListOfRecords, each [_ & {new_field = "value"}]) สามารถเพิ่มฟิลด์ให้รีคอร์ดในลิสต์
ฟังก์ชันที่ผู้เขียนโยงไว้กับ List.Transform จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
List.Accumulate เป็นฟังก์ชันสำหรับการวนลูปผ่านแต่ละ element ใน list พร้อมทั้งเก็บสถานะสะสมไว้ตลอดการทำงาน
.
โดยจะเริ่มต้นจากค่าเริ่มต้นที่กำหนด (seed value) และในแต่ละรอบของการวนลูป ฟังก์ชันจะส่งค่าสถานะปัจจุบัน (current state) พร้อมกับ element ปัจจุบันเข้าไปใน accumulator function ที่คุณกำหนดขึ้นมา เพื่อคำนวณและสร้างสถานะใหม่สำหรับรอบถัดไป
.
เมื่อวนลูปครบทุก element แล้ว ฟังก์ชันจะคืนค่าสถานะสุดท้ายกลับมา เหมาะสำหรับการคำนวณยอดสะสม (running totals) การรวมแบบกำหนดเอง (custom aggregations) และการสร้างรูปแบบ For-Next loop pattern ใน M language ครับ
List.Average คำนวณค่าเฉลี่ยของตัวเลข วันที่ เวลา หรือระยะเวลาในรายการ ฟังก์ชันนี้เป็นตัวช่วยแรกที่ผมใช้ทุกครั้งที่ต้องการวิเคราะห์ค่าเฉลี่ยจากชุดข้อมูลใดๆ
List.Buffer เก็บรายการข้อมูลไว้ในหน่วยความจำเพื่อเพิ่มประสิทธิภาพเมื่อต้องเข้าถึงรายการเดียวกันหลายครั้ง ฟังก์ชันนี้มีประโยชน์เมื่อต้องใช้ผลลัพธ์จากการคำนวณซ้ำๆ หรือเมื่อต้องการลดจำนวนการเข้าถึงแหล่งข้อมูลภายนอก
List.Generate เป็น generator function ที่สร้าง list โดยเริ่มจากค่าเริ่มต้น (initial) วนลูปตรวจสอบเงื่อนไข (condition) สร้างค่าถัดไป (next) และ transform ผลลัพธ์ด้วย selector (optional) ทำงานคล้าย while loop ในการเขียนโปรแกรม เหมาะสำหรับสร้างลำดับวันที่, pagination API, การคำนวณทบต้น และ pattern ซับซ้อนที่ List.Numbers ทำไม่ได้
List.Mode หาค่าที่ปรากฏบ่อยที่สุดในรายการ (Mode คือค่าที่เกิดขึ้นมากที่สุด) ใช้สำหรับการวิเคราะห์ข้อมูล สถิติ และการหาแนวโน้มกลาง
List.Modes หารายการของค่าทั้งหมดที่ปรากฏบ่อยที่สุดในรายการ หากมีหลายค่าที่เกิดขึ้นจำนวนครั้งเท่ากัน จะคืนค่าทั้งหมด
List.NonNullCount นับจำนวนของค่าในรายการที่ไม่เป็น null ใช้สำหรับการวิเคราะห์ข้อมูลและการตรวจสอบความเสมบูรณ์ของข้อมูล
List.Numbers สร้าง List ของตัวเลขเรียงกันตามค่าเริ่มต้น จำนวน และการเพิ่มค่า
List.Percentile คำนวณค่า percentile ของรายการตัวเลข ใช้สำหรับการวิเคราะห์ข้อมูล การหากลุ่มควอร์ไทล์ และการประเมินการกระจายตัวของข้อมูล
List.PositionOfAny หาตำแหน่งแรกของค่าใดค่าหนึ่งจากชุดค่าที่ระบุในรายการ ใช้สำหรับการค้นหาและการจัดการรายการข้อมูล
List.Positions หารายการของตำแหน่งทั้งหมดของค่าที่ระบุในรายการ ใช้สำหรับการค้นหาและการกำหนดตำแหน่งข้อมูล
List.Random สร้างรายการของตัวเลขสุ่มจำนวนที่ระบุ ใช้สำหรับการสุ่มตัวอย่าง การทดลอง และการสร้างข้อมูลทดสอบ
List.RemoveFirstN ลบจำนวน N รายการแรกจากรายการข้อมูล ใช้สำหรับการสุ่มตัวอย่าง การแยกข้อมูล และการตัดหัวข้อของรายการ
List.RemoveLastN ลบจำนวน N รายการสุดท้ายจากรายการข้อมูล ใช้สำหรับการตัดข้อมูลท้าย การแยกข้อมูล และการจัดการรายการ
List.RemoveNulls ลบค่า null ทั้งหมดจากรายการ ใช้สำหรับการทำความสะอาดข้อมูล การลบข้อมูลที่หายไป และการเตรียมข้อมูล
List.RemoveRange ลบรายการจำนวนที่ระบุโดยเริ่มจากตำแหน่งที่ระบุ ใช้สำหรับการตัดข้อมูล การจัดการรายการ และการแยกข้อมูล
List.Repeat จะคืน List ใหม่ที่ประกอบด้วยสมาชิกทั้งหมดของ List ต้นฉบับที่ถูกทำซ้ำกัน 'count' ครั้ง โดยเรียงต่อกันไปตามลำดับเดิม
List.ReplaceMatchingItems แทนที่รายการที่ตรงกับเงื่อนไขด้วยค่าใหม่ ใช้สำหรับการแปลงข้อมูล การแทนที่มูลค่า และการทำความสะอาดข้อมูล
List.ReplaceRange แทนที่รายการในช่วงที่ระบุด้วยรายการใหม่ ใช้สำหรับการแก้ไขข้อมูล การจัดการรายการ และการอัปเดตข้อมูล
แทนที่ค่าใน List
List.Select จะรับ List และฟังก์ชันเงื่อนไข (selection as function) โดยจะประเมินฟังก์ชันเงื่อนไขกับสมาชิกแต่ละตัว หากฟังก์ชันคืนค่า true จะเก็บสมาชิกนั้นไว้ใน List ใหม่ หากคืนค่า false จะถูกคัดทิ้งไป
Combiner.CombineTextByDelimiter คืนค่าเป็น 'ฟังก์ชัน' ที่ช่วยรวม List ของข้อความด้วยตัวคั่น (Delimiter) ที่กำหนด มักใช้เป็น argument ในฟังก์ชันอื่นๆ เช่น Table.CombineColumns
Diagnostics.Trace เขียนข้อความติดตาม (trace message) เพื่อใช้ในการแก้ไขจุดบกพร่องและตรวจสอบค่าข้อมูลในขั้นตอนต่างๆ โดยคืนค่าเดิมกลับไปยังถัดไป
Function.InvokeAfter เรียกใช้ฟังก์ชันหลังจากรอเวลาที่กำหนด นำไปใช้ในการควบคุมความเร็วเรียกข้อมูล API หรือเพิ่มความล่าช้าระหว่างการประมวลผล
List.SingleOrDefault คืนค่าเดียวจากรายการ หรือค่าเริ่มต้นหากไม่พบหรือมีมากกว่า 1 ค่า ใช้สำหรับการดึงข้อมูลเดียว
List.Split แบ่งรายการให้เป็นกลุ่มย่อยตามขนาดที่ระบุ ใช้สำหรับการจัดกลุ่มข้อมูล การแบ่งหน้า และการประมวลผลแบทช์
List.StandardDeviation คำนวณส่วนเบี่ยงเบนมาตรฐานของรายการตัวเลข ใช้สำหรับการวิเคราะห์ข้อมูล สถิติ และการวัดความเปลี่ยนแปลง
List.Sum รวมค่าตัวเลขทั้งหมดในรายการ โดยละเว้นค่า null โดยอัตโนมัติ ฟังก์ชันนี้เป็นพื้นฐานสำหรับการคำนวณสรุป การจำสรุป และการวิเคราะห์ข้อมูลในการแปลงข้อมูล
List.Times สร้างรายการของค่าเวลาที่มีช่วงเวลาเท่ากัน ใช้สำหรับการสร้างลำดับเวลา การวิเคราะห์อนุกรมเวลา และการสร้างข้อมูลทดสอบ
List.TransformMany ประมวลผลข้อมูลและคืนค่าผลลัพธ์ ใช้สำหรับการจัดการข้อมูล การแปลงข้อมูล และการวิเคราะห์
Table.FromRows สร้างตารางจาก List ของ List โดยแต่ละ List ย่อยแทนข้อมูลในแถวหนึ่ง คล้ายกับการ transpose ข้อมูลแบบแถว-คอลัมน์ แต่ทำให้เป็นตารางจริงในทันที
แบ่งตารางออกเป็นรายการของตารางย่อย (List of Tables) โดยใช้ hash function กำหนดการกระจายข้อมูล
แบ่งตารางออกเป็นรายการของตารางย่อยตามจำนวนแถวที่กำหนด เหมาะสำหรับ Pagination และ Batch Processing
Table.ToColumns แปลงตาราง (Table) ให้เป็น List ของ List โดยแต่ละ List ย่อยแทนข้อมูลจากคอลัมน์เดียว เรียงตามลำดับคอลัมน์จากซ้ายไปขวา ส่วนกลับกันของ Table.FromColumns
Table.ToRows แปลงตารางให้เป็น List ของ List โดยแต่ละ List ย่อยแทนข้อมูล 1 แถว ไม่มีชื่อคอลัมน์ เหมาะสำหรับส่งออกข้อมูลเป็น JSON/CSV หรือประมวลผลแถวโดยไม่สนใจชื่อฟิลด์
Text.Combine ใช้สำหรับรวมข้อความหลายตัวจาก List เข้าด้วยกันเป็นข้อความเดียว โดยสามารถเลือกใช้ตัวคั่น (separator) เช่น ลูกน้ำ เครื่องหมายขีด หรือ space ได้ เหมาะสำหรับสร้างชื่อเต็ม ที่อยู่ หรือรหัสประจำตัวจากส่วนประกอบย่อยๆ
Value.ReplaceType แทนที่ประเภทข้อมูล (type) ของค่าด้วยประเภทใหม่ที่กำหนด โดยไม่เปลี่ยนข้อมูลจริง
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่