ตัวอย่างที่ 1: ยอดขายสินค้าสีแดง (คง Slicer อื่นไว้)
Red Sales = CALCULATE( [Total Sales], KEEPFILTERS('Product'[Color] = "Red") )
ยอดขายเฉพาะสินค้าสีแดง ภายใน Context ที่ถูกกรองอยู่แล้ว
คงตัวกรองเดิมไว้เมื่อเพิ่มตัวกรองใหม่ใน CALCULATE
KEEPFILTERS เป็น Filter Modifier ที่ใช้ภายใน CALCULATE เพื่อระบุว่าตัวกรองใหม่ที่เพิ่มเข้าไป ควรถูกรวม (Intersect) กับตัวกรองที่มีอยู่เดิม แทนที่จะไปเขียนทับตัวกรองเดิม
=KEEPFILTERS(Expression)
=KEEPFILTERS(Expression)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| Expression | table/boolean | Yes | นิพจน์ตารางหรือบูลีนที่ต้องการนำไปรวมกับตัวกรองเดิม |
ถ้าผู้ใช้เลือกสินค้าใน Slicer แล้วอยากจะดูว่าในกลุ่มสินค้านั้นมี 'สีแดง' ขายได้เท่าไหร่
เมื่อต้องการให้ตัวกรองจาก Measure และตัวกรองจาก Context ทำงานร่วมกันแบบ AND
Red Sales = CALCULATE( [Total Sales], KEEPFILTERS('Product'[Color] = "Red") )
ยอดขายเฉพาะสินค้าสีแดง ภายใน Context ที่ถูกกรองอยู่แล้ว
Brand A Sales = CALCULATE( [Total Sales], KEEPFILTERS('Product'[Brand] = "Brand A") )
ยอดขาย Brand A (ถ้า Brand A ถูกเลือกอยู่ด้วย)
Top 10 Sales =
CALCULATE(
[Total Sales],
KEEPFILTERS( TOPN(10, ALL('Product'), [Total Sales]) )
)
ยอดขายสินค้า 10 อันดับแรก ภายในหมวดหมู่ที่เลือก
ใช่ KEEPFILTERS เป็น Filter Modifier ที่ออกแบบมาเพื่อทำงานร่วมกับ CALCULATE เท่านั้น
KEEPFILTERS เป็นฟังก์ชัน Modifier ที่ใช้ภายใน CALCULATE เพื่อ คงตัวกรองเดิมที่มีอยู่ ไม่ให้ถูกเขียนทับ (Overwrite) ด้วยตัวกรองใหม่ที่เราใส่เข้าไปใน CALCULATE
โดยปกติแล้ว เมื่อเราใส่ Filter ใน CALCULATE ตัวกรองเหล่านั้นจะ Overwrite ตัวกรองเดิมที่อยู่ใน Context แต่ KEEPFILTERS จะเปลี่ยนพฤติกรรมนั้นให้เป็นการรวมตัวกรองเดิมและตัวกรองใหม่เข้าด้วยกัน (AND Operation)