---
title: DATATABLE – สร้างตารางจากข้อมูลที่ระบุเอง (Inline)
url: https://www.thepexcel.com/functions/dax/table-manipulation/datatable-dax/
type: function-explainer
program: DAX
syntax: "DATATABLE(<Name>, <DataType>, [<Name>, <DataType>, ...], <Data>)"
date: 2025-12-13
updated: 2025-12-25
scores:
  popularity: 5
  difficulty: 4
  usefulness: 5
---

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

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

## คำอธิบาย

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

## Syntax

```excel
DATATABLE(&lt;Name&gt;, &lt;DataType&gt;, [&lt;Name&gt;, &lt;DataType&gt;, ...], &lt;Data&gt;)
```

**Variant**

```excel
DATATABLE(&lt;Name&gt;, &lt;DataType&gt;, &lt;Data&gt;)
```

สร้างตารางโดยมีคอลัมน์เดียว

**Variant**

```excel
DATATABLE(&lt;Name1&gt;, &lt;DataType1&gt;, &lt;Name2&gt;, &lt;DataType2&gt;, &lt;Data&gt;)
```

สร้างตารางหลายคอลัมน์ (ระบุคู่ชื่อคอลัมน์และชนิดข้อมูลเพิ่มตามต้องการ)

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| Name | Yes | text |  | ชื่อคอลัมน์ (ระบุเป็นข้อความ) สามารถระบุได้หลายคอลัมน์ โดยสลับกับ DataType |
| DataType | Yes | datatype |  | ชนิดข้อมูลของคอลัมน์ (BOOLEAN/LOGICAL, CURRENCY/DECIMAL, DATETIME, DOUBLE, INTEGER/INT64, STRING/TEXT) |
| Data | Yes | constant table |  | ชุดข้อมูลในรูปแบบ nested constant {{ {row1 values}, {row2 values}, ... }} ต้องเป็นค่าคงที่เท่านั้น ห้ามใช้ expressions หรือการอ้างอิงคอลัมน์ |

## เคสการใช้งาน

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

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

_เหมาะกับ:_ inline-mapping

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

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

_เหมาะกับ:_ test-data

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: สร้างตารางสถานะ (Status Lookup)

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

**ผลลัพธ์:** `ตาราง 4 แถว 2 คอลัมน์: StatusID (เลข) กับ StatusName (ข้อความ)`

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

### 2. ตัวอย่างที่ 2: ตารางอัตราภาษีหลายประเภท

```excel
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 คอลัมน์ โดยอัตราเป็นทศนิยม`

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

### 3. ตัวอย่างที่ 3: ตารางข้อมูลหลายคอลัมน์ (Product Category Mapping)

```excel
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 คอลัมน์: รหัส ชื่อ และส่วนลดสำหรับแต่ละประเภท`

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

### 4. ตัวอย่างที่ 4: ตารางวันที่และเวลาตัวอย่าง

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

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

## หมายเหตุเพิ่มเติม

- ผมแนะนำให้ใช้ DATATABLE สำหรับตารางอ้างอิงที่ข้อมูลมั่นคง เช่น รหัสสถานะ ประเภทสินค้า อัตราภาษี ที่ไม่เปลี่ยนแปลงบ่อย

- ส่วนตัวผมชอบใช้ VAR เพื่อจัดเก็บ DATATABLE ก่อน แล้วค่อยนำไปใช้ใน measures หรือ filters จะทำให้โค้ด readable และ reusable มากขึ้น

- เมื่อต้องการ LOOKUP ค่าจาก DATATABLE ใช้ LOOKUPVALUE เพื่อแม็พจากคอลัมน์หนึ่งไปยังอีกคอลัมน์ สะดวกกว่า INDEX/MATCH

- ระวังชนิดข้อมูล (data type) ต้องตรงกับค่าที่ใส่ลงไป ตัวอย่าง STRING ต้องใช้ quotes ("text"), INTEGER ใช้เลขไม่มี decimal

- ถ้าข้อมูลมีการเปลี่ยนแปลงเป็นประจำ ให้ย้ายไปทำเป็น Power Query table หรือตารางใน Excel/Database แล้ค่อยนำเข้าโมเดล ไม่ควร hardcode DAX

## คำถามที่พบบ่อย

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

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

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

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

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

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

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

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

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

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

## ฟังก์ชันที่เกี่ยวข้อง

- [DATE – สร้างวันที่จากปี เดือน วัน](https://www.thepexcel.com/functions/dax/date-and-time/date-dax/)
- generateseries
- union
- selectcolumns
- addcolumns

## แหล่งข้อมูลเพิ่มเติม

- [DAX.guide - DATATABLE](https://dax.guide/datatable/) _(guide)_
- [Microsoft Learn - DATATABLE Function (DAX)](https://learn.microsoft.com/en-us/dax/datatable-function-dax) _(official)_
- [SQLBI - Table Constructor in DAX](https://www.sqlbi.com/articles/table-constructor-in-dax/) _(guide)_

---

_Source: [https://www.thepexcel.com/functions/dax/table-manipulation/datatable-dax/](https://www.thepexcel.com/functions/dax/table-manipulation/datatable-dax/)_
