تابع FILTER در Power BI
تابع FILTER در Power BI برای استخراج زیرمجموعهای از ردیفهای یک جدول استفاده میشود که با یک شرط منطقی خاص مطابقت دارند. این تابع معمولاً در ترکیب با توابعی مانند CALCULATE، SUMX، و COUNTROWS بهکار میرود.
تعریف تابع FILTER
FILTER(<table>, <filter_expression>)
- table: جدولی که میخواهید فیلتر شود (میتواند یک جدول واقعی یا حاصل یک عبارت باشد).
- filter_expression: شرطی منطقی که برای هر ردیف از جدول ارزیابی میشود (مانند
[Amount] > 100000یا[Region] = "Tehran").
عملکرد چگونه است؟
تابع FILTER یک جدول جدید تولید میکند که فقط شامل ردیفهایی است که شرط مشخصشده در filter_expression را برآورده میکنند. این تابع در زمینه Row Context عمل میکند و برای ساخت محاسبات پویا و دقیق بسیار کاربردی است.
✅ مثال ساده
فرض کنید میخواهید مجموع فروشهایی را محاسبه کنید که مبلغ آنها بیشتر از 100٬000 تومان باشد:
HighValueSales :=
CALCULATE(
SUM(Sales[Amount]),
FILTER(Sales, Sales[Amount] > 100000)
)
در این مثال، فقط ردیفهایی از جدول Sales که مقدار Amount آنها بیشتر از 100٬000 است در محاسبه لحاظ میشوند.
مثالی دیگر
مثال زیر با استفاده از معیاری که فروش در ایالات متحده را فیلتر میکند و سپس بر اساس سال تقویمی و دستههای محصول، گزارشی از فروش اینترنتی خارج از ایالات متحده ایجاد میکند. برای ایجاد این معیار، جدول فروش اینترنتی به دلار آمریکا را با استفاده از Sales Territory فیلتر میکنید و سپس از جدول فیلتر شده در یک تابع SUMX استفاده میکنید.
در این مثال، عبارت:
FILTER('InternetSales_USD', RELATED('SalesTerritory'[SalesTerritoryCountry])<>"United States")
جدولی را برمیگرداند که زیرمجموعهای از فروش اینترنتی منهای تمام ردیفهایی است که متعلق به قلمرو فروش ایالات متحده هستند. تابع RELATED کلید Territory در جدول فروش اینترنتی را به SalesTerritoryCountry در جدول SalesTerritory پیوند میدهد.
جدول زیر اثبات مفهوم معیار، فروش اینترنتی غیر آمریکایی، را نشان میدهد که فرمول آن در بخش کد زیر ارائه شده است. این جدول تمام فروشهای اینترنتی را با فروشهای اینترنتی غیر آمریکایی مقایسه میکند تا نشان دهد که عبارت فیلتر با حذف فروش ایالات متحده از محاسبه کار میکند.
برای ایجاد مجدد این جدول، فیلد SalesTerritoryCountry را به قسمت برچسبهای ردیف یک گزارش یا PivotTable اضافه کنید.
جدول ۱. مقایسه کل فروش برای ایالات متحده در مقابل سایر مناطق
| Row Labels | Internet Sales | Non USA Internet Sales |
|---|---|---|
| Australia | $4,999,021.84 | $4,999,021.84 |
| Canada | $1,343,109.10 | $1,343,109.10 |
| France | $2,490,944.57 | $2,490,944.57 |
| Germany | $2,775,195.60 | $2,775,195.60 |
| United Kingdom | $5,057,076.55 | $5,057,076.55 |
| United States | $9,389,479.79 | |
| Grand Total | $26,054,827.45 | $16,665,347.67 |
جدول گزارش نهایی، نتایج ایجاد یک PivotTable با استفاده از معیار «فروش اینترنتی در کشورهای غیر آمریکایی» را نشان میدهد. فیلد «سال تقویمی» را به قسمت «برچسبهای ردیف» PivotTable و فیلد «نام دسته محصول» را به قسمت «برچسبهای ستون» اضافه کنید.
جدول ۲. مقایسه فروش در کشورهای غیر آمریکایی بر اساس دستهبندی محصولات
| Row Labels | Accessories | Bikes | Clothing | Grand Total |
|---|---|---|---|---|
| 2005 | $1,526,481.95 | $1,526,481.95 | ||
| 2006 | $3,554,744.04 | $3,554,744.04 | ||
| 2007 | $156,480.18 | $5,640,106.05 | $70,142.77 | $5,866,729.00 |
| 2008 | $228,159.45 | $5,386,558.19 | $102,675.04 | $5,717,392.68 |
| Grand Total | $384,639.63 | $16,107,890.23 | $172,817.81 | $16,665,347.67 |
SUMX(FILTER('InternetSales_USD', RELATED('SalesTerritory'[SalesTerritoryCountry])<>"United States")
,'InternetSales_USD'[SalesAmount_USD])
کاربردهای رایج
- اعمال فیلترهای پیچیده روی جدولها
- ساخت معیارهای سفارشی با چند شرط
- استفاده در توابع پیمایشی مانند
SUMX,AVERAGEX,COUNTROWS - ترکیب با توابعی مانند
CALCULATEبرای کنترل زمینه فیلتر
مثال پیشرفته: شمارش مشتریانی که در سال 2025 خرید کردهاند
Customers2025 :=
CALCULATE(
COUNTROWS(Customers),
FILTER(
Sales,
YEAR(Sales[Date]) = 2025
)
)
در این مثال، فقط ردیفهایی از جدول Sales که مربوط به سال 2025 هستند در محاسبه لحاظ میشوند.
⚠️ نکات مهم
FILTERهمیشه یک جدول بازمیگرداند، نه مقدار عددی.- برای استفاده از آن در محاسبات عددی، باید با توابعی مانند
SUMX,CALCULATE,COUNTROWSترکیب شود. - استفاده نادرست از
FILTERممکن است باعث کاهش عملکرد شود؛ بهویژه در مدلهای بزرگ.
ملاحضات
- شما میتوانید از FILTER برای کاهش تعداد ردیفهای جدولی که با آن کار میکنید استفاده کنید و فقط از دادههای خاص در محاسبات استفاده کنید. FILTER به طور مستقل استفاده نمیشود، بلکه به عنوان تابعی است که در توابع دیگری که به جدول به عنوان آرگومان نیاز دارند، تعبیه شده است.
- برای بهترین شیوهها هنگام استفاده از FILTER، به اجتناب از استفاده از FILTER به عنوان آرگومان فیلتر مراجعه کنید.
از COUNTROWS به جای COUNT در DAX استفاده کنید.
- این تابع برای استفاده در حالت DirectQuery هنگام استفاده در ستونهای محاسبه شده یا قوانین امنیتی سطح ردیف (RLS) پشتیبانی نمیشود.
برای خرید لایسنس نرم افزار Power BI ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.
میتوانید پاور بی آی دسکتاپ رایگان را دانلود کنید : Power BI desktop download
