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" คือตัวกรองที่นําไปใช้เมื่อประเมินนิพจน์

ฟังก์ชันตัวกรอง
ฟังก์ชัน CALCULATE
ฟังก์ชัน CALCULATETABLE