ในตัวแบบข้อมูล แต่ละคอลัมน์มีชนิดข้อมูลที่สัมพันธ์กันที่ระบุชนิดของข้อมูลที่คอลัมน์สามารถเก็บได้ ได้แก่ จํานวนเต็ม เลขทศนิยม ข้อความ ข้อมูลทางการเงิน วันที่และเวลา และอื่นๆ ชนิดข้อมูลยังกําหนดชนิดของการดําเนินการที่คุณสามารถทําได้บนคอลัมน์ และปริมาณหน่วยความจําที่ใช้ในการจัดเก็บค่าในคอลัมน์
ถ้าคุณกําลังใช้ Add-in Power Pivot คุณสามารถเปลี่ยนชนิดข้อมูลของคอลัมน์ได้ คุณอาจต้องทําเช่นนี้ถ้าคอลัมน์วันที่ถูกนําเข้าเป็นสตริง แต่คุณต้องการให้เป็นคอลัมน์อื่น สําหรับข้อมูลเพิ่มเติม ให้ดูที่ ตั้งค่าชนิดข้อมูลของคอลัมน์ ใน Power Pivot
ในบทความนี้
สรุปชนิดข้อมูล
ตารางต่อไปนี้แสดงชนิดข้อมูลที่ได้รับการสนับสนุนในตัวแบบข้อมูล เมื่อคุณนําเข้าข้อมูลหรือใช้ค่าในสูตร แม้ว่าแหล่งข้อมูลดั้งเดิมจะมีชนิดข้อมูลที่แตกต่างกัน ข้อมูลนั้นจะถูกแปลงเป็นชนิดข้อมูลชนิดใดชนิดหนึ่งเหล่านี้ ค่าที่มาจากสูตรก็จะใช้ชนิดข้อมูลเหล่านี้ด้วย
| ชนิดข้อมูลใน Excel | ชนิดข้อมูลใน DAX | คำอธิบาย |
|---|---|---|
| จํานวนเต็ม | ค่าจํานวนเต็ม 64 บิต (แปดไบต์) 1, 2 | ตัวเลขที่ไม่มีตําแหน่งทศนิยม จํานวนเต็มอาจเป็นจํานวนบวกหรือจํานวนลบ แต่ต้องเป็นจํานวนทั้งหมดระหว่าง -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 สามารถเป็นสตริง ตัวเลข หรือวันที่ที่แสดงในรูปแบบข้อความ ความยาวสตริงสูงสุดคือ 268,435,456 อักขระ Unicode (256 ล้านอักขระ) หรือ 536,870,912 ไบต์ |
| วันที่ | วันที่/เวลา | วันที่และเวลาในการแสดงวันที่-เวลาที่ยอมรับ วันที่ที่ถูกต้องคือวันที่ทั้งหมดหลังจากวันที่ 1 มกราคม พ.ศ. 2443 (หรือ ค.ศ. 1900) |
| สกุลเงิน | สกุลเงิน | ชนิดข้อมูลสกุลเงินอนุญาตค่าระหว่าง -922,337,203,685,477.5808 ถึง 922,337,203,685,477.5807 ด้วยทศนิยมสี่หลักที่มีความแม่นยําคงที่ |
| N/A | ว่าง | ว่างคือชนิดข้อมูลใน DAX ที่แสดงและแทนที่ค่า Null ของ SQL คุณสามารถสร้างช่องว่างโดยใช้ฟังก์ชัน 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 จะทําการแปลงโดยนัยเมื่อใดก็ตามที่เป็นไปได้ตามความจําเป็นของการดําเนินการที่ระบุ
ตารางการแปลงข้อมูลโดยนัย
ชนิดของการแปลงที่ทําจะถูกกําหนดโดยตัวดําเนินการ ซึ่งจะกําหนดค่าที่ต้องการก่อนที่จะดําเนินการที่ร้องขอ ตารางเหล่านี้แสดงรายการตัวดําเนินการ และระบุการแปลงที่ทํากับชนิดข้อมูลแต่ละชนิดในคอลัมน์เมื่อจับคู่กับชนิดข้อมูลในแถวที่ตัดกัน
หมายเหตุ
ชนิดข้อมูล Text ไม่รวมอยู่ในตารางเหล่านี้ เมื่อตัวเลขถูกแสดงในรูปแบบข้อความ ในบางกรณี 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","นิพจน์เป็นจริง", "นิพจน์เป็นเท็จ") ส่งกลับ "นิพจน์เป็นจริง"
=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/ว่าง | NaN | ข้อผิดพลาด |
| ว่าง/ว่าง | ว่างเปล่า | ข้อผิดพลาด |
| FALSE หรือว่างเปล่า | FALSE | FALSE |
| FALSE และว่างเปล่า | FALSE | FALSE |
| จริง หรือว่างเปล่า | TRUE | TRUE |
| จริงและว่างเปล่า | FALSE | TRUE |
| ว่างหรือว่างเปล่า | ว่างเปล่า | ข้อผิดพลาด |
| ว่างเปล่า | ว่างเปล่า | ข้อผิดพลาด |
สําหรับรายละเอียดเกี่ยวกับวิธีที่ฟังก์ชันหรือตัวดําเนินการบางตัวจัดการช่องว่าง ให้ดูหัวข้อแต่ละรายการสําหรับแต่ละฟังก์ชันของ DAX ในส่วน การอ้างอิงฟังก์ชัน DAX