ในตัวแบบข้อมูล แต่ละคอลัมน์จะมีชนิดข้อมูลที่สัมพันธ์กันที่ระบุชนิดของข้อมูลที่คอลัมน์สามารถมีได้ ได้แก่ จํานวนเต็ม ตัวเลขทศนิยม ข้อความ ข้อมูลทางการเงิน วันที่และเวลา และอื่นๆ ชนิดข้อมูลยังกําหนดชนิดของการดําเนินการที่คุณสามารถทําได้ในคอลัมน์ และจํานวนหน่วยความจําที่ใช้เพื่อจัดเก็บค่าในคอลัมน์
ถ้าคุณกําลังใช้ Add-in Power Pivot คุณสามารถเปลี่ยนชนิดข้อมูลของคอลัมน์ได้ คุณอาจจําเป็นต้องทําเช่นนี้ถ้าคอลัมน์วันที่ถูกนําเข้าเป็นสตริง แต่คุณต้องการให้เป็นอย่างอื่น สําหรับข้อมูลเพิ่มเติม ให้ดู ตั้งค่าชนิดข้อมูลของคอลัมน์ ใน Power Pivot
ในบทความนี้
สรุปชนิดข้อมูล
ตารางต่อไปนี้แสดงรายการชนิดข้อมูลที่ได้รับการสนับสนุนในตัวแบบข้อมูล เมื่อคุณนําเข้าข้อมูลหรือใช้ค่าในสูตร แม้ว่าแหล่งข้อมูลต้นฉบับจะมีชนิดข้อมูลที่แตกต่างกัน ข้อมูลจะถูกแปลงเป็นชนิดข้อมูลใดชนิดข้อมูลหนึ่งต่อไปนี้ ค่าที่เป็นผลลัพธ์จากสูตรจะใช้ชนิดข้อมูลเหล่านี้ด้วย
| ชนิดข้อมูลใน Excel | ชนิดข้อมูลใน DAX | คำอธิบาย |
|---|---|---|
| จํานวนเต็ม | ค่าจํานวนเต็ม 1, 2 บิต (แปดไบต์) 64 บิต | ตัวเลขที่ไม่มีตําแหน่งทศนิยม จํานวนเต็มอาจเป็นจํานวนบวกหรือจํานวนลบ แต่ต้องเป็นจํานวนเต็มระหว่าง -9,223,372,036,854,775,808 (-2^63) และ 9,223,372,036,854,775,807 (2^63-1) |
| ตัวเลขทศนิยม | จํานวนจริง 64 บิต (แปดไบต์) 1, 2 | จํานวนจริงคือตัวเลขที่สามารถมีตําแหน่งทศนิยมได้ ตัวเลขจริงครอบคลุมค่าต่างๆ มากมาย: ค่าลบจาก -1.79E +308 ถึง -2.23E -308 ศูนย์ ค่าบวกจาก 2.23E -308 ถึง 1.79E + 308 อย่างไรก็ตาม จํานวนเลขนัยสําคัญจะจํากัดไว้ที่ 15 ตําแหน่ง |
| TRUE/FALSE | บูลีน | ค่า True หรือ False อย่างใดอย่างหนึ่ง |
| ข้อความ | สตริง | สตริงข้อมูลอักขระ Unicode สามารถเป็นสตริง ตัวเลข หรือวันที่ที่แสดงในรูปแบบข้อความ ความยาวสตริงสูงสุดคืออักขระ Unicode 268,435,456 อักขระ (256 ล้านอักขระ) หรือ 536,870,912 ไบต์ |
| วันที่ | วันที่/เวลา | วันที่และเวลาในการแสดงวันที่และเวลาที่ยอมรับ วันที่ที่ถูกต้องคือวันที่ทั้งหมดหลังจากวันที่ 1 มกราคม 1900 |
| สกุลเงิน | สกุลเงิน | ชนิดข้อมูลสกุลเงินอนุญาตให้มีค่าระหว่าง -922,337,203,685,477.5808 ถึง 922,337,203,685,477.5807 ที่มีทศนิยมสี่หลักที่มีความแม่นยําคงที่ |
| N/A | ว่าง | ค่าว่างคือชนิดข้อมูลใน DAX ที่แสดงแทนและแทนที่ SQL Nulls คุณสามารถสร้างช่องว่างโดยใช้ฟังก์ชัน BLANK และทดสอบช่องว่างโดยใช้ฟังก์ชันตรรกะ ISBLANK |
1 สูตร DAX ไม่สนับสนุนชนิดข้อมูลที่เล็กกว่าที่แสดงในตาราง
2 ถ้าคุณพยายามนําเข้าข้อมูลที่มีค่าตัวเลขขนาดใหญ่มาก การนําเข้าอาจล้มเหลวโดยมีข้อผิดพลาดต่อไปนี้:
ข้อผิดพลาดฐานข้อมูลในหน่วยความจํา: คอลัมน์ '<ชื่อ>คอลัมน์' ของตาราง '<ชื่อ>ตาราง' มีค่า '1.7976931348623157e+308' ซึ่งไม่ได้รับการสนับสนุน การดําเนินการถูกยกเลิกแล้ว
ข้อผิดพลาดนี้เกิดขึ้นเนื่องจาก Power Pivot ใช้ค่านั้นเพื่อแทนค่า Null ค่าในรายการต่อไปนี้เป็นคําเหมือนสําหรับค่า Null:
| ค่า |
|---|
| 9223372036854775807 |
| -9223372036854775808 |
| 1.7976931348623158e+308 |
| 2.2250738585072014e-308 |
เอาค่าออกจากข้อมูลของคุณ แล้วลองนําเข้าอีกครั้ง
ชนิดข้อมูลตาราง
DAX ใช้ชนิดข้อมูลตารางในหลายฟังก์ชัน เช่น การรวมและการคํานวณตัวแสดงเวลา บางฟังก์ชันจําเป็นต้องมีการอ้างอิงไปยังตาราง ฟังก์ชันอื่นๆ จะส่งกลับตารางที่สามารถใช้เป็นข้อมูลป้อนเข้าไปยังฟังก์ชันอื่นได้ ในบางฟังก์ชันที่ต้องใช้ตารางเป็นข้อมูลป้อนเข้า คุณสามารถระบุนิพจน์ที่ประเมินเป็นตาราง ได้ สําหรับฟังก์ชันบางอย่าง จําเป็นต้องมีการอ้างอิงถึงตารางพื้นฐาน สําหรับข้อมูลเกี่ยวกับความต้องการของฟังก์ชันเฉพาะ ให้ดูที่ การอ้างอิงฟังก์ชัน DAX
การแปลงชนิดข้อมูลโดยนัยและชัดแจ้งในสูตร DAX
แต่ละฟังก์ชัน DAX มีข้อกําหนดเฉพาะเกี่ยวกับชนิดของข้อมูลที่ใช้เป็นอินพุตและผลลัพธ์ ตัวอย่างเช่น ฟังก์ชันบางฟังก์ชันต้องการจํานวนเต็มสําหรับบางอาร์กิวเมนต์และวันที่สําหรับฟังก์ชันอื่นๆ ฟังก์ชันอื่นๆ ต้องใช้ข้อความหรือตาราง
ถ้าข้อมูลในคอลัมน์ที่คุณระบุเป็นอาร์กิวเมนต์เข้ากันไม่ได้กับชนิดข้อมูลที่ฟังก์ชันต้องการ DAX ในหลายกรณีจะส่งกลับข้อผิดพลาด อย่างไรก็ตาม ทุกที่ที่เป็นไปได้ DAX จะพยายามแปลงข้อมูลเป็นชนิดข้อมูลที่จําเป็นโดยนัย ตัวอย่างเช่น
- คุณสามารถพิมพ์วันที่เป็นสตริง และ DAX จะแยกวิเคราะห์สตริงและพยายามแคสต์เป็นรูปแบบวันที่และเวลาของ Windows รูปแบบใดรูปแบบหนึ่ง
- คุณสามารถเพิ่ม TRUE + 1 และได้ผลลัพธ์เป็น 2 เนื่องจาก TRUE จะถูกแปลงโดยนัยเป็นตัวเลข 1 และจะดําเนินการ 1+1
- ถ้าคุณเพิ่มค่าในสองคอลัมน์ และค่าหนึ่งค่าถูกแสดงเป็นข้อความ ("12") และอีกค่าหนึ่งเป็นตัวเลข (12) DAX จะแปลงสตริงเป็นตัวเลขโดยนัย แล้วทําการบวกสําหรับผลลัพธ์ที่เป็นตัวเลข นิพจน์ต่อไปนี้ส่งกลับค่า 44: = "22" + 22
- ถ้าคุณพยายามเรียงตัวเลขสองตัวเข้าด้วยกัน Excel จะแสดงเป็นสตริง แล้วเรียงต่อกัน นิพจน์ต่อไปนี้ส่งกลับ "1234": = 12 & 34
ตารางต่อไปนี้สรุปการแปลงชนิดข้อมูลโดยนัยที่ดําเนินการในสูตร Excel จะแปลงโดยนัยทุกครั้งที่เป็นไปได้ ตามที่กําหนดโดยการดําเนินการที่ระบุ
ตารางการแปลงข้อมูลโดยนัย
ชนิดของการแปลงที่ดําเนินการจะถูกกําหนดโดยตัวดําเนินการ ซึ่งแคสต์ค่าที่ต้องใช้ก่อนที่จะดําเนินการที่ร้องขอ ตารางเหล่านี้แสดงรายการตัวดําเนินการ และระบุการแปลงที่จะดําเนินการกับชนิดข้อมูลแต่ละชนิดในคอลัมน์เมื่อมีการจับคู่กับชนิดข้อมูลในแถวที่ตัดกัน
หมายเหตุ
ชนิดข้อมูลข้อความจะไม่รวมอยู่ในตารางเหล่านี้ เมื่อตัวเลขถูกแสดงเป็นรูปแบบข้อความ ในบางกรณี Power Pivot จะพยายามกําหนดชนิดตัวเลขและแสดงเป็นตัวเลข
การบวก (+)
| ตัวดําเนินการ (+) | INTEGER | CURRENCY | REAL | วันที่/เวลา |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | วันที่/เวลา |
| CURRENCY | CURRENCY | CURRENCY | REAL | วันที่/เวลา |
| REAL | REAL | REAL | REAL | วันที่/เวลา |
| วันที่/เวลา | วันที่/เวลา | วันที่/เวลา | วันที่/เวลา | วันที่/เวลา |
ตัวอย่างเช่น ถ้าจํานวนจริงถูกใช้ในการดําเนินการบวกร่วมกับข้อมูลสกุลเงิน ค่าทั้งสองจะถูกแปลงเป็น REAL และผลลัพธ์จะถูกส่งกลับเป็น REAL
การลบ (-)
ในตารางต่อไปนี้ ส่วนหัวของแถวจะเป็นเครื่องหมายลบ (ด้านซ้าย) และส่วนหัวของคอลัมน์เป็นการลบ (ด้านขวา)
| ตัวดําเนินการ (-) | INTEGER | CURRENCY | REAL | วันที่/เวลา |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | CURRENCY | REAL | REAL |
| REAL | REAL | REAL | REAL | REAL |
| วันที่/เวลา | วันที่/เวลา | วันที่/เวลา | วันที่/เวลา | วันที่/เวลา |
ตัวอย่างเช่น ถ้าวันที่ถูกใช้ในการดําเนินการลบกับชนิดข้อมูลอื่น ค่าทั้งสองจะถูกแปลงเป็นวันที่ และค่าที่ส่งกลับจะเป็นวันที่ด้วย
หมายเหตุ
ตัวแบบข้อมูลยังสนับสนุนตัวดําเนินการ Unary ( (ค่าลบ) ด้วย แต่ตัวดําเนินการนี้จะไม่เปลี่ยนชนิดข้อมูลของตัวถูกดําเนินการ
การคูณ (*)
| ตัวดําเนินการ (*) | INTEGER | CURRENCY | REAL | วันที่/เวลา |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | INTEGER |
| CURRENCY | CURRENCY | REAL | CURRENCY | CURRENCY |
| REAL | REAL | CURRENCY | REAL | REAL |
ตัวอย่างเช่น ถ้าจํานวนเต็มรวมกับจํานวนจริงในการดําเนินการคูณ ตัวเลขทั้งสองจะถูกแปลงเป็นจํานวนจริง และค่าที่ส่งกลับจะเป็น REAL ด้วย
ฝ่าย (/)
ในตารางต่อไปนี้ ส่วนหัวของแถวเป็นตัวเศษ และส่วนหัวของคอลัมน์เป็นตัวส่วน
| ตัวดําเนินการ (/) (แถว/คอลัมน์) |
INTEGER | CURRENCY | REAL | วันที่/เวลา |
|---|---|---|---|---|
| INTEGER | REAL | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | REAL | CURRENCY | REAL |
| REAL | REAL | REAL | REAL | REAL |
| วันที่/เวลา | REAL | REAL | REAL | REAL |
ตัวอย่างเช่น ถ้าจํานวนเต็มรวมกับค่าสกุลเงินในการดําเนินการหาร ค่าทั้งสองจะถูกแปลงเป็นจํานวนจริง และผลลัพธ์จะเป็นจํานวนจริงด้วย
ตัวดำเนินการเปรียบเทียบ
ในนิพจน์การเปรียบเทียบ ค่าบูลีนจะถือว่ามากกว่าค่าสตริงและค่าสตริงจะถือว่ามากกว่าค่าตัวเลขหรือค่าวันที่/เวลา ตัวเลขและค่าวันที่/เวลาจะถือว่ามีลําดับเดียวกัน ไม่มีการแปลงโดยนัยสําหรับค่าบูลีนหรือสตริง BLANK หรือค่าว่างจะถูกแปลงเป็น 0/""/false ขึ้นอยู่กับชนิดข้อมูลของค่าที่เปรียบเทียบอื่นๆ
นิพจน์ DAX ต่อไปนี้แสดงลักษณะการทํางานนี้:
=IF(FALSE()>"true","Expression is true", "Expression is false") ส่งกลับค่า "Expression is true"
=IF("12">12,"นิพจน์เป็นจริง", "นิพจน์เป็นเท็จ") ส่งกลับ "นิพจน์เป็นจริง"
=IF("12"=12,"นิพจน์เป็นจริง", "นิพจน์เป็นเท็จ") ส่งกลับ "นิพจน์เป็นเท็จ"
การแปลงจะดําเนินการโดยนัยสําหรับชนิดตัวเลขหรือวันที่/เวลาตามที่อธิบายไว้ในตารางต่อไปนี้:
| ตัวดําเนินการเปรียบเทียบ | INTEGER | CURRENCY | REAL | วันที่/เวลา |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | CURRENCY | REAL | REAL |
| REAL | REAL | REAL | REAL | REAL |
| วันที่/เวลา | REAL | REAL | REAL | วันที่/เวลา |
การจัดการค่าว่าง สตริงว่าง และค่าศูนย์
ใน DAX ค่า Null ค่าว่าง เซลล์ว่าง หรือค่าที่หายไปทั้งหมดจะแสดงด้วยชนิดค่าใหม่เดียวกัน ว่างเปล่า คุณยังสามารถสร้างช่องว่างโดยใช้ฟังก์ชัน BLANK หรือทดสอบช่องว่างโดยใช้ฟังก์ชัน ISBLANK
วิธีที่ช่องว่างถูกจัดการในการดําเนินการ เช่น การบวกหรือการเรียงต่อกัน จะขึ้นอยู่กับแต่ละฟังก์ชัน ตารางต่อไปนี้สรุปความแตกต่างระหว่างสูตร DAX และสูตร Microsoft Excel ในลักษณะการจัดการช่องว่าง
| Expression | Dax | Excel |
|---|---|---|
| ว่าง + ว่าง | ว่าง เปล่า | 0 (ศูนย์) |
| ว่าง +5 | 5 | 5 |
| ว่าง * 5 | ว่าง เปล่า | 0 (ศูนย์) |
| 5/ว่าง | อินฟินิตี้ | ข้อผิดพลาด |
| 0/ว่าง | น่าน | ข้อผิดพลาด |
| ว่าง/ว่าง | ว่าง เปล่า | ข้อผิดพลาด |
| FALSE หรือว่างเปล่า | FALSE | FALSE |
| เท็จและว่างเปล่า | FALSE | FALSE |
| TRUE หรือ BLANK | TRUE | TRUE |
| TRUE และว่างเปล่า | FALSE | TRUE |
| ว่างหรือว่างเปล่า | ว่าง เปล่า | ข้อผิดพลาด |
| ว่างและว่างเปล่า | ว่าง เปล่า | ข้อผิดพลาด |
สําหรับรายละเอียดเกี่ยวกับวิธีที่ฟังก์ชันหรือตัวดําเนินการใดฟังก์ชันหนึ่งจัดการกับช่องว่าง ให้ดูที่หัวข้อแต่ละหัวข้อสําหรับแต่ละฟังก์ชัน DAX ในส่วน การอ้างอิงฟังก์ชัน DAX