REMOVEFILTERS ลบ Filter ออกจากตารางหรือคอลัมน์ที่ระบุ ใช้ได้ใน CALCULATE เท่านั้น เทียบเท่า ALL เมื่อใช้เป็น CALCULATE Modifier แต่ชัดเจนและอ่านโค้ดง่ายกว่า แนะนำใช้แทน ALL เพราะสื่อความหมายได้ดีกว่า
=REMOVEFILTERS([table_or_column], [column], [column])
=REMOVEFILTERS([table_or_column], [column], [column])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| table_or_column | Table/Column | Optional | ลบตัวกรองทั้งหมด | ตารางหรือคอลัมน์ที่ต้องการลบตัวกรอง หากไม่ระบุ จะลบตัวกรองทั้งหมด |
| column | Column | Optional | คอลัมน์เพิ่มเติมจากตารางเดียวกัน (ทำได้หลายคอลัมน์) ใช้เมื่อต้องการลบ Filter จากคอลัมน์เฉพาะ |
ใช้เพื่อหาตัวหารที่เป็นยอดรวมทั้งหมด ที่ไม่ถูกกรอง
หาส่วนเบี่ยงเบนจากค่าเฉลี่ยที่ไม่ถูกกรอง
Grand Total Sales = CALCULATE( SUM(Sales[Amount]), REMOVEFILTERS() )Grand Total Sales =
CALCULATE(
SUM(Sales[Amount]),
REMOVEFILTERS()
)
10,500,000 (ทั้งหมดโดยไม่สนใจ Filter ที่เลือก)
Sales All Colors = CALCULATE( SUM(Sales[Amount]), REMOVEFILTERS(Products[Color]) )Sales All Colors =
CALCULATE(
SUM(Sales[Amount]),
REMOVEFILTERS(Products[Color])
)
8,200,000 (ถ้า Brand='Samsung' ถูกเลือก)
Pct of Total = VAR CurrentSales = SUM(Sales[Amount]) VAR GrandTotal = CALCULATE(SUM(Sales[Amount]), REMOVEFILTERS()) RETURN DIVIDE(CurrentSales, GrandTotal, 0)Pct of Total =
VAR CurrentSales = SUM(Sales[Amount])
VAR GrandTotal = CALCULATE(SUM(Sales[Amount]), REMOVEFILTERS())
RETURN
DIVIDE(CurrentSales, GrandTotal, 0)
0.25 (หรือ 25%)
Sales No Brand No Color = CALCULATE( SUM(Sales[Amount]), REMOVEFILTERS(Products[Brand], Products[Color]) )Sales No Brand No Color =
CALCULATE(
SUM(Sales[Amount]),
REMOVEFILTERS(Products[Brand], Products[Color])
)
9,100,000 (ลบ Brand และ Color แต่คง Category)
Sales Any Product = CALCULATE( SUM(Sales[Amount]), REMOVEFILTERS(Products) )Sales Any Product =
CALCULATE(
SUM(Sales[Amount]),
REMOVEFILTERS(Products)
)
10,500,000 (ลบทั้ง Color, Brand, Category)
เมื่อใช้ใน CALCULATE ทั้งสองทำงานเหมือนกันทุกประการ แต่ REMOVEFILTERS ชัดเจนกว่าในเรื่องความหมาย – มันบอกตรงๆ ว่า “ลบตัวกรอง” ไม่เหมือน ALL ที่มีความหมายซ้ำซ้อน (เป็นได้ทั้ง Table Function และ CALCULATE Modifier) เหตุนี้แนะนำใช้ REMOVEFILTERS เพราะโค้ดอ่านง่าย Intent ชัดเจน
ไม่ได้ REMOVEFILTERS ใช้ได้ใน CALCULATE เท่านั้น (CALCULATE Modifier) ถ้าต้องการตารางจริงต้องใช้ ALL เช่น SELECTCOLUMNS(ALL(Products), …) ตัวอย่าง: ALL(Products) คืนตารางค่าทั้งหมด แต่ REMOVEFILTERS() ใช้ในตัว CALCULATE เท่านั้น
ไม่มี REMOVEFILTERS ทำงานเหมือน ALL (ลบตัวกรองทั้งหมด) ไม่มีฟังก์ชันชัดเจนแบบ REMOVEFILTERS ที่ทำงานเหมือน ALLSELECTED (ลบตัวกรองใน Visual แต่คง Slicer) ถ้าต้องการฟังก์ชันนั้น ต้องใช้ ALLSELECTED เท่านั้น
REMOVEFILTERS(Products) ลบตัวกรองจากทั้งตาราง Products และ Dimension Table ที่เชื่อมผ่าน Relationship (เรียก Expanded Table) ส่วน REMOVEFILTERS(Products[Color]) ลบเฉพาะตัวกรองจากคอลัมน์ Products[Color] เท่านั้น
ระวัง Expanded Table – เมื่อ REMOVEFILTERS(FactTable) มันจะลบตัวกรองจากทั้ง Fact Table และ Dimension Tables ที่เชื่อมผ่าน Relationship แบบ many-to-one ถ้าต้องการลบเฉพาะบางคอลัมน์ ให้ระบุคอลัมน์ชัดเจน เช่น REMOVEFILTERS(Sales[ProductKey]) ส่วนตัวกรองอื่นจะคงอยู่
REMOVEFILTERS เป็นฟังก์ชันที่ทำหน้าที่ลบตัวกรอง (Remove Filters) ออกจากตารางหรือคอลัมน์ที่ระบุในตัว CALCULATE
ส่วนตัวผมชอบ REMOVEFILTERS มากกว่า ALL เพราะมันบอกเจาะจงตรงๆ ว่า “ลบตัวกรอง” ไม่เหมือน ALL ที่มีความหมายซ้ำซ้อน (ยังเป็นได้ทั้ง Table Function และ Modifier) ทำให้โค้ดอ่านง่ายและ Intent ชัดเจนมากขึ้น 😎
ข้อสำคัญ: REMOVEFILTERS ใช้ได้ใน CALCULATE เท่านั้น ถ้าต้องการตารางจริง (Table Function) ต้องใช้ ALL แทน