แก้ไขบริบทตัวกรอง
คุณสามารถใช้ 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 ซึ่งเป็นฟังก์ชันการแก้ไขตัวกรองที่คุณสามารถใช้เพื่อรักษาตัวกรองได้แทนที่จะเขียนทับ