การใช้ฟังก์ชันข้อผิดพลาดที่เหมาะสม
ในฐานะผู้สร้างแบบจำลองข้อมูล เมื่อคุณเขียนนิพจน์ DAX ที่อาจทำให้เกิดข้อผิดพลาดในการประเมินระยะเวลา คุณสามารถพิจารณาการใช้ฟังก์ชัน DAX ที่เป็นประโยชน์สองอย่างได้
- ฟังก์ชัน ISERROR ซึ่งจะใช้นิพจน์เดียวและแสดงค่า TRUE หากนิพจน์ดังกล่าวมีข้อผิดพลาด
- ฟังก์ชัน IFERROR ซึ่งจะรับสองนิพจน์ หากนิพจน์แรกมีข้อผิดพลาด ค่าสำหรับนิพจน์ที่สองจะถูกส่งกลับ ที่จริงแล้วเป็นการปรับการซ้อนฟังก์ชัน ISERROR ภายในฟังก์ชัน IF
อย่างไรก็ตาม นอกจากที่ฟังก์ชันเหล่านี้จะเป็นประโยชน์และสามารถสนับสนุนการเขียนนิพจน์ที่เข้าใจได้ง่ายแล้ว ยังสามารถลดประสิทธิภาพการคำนวณได้อย่างมาก ซึ่งอาจเกิดขึ้นเนื่องจากฟังก์ชันเหล่านี้เพิ่มจำนวนการสแกนกลไกจัดการที่เก็บข้อมูลที่จำเป็น
ข้อผิดพลาดในการประเมินระยะเวลาส่วนใหญ่จะเกิดขึ้นเนื่องจาก BLANK หรือค่าศูนย์ที่ไม่คาดคิด หรือการแปลงประเภทข้อมูลที่ไม่ถูกต้อง
คำแนะนำ
เป็นการดีกว่าที่จะหลีกเลี่ยงการใช้ฟังก์ชัน ISERROR และ IFERROR ให้ใช้กลยุทธ์การป้องกันเมื่อทำการพัฒนาแบบจำลองและการเขียนนิพจน์แทน กลยุทธ์สามารถรวมถึง:
ตรวจสอบให้แน่ใจว่าโหลดข้อมูลคุณภาพลงในแบบจำลอง: ใช้การแปลง Power Query เพื่อลบหรือแทนที่ค่าที่ไม่ถูกต้องหรือที่ขาดหายไป และตั้งค่าประเภทข้อมูลที่ถูกต้อง นอกจากนี้ ยังสามารถใช้การแปลง Power Query เพื่อกรองแถวเมื่อเกิดข้อผิดพลาด เช่น การแปลงข้อมูลที่ไม่ถูกต้อง
ยังสามารถควบคุมคุณภาพข้อมูลได้โดยการตั้งค่าคอลัมน์แบบจำลองคุณสมบัติเป็นค่าว่างได้เพื่อปิด ซึ่งจะล้มเหลวในการรีเฟรชข้อมูลหากมีช่องว่าง หากเกิดความล้มเหลวนี้ ข้อมูลที่โหลดเนื่องจากการรีเฟรชที่สำเร็จจะยังคงอยู่ในตาราง
การใช้ฟังก์ชัน IF: นิพจน์การทดสอบเชิงตรรกะของฟังก์ชัน IF สามารถกำหนดได้ว่าผลลัพธ์ของข้อผิดพลาดจะเกิดขึ้นหรือไม่ หมายเหตุ ฟังก์ชันนี้อาจส่งผลให้มีการสแกนกลไกจัดการที่เก็บข้อมูลเพิ่มเติม แต่มีแนวโน้มที่จะทำงานได้ดียิ่งขึ้นเนื่องจากไม่มีข้อผิดพลาดที่จำเป็นต้องเกิดขึ้น อย่างฟังก์ชัน ISERROR และ IFERROR
การใช้ฟังก์ชันที่ทนต่อข้อผิดพลาด: ฟังก์ชัน DAX บางฟังก์ชันจะทดสอบและชดเชยเงื่อนไขของข้อผิดพลาด ฟังก์ชันเหล่านี้ช่วยให้คุณสามารถใส่ผลลัพธ์สำรองที่จะถูกส่งกลับแทน ฟังก์ชัน DIVIDE คือตัวอย่างหนึ่งดังกล่าว สำหรับคำแนะนำเพิ่มเติมเกี่ยวกับฟังก์ชันนี้ ให้อ่าน DAX: บทความฟังก์ชัน DIVIDE เทียบกับตัวดำเนินการหาร (/)
ตัวอย่าง:
นิพจน์หน่วยวัดต่อไปนี้จะทดสอบว่ามีข้อผิดพลาดเกิดขึ้นหรือไม่ ซึ่งจะส่งกลับค่าว่างในครั้งนี้ (ซึ่งเป็นกรณีที่คุณไม่ได้ให้ฟังก์ชัน IF ที่มีนิพจน์ค่าหากเป็นเท็จ)
Profit Margin
= IF(ISERROR([Profit] / [Sales]))
เวอร์ชันถัดไปนี้ของนิพจน์หน่วยวัดได้รับการปรับปรุงโดยใช้ฟังก์ชัน IFERROR แทนฟังก์ชัน IF และ ISERROR
Profit Margin
= IFERROR([Profit] / [Sales], BLANK())
อย่างไรก็ตาม เวอร์ชันสุดท้ายของนิพจน์หน่วยวัดนี้ได้ผลลัพธ์เดียวกัน แต่มีประสิทธิภาพและสละสลวยมากกว่า
Profit Margin
= DIVIDE([Profit], [Sales])
นอกจากนี้ โปรดดู
- เส้นทางการเรียนรู้: ใช้ DAX ใน Power BI Desktop
- มีคำถามหรือไม่ ลองถามชุมชน Power BI
- มีข้อเสนอแนะไหม สนับสนุนแนวคิดในการปรับปรุง Power BI