แชร์ผ่าน


ใช้ SELECTEDVALUE แทน VALUES

ในฐานะผู้สร้างแบบจําลองข้อมูล บางครั้งคุณอาจจําเป็นต้องเขียนนิพจน์ DAX ที่ทดสอบว่ามีการกรองคอลัมน์จากค่าเฉพาะหรือไม่

ใน DAX เวอร์ชันก่อนหน้า คุณสามารถบรรลุข้อกําหนดนี้ได้อย่างปลอดภัยโดยใช้รูปแบบที่เกี่ยวข้องกับฟังก์ชัน DAX สามฟังก์ชัน ถ้า, HASONEVALUE และค่า ข้อกําหนดหน่วยวัดต่อไปนี้แสดงถึงตัวอย่าง ซึ่งคํานวณค่าภาษีขาย แต่เฉพาะสําหรับยอดขายที่ทํากับลูกค้าชาวออสเตรเลียเท่านั้น

Australian Sales Tax =
IF(
    HASONEVALUE(Customer[Country-Region]),
    IF(
        VALUES(Customer[Country-Region]) = "Australia",
        [Sales] * 0.10
    )
)

ในตัวอย่าง ฟังก์ชัน HASONEVALUE ส่งกลับ TRUE เฉพาะเมื่อเห็นค่าเดียวของ คอลัมน์ Country-Region ในบริบทตัวกรองปัจจุบัน เมื่อค่าเป็น TRUE ฟังก์ชัน VALUES จะถูกเปรียบเทียบกับข้อความตัวอักษร "Australia" เมื่อฟังก์ชัน VALUES ส่งกลับ TRUE หน่วยวัด Sales (ยอดขาย ) จะถูกคูณด้วย 0.10 (คิดเป็น 10%) ถ้าฟังก์ชัน HASONEVALUE ส่งกลับค่า FALSE เนื่องจากมีค่ามากกว่าหนึ่งค่ากรองคอลัมน์ ฟังก์ชัน IF แรกจะส่งกลับ BLANK

การใช้ HASONEVALUE เป็นเทคนิคเชิงป้องกัน ซึ่งจําเป็นเนื่องจากเป็นไปได้ว่าค่าหลายค่าจะกรองคอลัมน์ Country-Region ในกรณีนี้ ฟังก์ชัน VALUES จะส่งกลับตารางหลายแถว การเปรียบเทียบตารางหลายแถวกับค่าสเกลาร์ทําให้เกิดข้อผิดพลาด

คำแนะนำ

ขอแนะนําให้คุณใช้ฟังก์ชัน SELECTEDVALUE ซึ่งจะทําให้ได้ผลลัพธ์เดียวกันกับรูปแบบที่อธิบายไว้ในบทความนี้ แต่มีประสิทธิภาพและสวยงามยิ่งขึ้น

การใช้ฟังก์ชัน SELECTEDVALUE ข้อกําหนดหน่วยวัดตัวอย่างจะถูกเขียนใหม่ในขณะนี้

Australian Sales Tax =
IF(
    SELECTEDVALUE(Customer[Country-Region]) = "Australia",
    [Sales] * 0.10
)

เคล็ดลับ

เป็นไปได้ที่จะส่งผ่าน ค่าผลลัพธ์ สํารองลงในฟังก์ชัน SELECTEDVALUE ค่าผลลัพธ์สํารองจะถูกส่งกลับเมื่อไม่มีตัวกรองหรือตัวกรองหลายรายการถูกนําไปใช้กับคอลัมน์