ISFILTERED ตรวจสอบว่ามีตัวกรอง (Direct Filter) ที่ใช้โดยตรงกับคอลัมน์ที่ระบุหรือไม่ ใช้เพื่อสร้างลอจิกแบบมีเงื่อนไข (Conditional Logic) ในหน่วยวัด ตัวอย่างเช่น แสดงข้อความแตกต่างเมื่อผู้ใช้กรองตามสี ปีงบประมาณ หรือสาขา หรือคำนวณวิธีต่างกันขึ้นอยู่กับว่าคอลัมน์ใดถูกกรอง
=ISFILTERED(<ColumnName>)
=ISFILTERED(<ColumnName>)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| ColumnName | column reference | Yes | ไม่มี – จำเป็นต้องระบุ | คอลัมน์ที่ต้องการตรวจสอบว่ามีตัวกรองโดยตรงหรือไม่ เช่น Product[Color], Date[Year], Territory[Region] |
ISFILTERED(Product[Color])=ISFILTERED(Product[Color])
TRUE (ถ้าผู้ใช้กรองตามสี) หรือ FALSE (ถ้าไม่มีการกรอง)
IF(ISFILTERED(Date[Year]), "Filtered by Year: " & MAX(Date[Year]), "All Years")=IF(ISFILTERED(Date[Year]), "Filtered by Year: " & MAX(Date[Year]), "All Years")
"Filtered by Year: 2024" (ถ้ากรองตามปี) หรือ "All Years" (ถ้าไม่กรอง)
IF(ISFILTERED(Territory[Region]), [Sales], CALCULATE([Sales], ALL(Territory[Region])))=IF(ISFILTERED(Territory[Region]), [Sales], CALCULATE([Sales], ALL(Territory[Region])))
ยอดขายของภูมิภาคที่กรอง (ถ้ากรอง) หรือยอดขายทั้งหมด (ถ้าไม่กรอง)
ISFILTERED ตรวจสอบว่าคอลัมน์ถูกกรองโดยตรง (Direct Filter) หรือไม่ เช่นผู้ใช้คลิกเลือกค่า ส่วน ISCROSSFILTERED ตรวจสอบว่าตารางถูกกรองทางอ้อม (Cross Filter) หรือไม่ เช่นกรองมาจากตารางที่เกี่ยวข้อง
ไม่ได้ ISFILTERED ใช้เฉพาะใน Measures เท่านั้น เพราะ Calculated Column ทำงานใน Row Context ที่ไม่มี Filter Context ถ้าใช้ใน Calculated Column จะเกิด Error หรือให้ผลไม่ถูกต้อง
หมายความว่าไม่มีตัวกรองโดยตรง (Direct Filter) ที่ใช้กับคอลัมน์นั้น อาจมี Cross Filter จากตารางอื่นอยู่ก็ได้ ถ้าต้องการตรวจสอบทั้งสอง ให้ใช้ ISCROSSFILTERED หรือ HASONEVALUE ด้วย
ใช้เพื่อสร้าง Dynamic Content ที่เปลี่ยนแปลงตามการกรองของผู้ใช้ เช่น ซ่อน/แสดง Element, เปลี่ยนข้อความ, หรือเปลี่ยนแบบสูตร ตัวอย่างเช่น แสดง “Analyzing Q4 only” เมื่อผู้ใช้กรองตามไตรมาส
ISFILTERED