فروش لایسنس Power BI

با ما داده های خود را درک کنید تا برای آینده کسب و کارتان بهتر تصمیم گیری کنید.

تابع FILTER در DAX

تابع FILTER در DAX

تابع FILTER در Power BI

تابع FILTER در Power BI برای استخراج زیرمجموعه‌ای از ردیف‌های یک جدول استفاده می‌شود که با یک شرط منطقی خاص مطابقت دارند. این تابع معمولاً در ترکیب با توابعی مانند CALCULATE، SUMX، و COUNTROWS به‌کار می‌رود.

تعریف تابع FILTER

DAX
FILTER(<table>, <filter_expression>)
  • table: جدولی که می‌خواهید فیلتر شود (می‌تواند یک جدول واقعی یا حاصل یک عبارت باشد).
  • filter_expression: شرطی منطقی که برای هر ردیف از جدول ارزیابی می‌شود (مانند [Amount] > 100000 یا [Region] = "Tehran").

 عملکرد چگونه است؟

تابع FILTER یک جدول جدید تولید می‌کند که فقط شامل ردیف‌هایی است که شرط مشخص‌شده در filter_expression را برآورده می‌کنند. این تابع در زمینه Row Context عمل می‌کند و برای ساخت محاسبات پویا و دقیق بسیار کاربردی است.

✅ مثال ساده

فرض کنید می‌خواهید مجموع فروش‌هایی را محاسبه کنید که مبلغ آن‌ها بیشتر از 100٬000 تومان باشد:

DAX
HighValueSales :=
CALCULATE(
    SUM(Sales[Amount]),
    FILTER(Sales, Sales[Amount] > 100000)
)

در این مثال، فقط ردیف‌هایی از جدول Sales که مقدار Amount آن‌ها بیشتر از 100٬000 است در محاسبه لحاظ می‌شوند.

مثالی دیگر

مثال زیر با استفاده از معیاری که فروش در ایالات متحده را فیلتر می‌کند و سپس بر اساس سال تقویمی و دسته‌های محصول، گزارشی از فروش اینترنتی خارج از ایالات متحده ایجاد می‌کند. برای ایجاد این معیار، جدول فروش اینترنتی به دلار آمریکا را با استفاده از Sales Territory فیلتر می‌کنید و سپس از جدول فیلتر شده در یک تابع SUMX استفاده می‌کنید.

در این مثال، عبارت:

DAX
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
DAX
SUMX(FILTER('InternetSales_USD', RELATED('SalesTerritory'[SalesTerritoryCountry])<>"United States")
     ,'InternetSales_USD'[SalesAmount_USD])

 کاربردهای رایج

  • اعمال فیلترهای پیچیده روی جدول‌ها
  • ساخت معیارهای سفارشی با چند شرط
  • استفاده در توابع پیمایشی مانند SUMX, AVERAGEX, COUNTROWS
  • ترکیب با توابعی مانند CALCULATE برای کنترل زمینه فیلتر

مثال پیشرفته: شمارش مشتریانی که در سال 2025 خرید کرده‌اند

DAX
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

میتوانید پاور بی آی دسکتاپ رایگان را دانلود کنید : Power BI desktop download

 

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا