Thep Excel

DATATABLEสร้างตารางจากข้อมูลที่ระบุเอง (Inline)

DATATABLE สร้างตารางแบบ hardcode ด้วยข้อมูลคงที่ โดยระบุชื่อคอลัมน์ ชนิดข้อมูล และค่าของแต่ละแถว เหมาะสำหรับตารางอ้างอิงเล็กๆ เช่น lookup table หรือข้อมูลตัวอย่าง

fx
=DATATABLE(<Name>, <DataType>, [<Name>, <DataType>, …], <Data>)

ความนิยม5/10
ความยาก4/10
ประโยชน์5/10

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
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 หรือการอ้างอิงคอลัมน์

Additional Notes

DATATABLE เป็นเครื่องมือที่ดีสำหรับสร้างตารางง่ายๆ ภายในสูตร DAX โดยคุณระบุชื่อคอลัมน์พร้อมชนิดข้อมูล แล้วตามด้วยข้อมูลจริงในรูปแบบแถว (rows) สิ่งที่ดีคือ DATATABLE ยึดกับค่าคงที่เท่านั้น ไม่รองรับการอ้างอิงคอลัมน์หรือมีการคำนวณ ซึ่งถ้าต้องการเอา ตัวแปรหรือผลลัพธ์จากคอลัมน์อื่นเข้าไป ต้องใช้วิธีอื่น เช่น ROW() หรือตัวสร้างตาราง {} แทน

ที่เจ๋งคือ DATATABLE ช่วยให้คุณจัดการ mapping table ได้ดี เช่น ตารางแปลงรหัสสถานะ ตารางอัตรา หรือแม้แต่ข้อมูลตัวอย่างเพื่อทดสอบสูตร โดยไม่ต้องอ้างอิงตารางภายนอก เขียนได้เรียบร้อยในพื้นที่เดียว คำ syntax ก็ชัดเจน

ส่วนตัวผมมองว่า DATATABLE มีประโยชน์มากสำหรับโปรเจกต์เริ่มต้นหรือตารางที่เปลี่ยนแปลงน้อย แต่ถ้าข้อมูล hardcode ขึ้นมา จะต้องตันเมื่อต้องการปรับข้อมูลเอง เลยแนะนำว่า ถ้าข้อมูลเปลี่ยนบ่อยๆ ควรนำเข้าจากแหล่งข้อมูลจริงหรือสร้าง Power Query table แทน ตัวนี้ใช้สำหรับอ้างอิง referential data ที่มั่นคงที่สุด

How it works

สร้างตาราง mapping ขนาดเล็ก

เช่น mapping ของระดับ/กลุ่ม เพื่อใช้เป็นตัวช่วยในการจำแนกหรือทำตัวเลือก

สร้างข้อมูลตัวอย่างเพื่อทดสอบสูตร

เช่น ตาราง 2-10 แถว เพื่อทดสอบการคำนวณก่อนใช้กับข้อมูลจริง

Examples

ตัวอย่างที่ 1: สร้างตารางสถานะ (Status Lookup)Status Table = DATATABLE( "StatusID", INTEGER, "StatusName", STRING, { { 1, "New" }, { 2, "In Progress" }, { 3, "Completed" }, { 4, "Cancelled" } } )

สร้างตารางอ้างอิงสำหรับแปลงรหัสสถานะเป็นชื่ออธิบาย ใช้ LOOKUPVALUE เพื่อจับคู่กับข้อมูลหลัก

fx
Status Table =
DATATABLE(
"StatusID", INTEGER,
"StatusName", STRING,
{
{ 1, "New" },
{ 2, "In Progress" },
{ 3, "Completed" },
{ 4, "Cancelled" }
}
)

ผลลัพธ์ตาราง 4 แถว 2 คอลัมน์: StatusID (เลข) กับ StatusName (ข้อความ)
ตัวอย่างที่ 2: ตารางอัตราภาษีหลายประเภทTax Rates = DATATABLE( "TaxType", STRING, "Rate", DOUBLE, { { "VAT Standard", 0.07 }, { "VAT Reduced", 0.03 }, { "Service Fee", 0.10 }, { "Import Duty", 0.20 }…

ตารางอ้างอิงสำหรับการคำนวณค่าเพิ่มเติม เช่น ภาษี ค่าบริการ สามารถ LOOKUP ตามประเภทและเอาอัตรามาคูณยอด

fx
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 คอลัมน์ โดยอัตราเป็นทศนิยม
ตัวอย่างที่ 3: ตารางข้อมูลหลายคอลัมน์ (Product Category Mapping)VAR CategoryTable = DATATABLE( "CategoryCode", STRING, "CategoryName", STRING, "DiscountPct", DOUBLE, { { "ELEC", "Electronics", 0.05 }, { "FOOD", "Food & Bever…

ตัวอย่างการใช้ VAR เพื่อจัดเก็บ DATATABLE ที่สร้างขึ้น จากนั้นใช้ LOOKUPVALUE หรือ FILTER เพื่อดึงข้อมูลตามเงื่อนไข

fx
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 คอลัมน์: รหัส ชื่อ และส่วนลดสำหรับแต่ละประเภท
ตัวอย่างที่ 4: ตารางวันที่และเวลาตัวอย่างSample Dates = DATATABLE( "Date", DATETIME, "Month", STRING, { { DATE(2025, 1, 1), "January" }, { DATE(2025, 2, 1), "February" }, { DATE(2025, 3, 1), "March" },…

ใช้สำหรับทดสอบสูตรเกี่ยวกับวันที่ เช่น การ GROUP BY เดือน หรือตรวจสอบพฤติกรรมกับข้อมูลวันที่ที่เรารู้ผลลัพธ์ที่คาดหวัง

fx
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 คอลัมน์ พร้อมวันที่และชื่อเดือน

FAQs

DATATABLE ต่างจาก Table Constructor {} อย่างไร?+

DATATABLE ต้องระบุชื่อคอลัมน์และชนิดข้อมูลอย่างชัดเจน และรองรับฟังก์ชันเช่น DATE(), BLANK() ส่วน Table Constructor {} สร้างตารางตรงจากโครงสร้างข้อมูลโดยไม่ต้องระบุชนิดข้อมูล แต่รองรับ expressions มากกว่า ผมแนะนำว่า DATATABLE ดีสำหรับตารางอ้างอิงที่ต้องชนิดข้อมูลชัดเจน

DATATABLE รองรับการอ้างอิงคอลัมน์อื่นไหม?+

ไม่รองรับ DATATABLE ต้องเป็นค่าคงที่เท่านั้น ห้ามใช้ expressions, column references, หรือการอ้างอิงตาราง ถ้าต้องการข้อมูลแบบไดนามิก ต้องใช้ ROW(), UNION(), หรือ Table Constructor {} แทน

DATATABLE ใช้ได้ในตัวไหนบ้าง (Calculated Column, Measure, Table)?+

DATATABLE ใช้ได้ในทั้ง Calculated Table, Calculated Column (ต้องระบุในเซลล์เดียว), และ Measure โดยทั่วไป เขามักนำไปใช้ใน Calculated Table เพื่อสร้างตารางอ้างอิง

ถ้าข้อมูลใน Data ไม่ตรงกับจำนวนคอลัมน์ จะเกิดอะไร?+

จะมี error เพราะระบบต้องการให้จำนวนค่าในแต่ละแถวตรงกับจำนวนคอลัมน์ที่ระบุ ต้องตรวจสอบให้แน่ใจว่า { {val1, val2, …}, … } มีค่าตามจำนวนคอลัมน์ที่ประกาศไว้

DATATABLE ใช้เพื่อสร้างตารางขนาดใหญ่ได้ไหม?+

ไม่ แนะนำให้ใช้สำหรับตารางเล็กๆ เท่านั้น (ปกติ < 100 แถว) ถ้าข้อมูลมีขนาดใหญ่หรือเปลี่ยนแปลงบ่อย ควรนำเข้าจากแหล่งข้อมูลจริงหรือใช้ Power Query ปมนี้คือ hardcode ข้อมูลใน DAX จะทำให้ model ใหญ่ขึ้น และ maintain ยากเวลาข้อมูลต้องเปลี่ยน

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ DATATABLE จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้DATATABLETable manipulation
Table manipulation (5)
ADDCOLUMNS

ADDCOLUMNS เป็นฟังก์ชัน table transformation ที่ใช้สำหรับเพิ่มคอลัมน์ใหม่ (Calculated Columns) เข้าไปในตารางที่มีอยู่เดิม โดยคำนวณค่าในแต่ละแถวผ่าน Row Context และส่งคืนตารางเดิมพร้อมคอลัมน์ใหม่ต่อท้าย

CROSSJOIN

CROSSJOIN สร้างตารางใหม่โดยการรวมแถวทั้งหมดจากตารางที่ระบุ โดยสร้างทุก Combination ที่เป็นไปได้ ผลลัพธ์คือตารางที่มีจำนวนแถวเท่ากับผลคูณของจำนวนแถวของแต่ละตาราง

GENERATESERIES

GENERATESERIES สร้างตารางคอลัมน์เดียวที่เป็นลำดับตัวเลขจาก StartValue ถึง EndValue ด้วย increment ที่กำหนดได้ เหมาะกับตารางช่วย parameter table หรือสร้างชุดตัวเลขสำหรับ what-if analysis

SELECTCOLUMNS

สร้างตารางใหม่โดยเลือกเฉพาะคอลัมน์ที่ต้องการจากตารางต้นฉบับและเพิ่มคอลัมน์ที่คำนวณได้ ต่างจาก ADDCOLUMNS ตรงที่ SELECTCOLUMNS เริ่มจากตารางว่างแล้วเพิ่มเฉพาะคอลัมน์ที่ระบุ ทำให้สามารถปรับโครงสร้างตารางและเลือกข้อมูลที่จำเป็นได้อย่างยืดหยุ่น

UNION

UNION รวมหลายตารางให้เป็นตารางเดียวด้วยการต่อแถว โดยเก็บแถวซ้ำไว้ทั้งหมด เหมาะกับการรวมชุดข้อมูลที่มีโครงสร้างคอลัมน์สอดคล้องกัน

Filter (2)
FILTER

FILTER ใช้กรองแถวในตารางตามเงื่อนไขที่ซับซ้อน โดยวนลูปทุกแถวและประเมินเงื่อนไข เหมาะกับการกรองด้วย Measure หรือ Expression ซึ่ง Boolean Expression ทำไม่ได้ แต่ต้องระวังเรื่อง Performance เพราะเป็น Iterator Function ที่ช้ากว่า Boolean Expression ดังนั้นควรใช้เฉพาะเมื่อจำเป็น และอย่าใช้ FILTER กับ RELATED เพื่อกรองข้ามตาราง ให้กรองที่ Dimension Table โดยตรงแทน

LOOKUPVALUE

LOOKUPVALUE เป็นฟังก์ชันค้นหาที่ยืดหยุ่น โดยจะดึงค่าจากคอลัมน์หนึ่งโดยการค้นหาตามเงื่อนไขหลายตัวในเวลาเดียวกัน

Date and Time (1)
DATE

DATE สร้างค่าวันที่จากตัวเลข Year/Month/Day แล้วคืนค่าเป็นชนิด datetime เหมาะกับการประกอบวันที่จากคอลัมน์แยกส่วนหรือสร้างวันที่อ้างอิง เช่น วันแรกของเดือน วันตัดยอด

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่