ในตัวแบบข้อมูล แต่ละคอลัมน์จะมีชนิดข้อมูลที่สัมพันธ์กันที่ระบุชนิดของข้อมูลที่คอลัมน์สามารถมีได้ ได้แก่ จํานวนเต็ม ตัวเลขทศนิยม ข้อความ ข้อมูลทางการเงิน วันที่และเวลา และอื่นๆ ชนิดข้อมูลยังกําหนดชนิดของการดําเนินการที่คุณสามารถทําได้ในคอลัมน์ และจํานวนหน่วยความจําที่ใช้เพื่อจัดเก็บค่าในคอลัมน์
ถ้าคุณกําลังใช้ 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") ส่งกลับ "นิพจน์เป็นจริง"
=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