KEEPFILTERS
นําไปใช้กับ: การคํานวณคอลัมน์จากการคํานวณ ตารางจากการคํานวณ หน่วยวัดภาพการคํานวณ
ปรับเปลี่ยนวิธีการใช้ตัวกรองในขณะที่ประเมินฟังก์ชัน CALCULATE หรือ CALCULATETABLE
ไวยากรณ์
KEEPFILTERS(<expression>)
พารามิเตอร์
เงื่อนไข | คำนิยาม |
---|---|
สีหน้า | นิพจน์ใด ๆ |
ค่าที่ส่งกลับ
ตารางของค่า
หมายเหตุ
คุณใช้ KEEPFILTERS ภายในฟังก์ชัน CALCULATE และ CALCULATETABLE เพื่อแทนที่ลักษณะการทํางานมาตรฐานของฟังก์ชันเหล่านั้น
ตามค่าเริ่มต้น ตัวกรองอาร์กิวเมนต์ในฟังก์ชันเช่น CALCULATE จะถูกใช้เป็นบริบทสําหรับการประเมินนิพจน์ และเป็นอาร์กิวเมนต์ตัวกรองดังกล่าวสําหรับ CALCULATE แทนที่ตัวกรองที่มีอยู่ทั้งหมดในคอลัมน์เดียวกัน บริบทใหม่ที่ได้รับผลกระทบจากอาร์กิวเมนต์ตัวกรองสําหรับ CALCULATE จะส่งผลเฉพาะตัวกรองที่มีอยู่บนคอลัมน์ที่ระบุเป็นส่วนหนึ่งของอาร์กิวเมนต์ตัวกรองเท่านั้น ตัวกรองบนคอลัมน์อื่นนอกเหนือจากที่กล่าวถึงในอาร์กิวเมนต์ของ CALCULATE หรือฟังก์ชันที่เกี่ยวข้องอื่น ๆ จะยังคงมีผลและไม่เปลี่ยนแปลง
ฟังก์ชัน KEEPFILTERS ช่วยให้คุณสามารถปรับเปลี่ยนลักษณะการทํางานนี้ได้ เมื่อคุณใช้ KEEPFILTERS ตัวกรองที่มีอยู่ในบริบทปัจจุบันจะถูกเปรียบเทียบกับคอลัมน์ในอาร์กิวเมนต์ตัวกรอง และจุดตัดของอาร์กิวเมนต์เหล่านั้นจะถูกใช้เป็นบริบทสําหรับการประเมินนิพจน์ ผลสุทธิที่เกิดขึ้นในหนึ่งคอลัมน์ใด ๆ คือ ใช้อาร์กิวเมนต์ทั้งสองชุด: ทั้งอาร์กิวเมนต์ตัวกรองที่ใช้ใน CALCULATE และตัวกรองในอาร์กิวเมนต์ของฟังก์ชัน KEEPFILTER กล่าวอีกนัยหนึ่ง ตัวกรอง CALCULATE จะแทนที่บริบทปัจจุบัน KEEPFILTERS จะเพิ่มตัวกรองไปยังบริบทปัจจุบัน
ฟังก์ชันนี้ไม่ได้รับการสนับสนุนสําหรับการใช้งานในโหมด DirectQuery เมื่อใช้ในคอลัมน์จากการคํานวณหรือกฎการรักษาความปลอดภัยระดับแถว (RLS)
ตัวอย่าง
ตัวอย่างต่อไปนี้จะนําคุณผ่านสถานการณ์ทั่วไปบางอย่างที่สาธิตการใช้ฟังก์ชัน KEEPFILTERS เป็นส่วนหนึ่งของสูตร CALCULATE หรือ CALCULATETABLE
นิพจน์สามรายการแรกรับข้อมูลอย่างง่ายที่จะใช้สําหรับการเปรียบเทียบ:
ยอดขายอินเทอร์เน็ตสําหรับรัฐวอชิงตัน
ยอดขายอินเทอร์เน็ตสําหรับรัฐวอชิงตันและโอเรกอน (รวมทั้งสองรัฐ)
ยอดขายอินเทอร์เน็ตสําหรับรัฐวอชิงตันและจังหวัดของบริติชโคลัมเบีย (รวมทั้งสองภูมิภาค)
นิพจน์ที่สี่คํานวณยอดขายอินเทอร์เน็ตสําหรับรัฐวอชิงตันและโอเรกอน ในขณะที่ใช้ตัวกรองสําหรับรัฐวอชิงตันและบริติชโคลัมเบีย
นิพจน์ถัดไปคํานวณยอดขายอินเทอร์เน็ตสําหรับรัฐวอชิงตันและโอเรกอน แต่ใช้ KEEPFILTERS แต่จะใช้ KEEPFILTERS แทน ตัวกรองสําหรับวอชิงตันและบริติชโคลัมเบียเป็นส่วนหนึ่งของบริบทก่อนหน้า
EVALUATE ROW(
"$$ in WA"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
)
, "$$ in WA and OR"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, "$$ in WA and BC"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA and OR ??"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
,'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA !!"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
, KEEPFILTERS('Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
)
เมื่อนิพจน์นี้ได้รับการประเมินจากฐานข้อมูลตัวอย่าง AdventureWorks DW จะได้รับผลลัพธ์ต่อไปนี้
Column | ค่า |
---|---|
[$$ in WA] | $ 2,467,248.34 |
[$$ in WA and OR] | $ 3,638,239.88 |
[$$ in WA and BC] | $ 4,422,588.44 |
[$$ in WA and OR ??] | $ 3,638,239.88 |
[$$ in WA !!] | $ 2,467,248.34 |
หมายเหตุ
ผลลัพธ์ข้างต้นได้รับการจัดรูปแบบไปยังตาราง แทนที่จะเป็นแถวเดียวเพื่อวัตถุประสงค์ด้านการศึกษา
ก่อนอื่น ให้ตรวจสอบนิพจน์ [$$ in WA and OR ??] คุณอาจสงสัยว่าสูตรนี้จะแสดงค่าสําหรับยอดขายในรัฐวอชิงตันและโอเรกอนได้อย่างไร เนื่องจากนิพจน์ CALCULATE ด้านนอกมีตัวกรองสําหรับรัฐวอชิงตันและบริติชโคลัมเบีย คําตอบคือลักษณะการทํางานเริ่มต้นของ CALCULATE จะแทนที่ตัวกรองภายนอกใน 'ภูมิศาสตร์' [State Province Code] และแทนที่อาร์กิวเมนต์ตัวกรองของตนเองเนื่องจากตัวกรองนําไปใช้กับคอลัมน์เดียวกัน
ถัดไป ให้ตรวจสอบนิพจน์ [$$ in WA !!] คุณอาจสงสัยว่าสูตรนี้จะแสดงค่าสําหรับยอดขายในรัฐวอชิงตันและไม่รวมรัฐอื่นใดได้อย่างไร เนื่องจากตัวกรองอาร์กิวเมนต์รวมถึงรัฐโอเรกอนและนิพจน์ CALCULATE ด้านนอกมีตัวกรองในรัฐวอชิงตันและบริติชโคลัมเบีย คําตอบคือ KEEPFILTERS ปรับเปลี่ยนลักษณะการทํางานเริ่มต้นของ CALCULATE และเพิ่มตัวกรองเพิ่มเติม เนื่องจากมีการใช้จุดแยกของตัวกรอง ขณะนี้ตัวกรอง ด้านนอก 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") จะถูกเพิ่มลงในอาร์กิวเมนต์ ตัวกรอง 'Geography'[State Province Code]="WA" || 'ภูมิศาสตร์'[State Province Code]="OR", เนื่องจากตัวกรองทั้งสองนําไปใช้กับคอลัมน์เดียวกัน ตัวกรอง ผลลัพธ์ 'Geography'[State Province Code]="WA" คือตัวกรองที่นําไปใช้เมื่อประเมินนิพจน์