DATATABLE สร้างตารางแบบ hardcode ด้วยข้อมูลคงที่ โดยระบุชื่อคอลัมน์ ชนิดข้อมูล และค่าของแต่ละแถว เหมาะสำหรับตารางอ้างอิงเล็กๆ เช่น lookup table หรือข้อมูลตัวอย่าง
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| Name | text | ชื่อคอลัมน์ (ระบุเป็นข้อความ) สามารถระบุได้หลายคอลัมน์ โดยสลับกับ DataType |
| DataType | datatype | ชนิดข้อมูลของคอลัมน์ (BOOLEAN/LOGICAL, CURRENCY/DECIMAL, DATETIME, DOUBLE, INTEGER/INT64, STRING/TEXT) |
| Data | constant table | ชุดข้อมูลในรูปแบบ nested constant {{ {row1 values}, {row2 values}, … }} ต้องเป็นค่าคงที่เท่านั้น ห้ามใช้ expressions หรือการอ้างอิงคอลัมน์ |
DATATABLE เป็นเครื่องมือที่ดีสำหรับสร้างตารางง่ายๆ ภายในสูตร DAX โดยคุณระบุชื่อคอลัมน์พร้อมชนิดข้อมูล แล้วตามด้วยข้อมูลจริงในรูปแบบแถว (rows) สิ่งที่ดีคือ DATATABLE ยึดกับค่าคงที่เท่านั้น ไม่รองรับการอ้างอิงคอลัมน์หรือมีการคำนวณ ซึ่งถ้าต้องการเอา ตัวแปรหรือผลลัพธ์จากคอลัมน์อื่นเข้าไป ต้องใช้วิธีอื่น เช่น ROW() หรือตัวสร้างตาราง {} แทน
ที่เจ๋งคือ DATATABLE ช่วยให้คุณจัดการ mapping table ได้ดี เช่น ตารางแปลงรหัสสถานะ ตารางอัตรา หรือแม้แต่ข้อมูลตัวอย่างเพื่อทดสอบสูตร โดยไม่ต้องอ้างอิงตารางภายนอก เขียนได้เรียบร้อยในพื้นที่เดียว คำ syntax ก็ชัดเจน
ส่วนตัวผมมองว่า DATATABLE มีประโยชน์มากสำหรับโปรเจกต์เริ่มต้นหรือตารางที่เปลี่ยนแปลงน้อย แต่ถ้าข้อมูล hardcode ขึ้นมา จะต้องตันเมื่อต้องการปรับข้อมูลเอง เลยแนะนำว่า ถ้าข้อมูลเปลี่ยนบ่อยๆ ควรนำเข้าจากแหล่งข้อมูลจริงหรือสร้าง Power Query table แทน ตัวนี้ใช้สำหรับอ้างอิง referential data ที่มั่นคงที่สุด
เช่น mapping ของระดับ/กลุ่ม เพื่อใช้เป็นตัวช่วยในการจำแนกหรือทำตัวเลือก
เช่น ตาราง 2-10 แถว เพื่อทดสอบการคำนวณก่อนใช้กับข้อมูลจริง
สร้างตารางอ้างอิงสำหรับแปลงรหัสสถานะเป็นชื่ออธิบาย ใช้ LOOKUPVALUE เพื่อจับคู่กับข้อมูลหลัก
ตารางอ้างอิงสำหรับการคำนวณค่าเพิ่มเติม เช่น ภาษี ค่าบริการ สามารถ LOOKUP ตามประเภทและเอาอัตรามาคูณยอด
ตัวอย่างการใช้ VAR เพื่อจัดเก็บ DATATABLE ที่สร้างขึ้น จากนั้นใช้ LOOKUPVALUE หรือ FILTER เพื่อดึงข้อมูลตามเงื่อนไข
ใช้สำหรับทดสอบสูตรเกี่ยวกับวันที่ เช่น การ GROUP BY เดือน หรือตรวจสอบพฤติกรรมกับข้อมูลวันที่ที่เรารู้ผลลัพธ์ที่คาดหวัง
DATATABLE ต้องระบุชื่อคอลัมน์และชนิดข้อมูลอย่างชัดเจน และรองรับฟังก์ชันเช่น DATE(), BLANK() ส่วน Table Constructor {} สร้างตารางตรงจากโครงสร้างข้อมูลโดยไม่ต้องระบุชนิดข้อมูล แต่รองรับ expressions มากกว่า ผมแนะนำว่า DATATABLE ดีสำหรับตารางอ้างอิงที่ต้องชนิดข้อมูลชัดเจน
ไม่รองรับ DATATABLE ต้องเป็นค่าคงที่เท่านั้น ห้ามใช้ expressions, column references, หรือการอ้างอิงตาราง ถ้าต้องการข้อมูลแบบไดนามิก ต้องใช้ ROW(), UNION(), หรือ Table Constructor {} แทน
DATATABLE ใช้ได้ในทั้ง Calculated Table, Calculated Column (ต้องระบุในเซลล์เดียว), และ Measure โดยทั่วไป เขามักนำไปใช้ใน Calculated Table เพื่อสร้างตารางอ้างอิง
จะมี error เพราะระบบต้องการให้จำนวนค่าในแต่ละแถวตรงกับจำนวนคอลัมน์ที่ระบุ ต้องตรวจสอบให้แน่ใจว่า { {val1, val2, …}, … } มีค่าตามจำนวนคอลัมน์ที่ประกาศไว้
ไม่ แนะนำให้ใช้สำหรับตารางเล็กๆ เท่านั้น (ปกติ < 100 แถว) ถ้าข้อมูลมีขนาดใหญ่หรือเปลี่ยนแปลงบ่อย ควรนำเข้าจากแหล่งข้อมูลจริงหรือใช้ Power Query ปมนี้คือ hardcode ข้อมูลใน DAX จะทำให้ model ใหญ่ขึ้น และ maintain ยากเวลาข้อมูลต้องเปลี่ยน
ฟังก์ชันที่ผู้เขียนโยงไว้กับ DATATABLE จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
ADDCOLUMNS เป็นฟังก์ชัน table transformation ที่ใช้สำหรับเพิ่มคอลัมน์ใหม่ (Calculated Columns) เข้าไปในตารางที่มีอยู่เดิม โดยคำนวณค่าในแต่ละแถวผ่าน Row Context และส่งคืนตารางเดิมพร้อมคอลัมน์ใหม่ต่อท้าย
CROSSJOIN สร้างตารางใหม่โดยการรวมแถวทั้งหมดจากตารางที่ระบุ โดยสร้างทุก Combination ที่เป็นไปได้ ผลลัพธ์คือตารางที่มีจำนวนแถวเท่ากับผลคูณของจำนวนแถวของแต่ละตาราง
GENERATESERIES สร้างตารางคอลัมน์เดียวที่เป็นลำดับตัวเลขจาก StartValue ถึง EndValue ด้วย increment ที่กำหนดได้ เหมาะกับตารางช่วย parameter table หรือสร้างชุดตัวเลขสำหรับ what-if analysis
สร้างตารางใหม่โดยเลือกเฉพาะคอลัมน์ที่ต้องการจากตารางต้นฉบับและเพิ่มคอลัมน์ที่คำนวณได้ ต่างจาก ADDCOLUMNS ตรงที่ SELECTCOLUMNS เริ่มจากตารางว่างแล้วเพิ่มเฉพาะคอลัมน์ที่ระบุ ทำให้สามารถปรับโครงสร้างตารางและเลือกข้อมูลที่จำเป็นได้อย่างยืดหยุ่น
UNION รวมหลายตารางให้เป็นตารางเดียวด้วยการต่อแถว โดยเก็บแถวซ้ำไว้ทั้งหมด เหมาะกับการรวมชุดข้อมูลที่มีโครงสร้างคอลัมน์สอดคล้องกัน
FILTER ใช้กรองแถวในตารางตามเงื่อนไขที่ซับซ้อน โดยวนลูปทุกแถวและประเมินเงื่อนไข เหมาะกับการกรองด้วย Measure หรือ Expression ซึ่ง Boolean Expression ทำไม่ได้ แต่ต้องระวังเรื่อง Performance เพราะเป็น Iterator Function ที่ช้ากว่า Boolean Expression ดังนั้นควรใช้เฉพาะเมื่อจำเป็น และอย่าใช้ FILTER กับ RELATED เพื่อกรองข้ามตาราง ให้กรองที่ Dimension Table โดยตรงแทน
LOOKUPVALUE เป็นฟังก์ชันค้นหาที่ยืดหยุ่น โดยจะดึงค่าจากคอลัมน์หนึ่งโดยการค้นหาตามเงื่อนไขหลายตัวในเวลาเดียวกัน
DATE สร้างค่าวันที่จากตัวเลข Year/Month/Day แล้วคืนค่าเป็นชนิด datetime เหมาะกับการประกอบวันที่จากคอลัมน์แยกส่วนหรือสร้างวันที่อ้างอิง เช่น วันแรกของเดือน วันตัดยอด
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่