แชร์ผ่าน


KEEPFILTERS

นําไปใช้กับ: คอลัมน์จากการคํานวณตารางจากการคํานวณหน่วยวัดการคํานวณวิชวล

ปรับเปลี่ยนวิธีการใช้ตัวกรองขณะประเมินฟังก์ชัน CALCULATE หรือ CALCULATETABLE

วากยสัมพันธ์

KEEPFILTERS(<expression>)

พารามิเตอร์

เทอม นิยาม
expression นิพจน์ใด ๆ

ค่าผลลัพธ์

ตารางของค่า

หมาย เหตุ

  • คุณใช้ KEEPFILTERS ภายในบริบท CALCULATE และฟังก์ชัน CALCULATETABLE เพื่อแทนที่ลักษณะการทํางานมาตรฐานของฟังก์ชันเหล่านั้น

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

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

  • ฟังก์ชันนี้ไม่ได้รับการสนับสนุนสําหรับการใช้งานในโหมด DirectQuery เมื่อใช้ในคอลัมน์จากการคํานวณหรือกฎการรักษาความปลอดภัยระดับแถว (RLS)

ตัวอย่าง

ตัวอย่างต่อไปนี้จะนําคุณผ่านสถานการณ์ทั่วไปบางอย่างที่สาธิตการใช้ฟังก์ชัน KEEPFILTERS เป็นส่วนหนึ่งของสูตร CALCULATE หรือ CALCULATETABLE

นิพจน์สามรายการแรกรับข้อมูลอย่างง่ายที่จะใช้สําหรับการเปรียบเทียบ:

  • ยอดขายอินเทอร์เน็ตสําหรับรัฐวอชิงตัน

  • ยอดขายอินเทอร์เน็ตสําหรับรัฐวอชิงตันและโอเรกอน (รวมทั้งสองรัฐ)

  • ยอดขายอินเทอร์เน็ตสําหรับรัฐวอชิงตันและจังหวัดของบริติชโคลัมเบีย (รวมทั้งสองภูมิภาค)

นิพจน์ที่สี่คํานวณยอดขายอินเทอร์เน็ตสําหรับรัฐวอชิงตันและโอเรกอน ในขณะที่ใช้ตัวกรองสําหรับรัฐวอชิงตันและบริติชโคลัมเบีย

นิพจน์ถัดไปคํานวณยอดขายอินเทอร์เน็ตสําหรับรัฐวอชิงตันและโอเรกอน แต่ใช้ 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 จะได้รับผลลัพธ์ต่อไปนี้

คอลัมน์ ค่า
[$$ 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" || 'Geography'[State Province Code]="OR" เนื่องจากตัวกรองทั้งสองนําไปใช้กับคอลัมน์เดียวกัน ตัวกรองผลลัพธ์ 'Geography'[State Province Code]="WA" คือตัวกรองที่ถูกนําไปใช้เมื่อประเมินนิพจน์

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