ใช้ SELECTEDVALUE แทน VALUES
ในฐานะผู้สร้างแบบจำลองข้อมูล บางครั้งคุณอาจจำเป็นต้องเขียนนิพจน์ DAX ที่ทดสอบว่ามีการกรองคอลัมน์จากค่าเฉพาะหรือไม่
ใน DAX รุ่นก่อนหน้า คุณสามารถบรรลุความต้องการนี้ได้อย่างปลอดภัยโดยใช้รูปแบบที่เกี่ยวข้องกับฟังก์ชัน DAX สามฟังก์ชัน ถ้า, HASONEVALUSและค่า ข้อกำหนดหน่วยวัดต่อไปนี้แสดงถึงตัวอย่าง ซึ่งคำนวณค่าภาษีขาย แต่เฉพาะสำหรับยอดขายที่เกิดจากลูกค้าชาวออสเตรเลียเท่านั้น
Australian Sales Tax =
IF(
HASONEVALUE(Customer[Country-Region]),
IF(
VALUES(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
)
ในตัวอย่าง ฟังก์ชัน HASONEVALUS ส่งกลับ TRUE เฉพาะเมื่อแสดงค่าเดียวของคอลัมน์ Country-Region ในบริบทตัวกรองปัจจุบัน เมื่อค่าเป็น TRUE ฟังก์ชัน VALUES จะถูกเปรียบเทียบกับข้อความตัวอักษร "Australia" เมื่อฟังก์ชัน VALUES ส่งกลับ TRUE หน่วยวัด Sales (ยอดขาย) จะถูกคูณด้วย 0.10 (คิดเป็น 10%) ถ้าฟังก์ชัน HASONEVALUE ส่งกลับค่า FALSE เนื่องจากมีค่ามากกว่าหนึ่งค่ากรองคอลัมน์ ดังนั้นฟังก์ชัน IF แรกจะส่งกลับ BLANK
การใช้ HASONEVALUE เป็นเทคนิคเชิงป้องกัน ซึ่งเทคนิคนี้จำเป็นเนื่องจากเป็นไปได้ว่าค่าหลายค่าจะกรองคอลัมน์ Country-Region ในกรณีนี้ ฟังก์ชัน VALUES จะส่งกลับตารางหลายแถว การเปรียบเทียบตารางหลายแถวกับค่าสเกลาร์ทำให้เกิดข้อผิดพลาด
คำแนะนำ
เราแนะนาให้คุณใช้ฟังก์ชันSELECTEDVALUS ซึ่งจะทำให้ได้ผลลัพธ์เดียวกันกับรูปแบบที่อธิบายไว้ในบทความนี้ แต่มีประสิทธิภาพและสวยงามยิ่งขึ้น
การใช้ฟังก์ชัน SELECTEDVALUE ข้อกำหนดหน่วยวัดตัวอย่างจะถูกเขียนใหม่ในขณะนี้
Australian Sales Tax =
IF(
SELECTEDVALUE(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
เคล็ดลับ
ซึ่งอาจเป็นไปได้ที่จะส่งผ่านค่า ผลลัพธ์สำรอง ลงในฟังก์ชัน SELECTEDVALUE ฟังก์ชันจะส่งกลับค่าผลลัพธ์สำรองเมื่อไม่มีตัวกรองหรือตัวกรองหลายรายการถูกนำไปใช้กับคอลัมน์
นอกจากนี้ โปรดดู
- เส้นทางการเรียนรู้: ใช้ DAX ใน Power BI Desktop
- มีคำถามหรือไม่ ลองถามชุมชน Power BI
- มีข้อเสนอแนะไหม สนับสนุนแนวคิดในการปรับปรุง Power BI