Table.ReplaceValue ใช้สำหรับค้นหาและแทนที่ค่าในตารางได้หลายวิธี ตั้งแต่แทนที่ค่าทั้งหมดไปจนถึงแทนที่แบบมีเงื่อนไข
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| table | table | ตารางต้นฉบับที่ต้องการแทนที่ค่า |
| oldValue | any | ค่าเก่าที่ต้องการค้นหา สามารถเป็น text, number, หรือ each expression สำหรับ conditional logic |
| newValue | any | ค่าใหม่ที่ต้องการแทนที่ สามารถเป็น literal value หรือ each expression |
| replacer | function | ฟังก์ชันที่ใช้สำหรับการแทนที่: Replacer.ReplaceValue (exact match) หรือ Replacer.ReplaceText (partial match) หรือ custom function |
| columnsToSearch | list | รายการชื่อคอลัมน์ที่ต้องการค้นหาและแทนที่ เช่น {“Name”, “Email”} |
Table.ReplaceValue(table, oldValue, newValue, replacer, columnsToSearch) ใช้สำหรับค้นหาค่าเก่าในคอลัมน์ที่ระบุและแทนที่ด้วยค่าใหม่ โดยมีอยู่สองวิธีหลัก: Replacer.ReplaceValue สำหรับแทนที่ค่าทั้งหมด (exact match) หรือ Replacer.ReplaceText สำหรับแทนที่ข้อความเพียงส่วนหนึ่ง (partial match)
ส่วนตัวผม Table.ReplaceValue เป็นเครื่องมือที่โคตร powerful ในการทำความสะอาดข้อมูล โดยเฉพาะตอนที่ต้องกำจัด typos หรือแปลงค่าที่ไม่เป็นมาตรฐาน เช่น เปลี่ยน “USA” เป็น “United States” หรือลบ prefix/suffix ออกจากข้อความ การใช้ each expression ยังทำให้เพิ่มเงื่อนไข conditional logic ได้ด้วย
ที่เจ๋งคือ Table.ReplaceValue สามารถใช้ custom replacer function ได้ ทำให้สามารถสร้างตรรกะการแทนที่ที่ซับซ้อนได้เช่น “แทนที่เฉพาะแถวที่มี condition บางอย่าง” หรือ “แทนที่ให้ตรงกับความยาวของค่าเดิม” นอกจากนี้ยังสามารถค้นหาข้ามหลายคอลัมน์พร้อมกัน ทำให้ประหยัดเวลาเมื่อจัดการข้อมูลที่มีหลายคอลัมน์ต้อง transform
Replacer.ReplaceValue ใช้สำหรับแทนที่ค่าทั้งหมด ในที่นี้ค้นหา "approved" ในคอลัมน์ Status เท่านั้น ถ้าเกิด typo เช่น "approve" (ขาด d) จะไม่ match เพราะต้องตรงกันทั้งหมด
Replacer.ReplaceText ใช้สำหรับแทนที่ข้อความเพียงส่วนหนึ่ง (substring) ในตัวอย่างนี้ค้นหา underscore ในชื่อและแทนที่ด้วย space เหมาะสำหรับปรับฟอร์แมตข้อความ
ใช้ each expression ในพารามิเตอร์ oldValue เพื่อตั้งเงื่อนไข: "ถ้า Country = 'US' แล้วค้นหา Status เป็น 'New' ถ้าไม่ใช่ return false" ทำให้แทนที่เฉพาะแถวที่ตรงตามเงื่อนไข
ใช้ each expression ทั้งใน oldValue และ newValue เพื่อแปลงตัวอักษรของแต่ละค่า oldValue = [OriginalName] หมายถึง "ค้นหาค่าปัจจุบันของคอลัมน์นั้น" newValue = Text.Proper([OriginalName]) หมายถึง "แปลงเป็น Title Case" ทำให้แปลงค่าเดิมไปเป็นค่าใหม่แบบ dynamic
ใช้ Replacer.ReplaceText เพื่อลบ prefix ออกจากค่า แทนด้วยข้อความว่าง ("") เหมาะสำหรับสร้างความสะอาดให้กับข้อมูลที่มี prefix/suffix ที่ไม่ต้องการ
ระบุหลายชื่อคอลัมน์ใน columnsToSearch: {"FirstName", "LastName"} ทำให้ค้นหาและแทนที่ค่า "N/A" ในทั้งสองคอลัมน์พร้อมกัน ประหยัดการใช้ Table.ReplaceValue หลายครั้ง
Replacer.ReplaceValue ใช้สำหรับแทนที่ค่าทั้งหมด (exact match) – ถ้าค้นหา 'goodbye' จะไม่ match 'goodbyes'. Replacer.ReplaceText ใช้สำหรับแทนที่ข้อความเพียงส่วนหนึ่ง (substring) – ถ้าค้นหา 'good' จะ match ทั้ง 'goodbye' และ 'goodbyes' แล้วแทนที่เพียงส่วนนั้น
Table.ReplaceValue ใช้สำหรับค้นหาค่าเฉพาะและแทนที่ (targeted replacement) ส่วน Table.TransformColumns ใช้สำหรับแปลงทุกค่าในคอลัมน์ด้วยฟังก์ชัน (comprehensive transformation) ถ้าต้องการแปลงค่าทั้งหมดใช้ Table.TransformColumns ถ้าต้องการแทนที่เฉพาะบางค่าใช้ Table.ReplaceValue
ได้ใช้ใน 3 ที่: (1) oldValue = each [column] = value – สำหรับ conditional search, (2) newValue = each formula – สำหรับ dynamic replacement, (3) both – ใช้ทั้งสองพร้อมเพื่อสร้างความจำเพาะสูงสุด
ไม่ error คำสั่ง Table.ReplaceValue จะทำงานปกติ เพียงแต่ไม่มีการแทนที่เพราะไม่พบค่าที่ค้นหา ตารางส่งกลับมาเหมือนเดิม
ได้ เช่น Table.ReplaceValue(Table.ReplaceValue(Source, "A", "B", …), "C", "D", …) แต่ถ้าแทนที่หลายค่า ลองใช้ let…in เพื่อให้อ่านง่าย หรือใช้ custom replacer function สำหรับตรรกะที่ซับซ้อน
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Table.ReplaceValue จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Table.AddColumn เพิ่มคอลัมน์ใหม่ลงในตารางโดยคำนวณค่าจากฟังก์ชันที่กำหนด ใช้คำสั่ง each เพื่ออ้างอิงข้อมูลในแต่ละแถว เช่น each [Price] * [Quantity] สามารถระบุชนิดข้อมูลได้เพื่อเพิ่มประสิทธิภาพและป้องกันข้อผิดพลาดจากการคาดเดาชนิดข้อมูล ทำงานแบบทีละแถวและเหมาะสำหรับสร้างคอลัมน์คำนวณ รวมข้อมูล ใช้เงื่อนไข และการแปลงข้อมูลต่างๆ ใช้ร่วมกับฟังก์ชัน Table.TransformColumns สำหรับแก้ไขคอลัมน์เดิม Table.AddIndexColumn สำหรับเพิ่มหมายเลขลำดับ Table.SelectRows สำหรับกรองแถว Table.FromRecords สำหรับสร้างตารางจากข้อมูล Text.Combine สำหรับรวมข้อความ Number.Round สำหรับปัดเศษ Date.Year สำหรับดึงค่าปี และ Text.Upper สำหรับแปลงเป็นตัวพิมพ์ใหญ่ เพื่อสร้างกระบวนการแปลงข้อมูลที่สมบูรณ์
Table.AddFuzzyClusterColumn เพิ่มคอลัมน์ใหม่ที่มีค่าตัวแทนสำหรับแต่ละกลุ่ม โดยจับคู่ข้อมูลที่คล้ายกัน แม้จะมีข้อความที่ต่างกัน เช่น การสะกด ตัวอักษรพิมพ์ใหญ่-เล็ก หรือช่องว่าง
Table.FillDown เติมเต็มค่า null ด้วยค่าจากแถวด้านบน (forward fill) เหมาะสำหรับข้อมูลที่มีการ merge cell หรือจัดกลุ่มข้อมูลแบบ hierarchical ทำให้ได้ตารางที่สมบูรณ์พร้อมใช้ต่อได้เลย
Table.FillUp เติมเต็มค่าว่าง (null) ด้วยค่าจากแถวด้านล่างขึ้นไป ทำงานตรงกันข้ามกับ FillDown ใช้สำหรับจัดการข้อมูลที่ค่าสรุปอยู่ล่างสุด
Table.SelectRows เป็นฟังก์ชันสำหรับกรองตาราง (filter table) ใน Power Query โดยใช้ฟังก์ชันเงื่อนไข (condition function) เพื่อตรวจสอบแต่ละแถว ถ้าเงื่อนไขคืนค่า true จะเก็บแถวนั้นไว้ ถ้าเป็น false จะตัดทิ้ง สามารถใช้ keyword 'each' ร่วมกับการอ้างอิงคอลัมน์ด้วย [ColumnName] เพื่อเขียนเงื่อนไขได้สะดวก รองรับการกรองตามตัวเลข ข้อความ วันที่ การตรวจสอบค่า null และเงื่อนไขที่ซับซ้อนด้วย and/or operators ฟังก์ชันนี้รองรับ Query Folding ซึ่งช่วยเพิ่มประสิทธิภาพเมื่อทำงานกับ data source ขนาดใหญ่
Table.TransformColumns ใช้สำหรับแปลงข้อมูลในคอลัมน์โดยใช้ฟังก์ชันที่กำหนดไว้ แต่ละคอลัมน์สามารถมีการแปลงแตกต่างกันได้ รองรับการเปลี่ยนแปลงประเภทข้อมูลในเวลาเดียวกัน
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่