DATATABLE สร้างตารางแบบ hardcode ด้วยข้อมูลคงที่ โดยระบุชื่อคอลัมน์ ชนิดข้อมูล และค่าของแต่ละแถว เหมาะสำหรับตารางอ้างอิงเล็กๆ เช่น lookup table หรือข้อมูลตัวอย่าง
=DATATABLE(<Name>, <DataType>, [<Name>, <DataType>, ...], <Data>)
=DATATABLE(<Name>, <DataType>, [<Name>, <DataType>, ...], <Data>)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| Name | text | Yes | ชื่อคอลัมน์ (ระบุเป็นข้อความ) สามารถระบุได้หลายคอลัมน์ โดยสลับกับ DataType | |
| DataType | datatype | Yes | ชนิดข้อมูลของคอลัมน์ (BOOLEAN/LOGICAL, CURRENCY/DECIMAL, DATETIME, DOUBLE, INTEGER/INT64, STRING/TEXT) | |
| Data | constant table | Yes | ชุดข้อมูลในรูปแบบ nested constant {{ {row1 values}, {row2 values}, … }} ต้องเป็นค่าคงที่เท่านั้น ห้ามใช้ expressions หรือการอ้างอิงคอลัมน์ |
เช่น mapping ของระดับ/กลุ่ม เพื่อใช้เป็นตัวช่วยในการจำแนกหรือทำตัวเลือก
เช่น ตาราง 2-10 แถว เพื่อทดสอบการคำนวณก่อนใช้กับข้อมูลจริง
Status Table = DATATABLE( "StatusID", INTEGER, "StatusName", STRING, { { 1, "New" }, { 2, "In Progress" }, { 3, "Completed" }, { 4, "Cancelled" } } )Status Table =
DATATABLE(
"StatusID", INTEGER,
"StatusName", STRING,
{
{ 1, "New" },
{ 2, "In Progress" },
{ 3, "Completed" },
{ 4, "Cancelled" }
}
)
ตาราง 4 แถว 2 คอลัมน์: StatusID (เลข) กับ StatusName (ข้อความ)
Tax Rates = DATATABLE( "TaxType", STRING, "Rate", DOUBLE, { { "VAT Standard", 0.07 }, { "VAT Reduced", 0.03 }, { "Service Fee", 0.10 }, { "Import Duty", 0.20 }…Tax Rates =
DATATABLE(
"TaxType", STRING,
"Rate", DOUBLE,
{
{ "VAT Standard", 0.07 },
{ "VAT Reduced", 0.03 },
{ "Service Fee", 0.10 },
{ "Import Duty", 0.20 }
}
)
ตาราง 4 แถว 2 คอลัมน์ โดยอัตราเป็นทศนิยม
VAR CategoryTable = DATATABLE( "CategoryCode", STRING, "CategoryName", STRING, "DiscountPct", DOUBLE, { { "ELEC", "Electronics", 0.05 }, { "FOOD", "Food & Bever…VAR CategoryTable =
DATATABLE(
"CategoryCode", STRING,
"CategoryName", STRING,
"DiscountPct", DOUBLE,
{
{ "ELEC", "Electronics", 0.05 },
{ "FOOD", "Food & Beverage", 0.02 },
{ "FURN", "Furniture", 0.10 },
{ "BOOK", "Books", 0.00 }
}
)
RETURN CategoryTable
ตาราง 4 แถว 3 คอลัมน์: รหัส ชื่อ และส่วนลดสำหรับแต่ละประเภท
Sample Dates = DATATABLE( "Date", DATETIME, "Month", STRING, { { DATE(2025, 1, 1), "January" }, { DATE(2025, 2, 1), "February" }, { DATE(2025, 3, 1), "March" },…Sample Dates =
DATATABLE(
"Date", DATETIME,
"Month", STRING,
{
{ DATE(2025, 1, 1), "January" },
{ DATE(2025, 2, 1), "February" },
{ DATE(2025, 3, 1), "March" },
{ DATE(2025, 12, 1), "December" }
}
)
ตาราง 4 แถว 2 คอลัมน์ พร้อมวันที่และชื่อเดือน
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 เป็นเครื่องมือที่ดีสำหรับสร้างตารางง่ายๆ ภายในสูตร DAX โดยคุณระบุชื่อคอลัมน์พร้อมชนิดข้อมูล แล้วตามด้วยข้อมูลจริงในรูปแบบแถว (rows) สิ่งที่ดีคือ DATATABLE ยึดกับค่าคงที่เท่านั้น ไม่รองรับการอ้างอิงคอลัมน์หรือมีการคำนวณ ซึ่งถ้าต้องการเอา ตัวแปรหรือผลลัพธ์จากคอลัมน์อื่นเข้าไป ต้องใช้วิธีอื่น เช่น ROW() หรือตัวสร้างตาราง {} แทน
ที่เจ๋งคือ DATATABLE ช่วยให้คุณจัดการ mapping table ได้ดี เช่น ตารางแปลงรหัสสถานะ ตารางอัตรา หรือแม้แต่ข้อมูลตัวอย่างเพื่อทดสอบสูตร โดยไม่ต้องอ้างอิงตารางภายนอก เขียนได้เรียบร้อยในพื้นที่เดียว คำ syntax ก็ชัดเจน
ส่วนตัวผมมองว่า DATATABLE มีประโยชน์มากสำหรับโปรเจกต์เริ่มต้นหรือตารางที่เปลี่ยนแปลงน้อย แต่ถ้าข้อมูล hardcode ขึ้นมา จะต้องตันเมื่อต้องการปรับข้อมูลเอง เลยแนะนำว่า ถ้าข้อมูลเปลี่ยนบ่อยๆ ควรนำเข้าจากแหล่งข้อมูลจริงหรือสร้าง Power Query table แทน ตัวนี้ใช้สำหรับอ้างอิง referential data ที่มั่นคงที่สุด