แก้ไขบริบทตัวกรอง

เสร็จสมบูรณ์เมื่อ

คุณสามารถใช้ CALCULATE ฟังก์ชัน DAX เพื่อแก้ไขบริบทตัวกรองในสูตรของคุณได้ ไวยากรณ์สำหรับฟังก์ชัน CALCULATE มีดังนี้:

CALCULATE(<expression>, [[<filter1>], <filter2>]…)

ฟังก์ชันต้องการการส่งผ่านในนิพจน์ที่ส่งคืนค่าสเกลาร์และตัวกรองมากเท่าที่คุณต้องการ นิพจน์สามารถเป็นหน่วยวัด (ซึ่งเป็นนิพจน์ที่มีชื่อ) หรือนิพจน์ใดๆ ก็ตามที่สามารถประเมินได้ในบริบทตัวกรอง

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

เมื่อคุณมีตัวกรองหลายตัว ระบบจะประเมินโดยใช้ตัว AND ดําเนินการเชิงตรรกะ ซึ่งหมายความว่าเงื่อนไขทั้งหมดจะต้อง TRUE อยู่ในเวลาเดียวกัน

หมายเหตุ

ฟังก์ชัน CALCULATETABLE DAX ทํางานฟังก์ชัน CALCULATE เดียวกับฟังก์ชัน ยกเว้นว่าจะปรับเปลี่ยนบริบทตัวกรองที่ใช้กับนิพจน์ที่ส่งกลับออบเจ็กต์ตาราง ในโมดูลนี้ คําอธิบายและตัวอย่างใช้ CALCULATE ฟังก์ชัน แต่โปรดทราบว่าสถานการณ์เหล่านี้สามารถนําไปใช้กับ CALCULATETABLE ฟังก์ชันได้เช่นกัน

ใช้ตัวกรองนิพจน์บูลีน

ตัวกรองนิพจน์บูลีนคือนิพจน์ที่ประเมินเป็น TRUE หรือFALSE ตัวกรองบูลีนต้องเป็นไปตามกฎต่อไปนี้:

  • พวกเขาสามารถอ้างอิงได้เพียงคอลัมน์เดียวเท่านั้น
  • พวกเขาไม่สามารถอ้างอิงหน่วยวัดได้
  • พวกเขาไม่สามารถใช้ฟังก์ชันที่สแกนหรือส่งกลับตารางที่มีฟังก์ชันการรวมเช่นSUM

ในตัวอย่างนี้ คุณจะสร้างหน่วยวัด ก่อนอื่น ให้ดาวน์โหลดและเปิดไฟล์ Adventure Works DW 2020 M05.pbix จากนั้นเพิ่มหน่วยวัดต่อไปนี้ลงในตาราง ยอดขาย ที่กรองหน่วยวัด รายได้ โดยใช้ตัวกรองนิพจน์บูลีนสําหรับผลิตภัณฑ์สีแดง

Revenue Red = CALCULATE([Revenue], 'Product'[Color] = "Red")

เพิ่มหน่วยวัดรายได้สีแดงในตารางภาพที่พบในหน้า 1 ของรายงาน

ในตัวอย่างต่อไปนี้ หน่วยวัดต่อไปนี้จะกรองหน่วยวัดรายได้ในสีที่แตกต่างกันไป โปรดสังเกตการใช้ตัว IN ดําเนินการ ตามด้วยรายการของค่าสี

Revenue Red or Blue = CALCULATE([Revenue], 'Product'[Color] IN {"Red", "Blue"})

หน่วยวัดต่อไปนี้กรองหน่วยวัดรายได้ตามผลิตภัณฑ์ที่มีราคาแพง ผลิตภัณฑ์ที่มีราคาแพงคือรายการที่มีราคามากกว่า USD 1000

Revenue Expensive Products = CALCULATE([Revenue], 'Product'[List Price] > 1000)

ใช้ตัวกรองนิพจน์ตาราง

ตัวกรองนิพจน์ตารางใช้วัตถุตารางเป็นตัวกรอง ซึ่งอาจเป็นการอ้างอิงไปยังตารางแบบจำลอง อย่างไรก็ตามอาจเป็นไปได้ว่าเป็นฟังก์ชัน DAX ที่ส่งกลับวัตถุตาราง

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

ฟังก์ชัน FILTER จะส่งกลับวัตถุตารางที่มีโครงสร้างเดียวกับที่ตารางที่ส่งผ่าน แถวเป็นเซตย่อยของแถวเหล่านั้นที่ได้รับการส่งผ่าน ซึ่งหมายความว่าแถวที่นิพจน์ประเมินเป็นTRUE

ตัวอย่างต่อไปนี้แสดงนิพจน์ตัวกรองตารางที่ใช้ FILTER ฟังก์ชัน:

Revenue High Margin Products =
CALCULATE(
    [Revenue],
    FILTER(
        'Product',
        'Product'[List Price] > 'Product'[Standard Cost] * 2
    )
)

ในตัวอย่างนี้ ฟังก์ชันจะ FILTER กรองแถวทั้งหมดของตารางผลิตภัณฑ์ที่อยู่ในบริบทตัวกรอง แต่ละแถวสำหรับผลิตภัณฑ์ที่ราคาของรายการเกินค่าใช้จ่ายมาตรฐานจะแสดงเป็นแถวของตารางที่ถูกกรอง ดังนั้น หน่วยวัด รายได้ ได้รับการประเมินสําหรับผลิตภัณฑ์ทั้งหมดที่ส่งกลับโดย FILTER ฟังก์ชัน

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

Revenue Red =
CALCULATE(
    [Revenue],
    FILTER(
        'Product',
        'Product'[Color] = "Red"
    )
)

ลักษณะการทำงานของตัวกรอง

สองผลลัพธ์มาตรฐานที่เป็นไปได้เกิดขึ้นเมื่อคุณเพิ่มนิพจน์ตัวกรองไปยัง CALCULATE ฟังก์ชัน:

  • ถ้าคอลัมน์ (หรือตาราง) ไม่ได้อยู่ในบริบทตัวกรอง ระบบจะเพิ่มตัวกรองใหม่ลงในบริบทตัวกรองเพื่อประเมิน CALCULATE นิพจน์
  • ถ้าคอลัมน์ (หรือตาราง) อยู่ในบริบทตัวกรองแล้ว ตัวกรองที่มีอยู่จะถูกเขียนทับโดยตัวกรองใหม่เพื่อประเมิน CALCULATE นิพจน์

ตัวอย่างต่อไปนี้แสดงวิธีการทํางานของนิพจน์ตัวกรองที่เพิ่มไปยัง CALCULATE ฟังก์ชัน

หมายเหตุ

ในแต่ละตัวอย่างจะไม่มีการนำตัวกรองไปใช้กับภาพตาราง

เช่นเดียวกับในกิจกรรมก่อนหน้าหน่วยวัดรายได้สีแดงได้ถูกเพิ่มไปยังภาพตารางที่จัดกลุ่มตามภูมิภาคและแสดงรายได้

เนื่องจากไม่มีการใช้ตัวกรองบนคอลัมน์ สี ในตาราง ผลิตภัณฑ์ การประเมินผลของหน่วยวัดเพิ่มตัวกรองใหม่เพื่อกรองบริบท ในแถวแรกมูลค่า $2,681,324.79 เป็นของผลิตภัณฑ์สีแดงที่จำหน่ายในภูมิภาคออสเตรเลีย

สลับคอลัมน์แรกของภาพตารางจาก ภูมิภาค ไปเป็น สี จะสร้างผลลัพธ์ที่แตกต่างกันเนื่องจากคอลัมน์ สี ในตาราง ผลิตภัณฑ์ ขณะนี้อยู่ในบริบทตัวกรอง

สูตรหน่วยวัดรายได้สีแดงจะประเมินหน่วยวัดรายได้โดยการเพิ่มตัวกรองในคอลัมน์สี (เป็นสีแดง) ในตารางผลิตภัณฑ์ ดังนั้น ในภาพนี้ที่จัดกลุ่มตามสี สูตรหน่วยวัดจะเขียนทับบริบทตัวกรองด้วยตัวกรองใหม่

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