DAX Function KEEPFILTERS

สิ่งสำคัญของการใช้งานPower BI ที่ขาดไม่ได้และเป็นเรื่องสำคัญมาก ๆ อย่างหนึ่งนั้นคือ DAX (Data Analysis Expressions) ซึ่งจะมาช่วยคำนวณสรุปผลข้อมูลที่มี โดย DAX จะถูกไปใช้ในการคำนวณ 3 ส่วนหลัก ๆ ได้แก่
- Measures – สร้างการคำนวณในรูปแบบของ Aggregation หลาย ๆ แถวในตาราง
- Calculated columns – สร้างการคำนวณให้เกิดคอลัมน์ใหม่ เป็นการคำนวณแบบทีละแถว
- Calculated table – สร้างการคำนวณให้เกิดตารางใหม่
DAX Function KEEPFILTERS
เปลี่ยนความหมายการกรอง ในฟังก์ชัน CALCULATE และ CALCULATABLE
รูปแบบของ Syntax
KEEPFILTERS(<expression>)
พารามิเตอร์
พารามิเตอร์ | รายละเอียด |
expression | expression ใด หรือ พวกตัวกรองต่าง ๆ |
การคืนค่า
ตารางที่มีค่า ที่ต้องใช้ประกอบกับฟังก์ชัน CALCULATE หรือ CALCULATABLE
ข้อสังเกตที่ควรทราบ
- การใช้ฟังก์ชัน KEEPFILTERS ภายในฟังก์ชัน CALCULATE และ CALCULATETABLE เพื่อแทนที่การทำงานมาตรฐานของฟังก์ชันเหล่านั้น
- ตามค่าเริ่มต้น อาร์กิวเมนต์ตัวกรองในฟังก์ชัน เช่น ฟังก์ชัน CALCULATE จะถูกใช้เป็นบริบทสำหรับการประเมินนิพจน์ และเนื่องจากอาร์กิวเมนต์ตัวกรองสำหรับ CALCULATE จะแทนที่ตัวกรองที่มีอยู่ทั้งหมดบนคอลัมน์เดียวกัน ซึ่งบริบทใหม่ที่ได้รับผลกระทบจากอาร์กิวเมนต์ตัวกรองของฟังก์ชัน CALCULATE นั้นจะมีผลกับตัวกรองในคอลัมน์ที่เป็นส่วนหนึ่งของอาร์กิวเมนต์ตัวกรองฟังก์ชัน CALCULATE เท่านั้น โดยที่ตัวกรองในคอลัมน์อื่นนอกเหนือจากที่กล่าวถึงในอาร์กิวเมนต์ของฟังก์ชัน CALCULATE หรือฟังก์ชันที่เกี่ยวข้องอื่น ๆ จะยังคงมีผลและไม่เปลี่ยนแปลง
- ฟังก์ชัน KEEPFILTERS ช่วยให้สามารถปรับเปลี่ยนพฤติกรรมนี้ได้ เมื่อใช้ฟังก์ชัน KEEPFILTERS ตัวกรองที่มีอยู่ในบริบทปัจจุบันจะถูกเปรียบเทียบกับคอลัมน์ในอาร์กิวเมนต์ตัวกรองของฟังก์ชัน KEEPFILTERS และจุดตัดของอาร์กิวเมนต์เหล่านั้นจะถูกใช้เป็นบริบทสำหรับการประเมิน expression ซึ่งผลลัพธ์สุทธิเกิดกับคอลัมน์คอลัมน์ใดคอลัมน์หนึ่งกับการใช้ชุดอาร์กิวเมนต์ทั้งสองชุด ระหว่างทั้งอาร์กิวเมนต์ตัวกรองที่ใช้ใน CALCULATE และตัวกรองในอาร์กิวเมนต์ของฟังก์ชัน KEEPFILTER กล่าวอีกนัยหนึ่ง ในขณะที่ตัวกรอง CALCULATE แทนที่บริบทปัจจุบัน KEEPFILTERS จะเพิ่มตัวกรองให้กับบริบทปัจจุบัน
- หรือ ฟังก์ชัน KEEPFILTERS เป็นฟังก์ชันแก้ไขตัวกรอง โดยไม่ได้ลบหรือแก้ไขบริบทตัวกรองคอลัมน์หรือตารางที่มีอยู่ หากบริบทตัวกรองที่มีอยู่นั้นไม่ได้เกี่ยวกับตัวกรองที่ใช้ในอาร์กิวเมนต์ของ KEEPFILTERS
- ฟังก์ชันนี้ไม่ได้รับการสนับสนุนสำหรับใช้ในโหมด DirectQuery เมื่อใช้ในการ calculated column หรือกฎ row-level security (RLS)