DAX، Power BI، ALL، ALLSELECTED، ALLEXCEPT، Filter Context، Measure، KPI، گزارش مدیریتی، تحلیل داده،DAX, Power BI, ALL, ALLSELECTED, ALLEXCEPT, Filter Context, Measure, KPI, تحلیل داده, آموزش Power BI

در دنیای Power BI و DAX، مدیریت فیلترها و Filter Context یکی از اصول حیاتی برای ساخت گزارش‌های دقیق و پویا است. توابع ALL÷، ALLSELECTED و ALLEXCEPT ابزارهای کلیدی در کنترل زمینه فیلتر هستند و استفاده صحیح از آنها می‌تواند به شما امکان دهد گزارش‌های تحلیلی و KPIهای حرفه‌ای بسازید.

در این مقاله، این سه تابع را به طور کامل بررسی می‌کنیم، تفاوت‌ها و کاربردهای آنها را تحلیل می‌کنیم، با مثال‌های عملی نحوه استفاده از آنها را نشان می‌دهیم و بهترین روش‌ها برای بهره‌گیری از آنها را ارائه می‌کنیم.

اهمیت مدیریت فیلتر در DAX

قبل از بررسی توابع، باید بدانیم Filter Context چیست:

  • Filter Context تعیین می‌کند که چه داده‌ای در یک محاسبه DAX استفاده شود.
  • بدون کنترل مناسب، محاسبات ممکن است غیر دقیق یا گمراه‌کننده باشند.
  • توابع ALL، ALLSELECTED و ALLEXCEPT به شما امکان می‌دهند سطح فیلترها را تغییر دهید یا بازنویسی کنید تا نتایج Measureها دقیق و قابل اعتماد باشند.

تابع ALL

تعریف و کاربرد

تابع ALL فیلترهای موجود روی یک جدول یا ستون را حذف می‌کند.

Syntax

ALL(<table_or_column>)

کاربردها

  1. محاسبه مجموع کل بدون فیلتر
  2. بازنویسی Filter Context در CALCULATE
  3. مقایسه مقدار فیلتر شده با مقدار کل

مثال عملی÷

TotalSales := SUM(Sales[SalesAmount])

PercentOfTotal :=
DIVIDE(
    SUM(Sales[SalesAmount]),
    CALCULATE(SUM(Sales[SalesAmount]), ALL(Sales[Product]))
)
  • ALL(Sales[Product]) فیلتر ستون Product را نادیده می‌گیرد.
  • نتیجه: هر محصول بر اساس کل فروش مقایسه می‌شود.

تابع ALLSELECTED

تعریف و کاربرد

تابع ALLSELECTED فیلترهای انتخاب شده توسط کاربر (مثلاً Slicer) را حفظ می‌کند و فقط فیلترهای داخل Measure را نادیده می‌گیرد.

Syntax

ALLSELECTED(<table_or_column>)

کاربردها

  1. نمایش درصد سهم در محدوده انتخابی کاربر
  2. ایجاد Measure پویا بر اساس انتخاب کاربر

مثال عملی

PercentOfSelected :=
DIVIDE(
    SUM(Sales[SalesAmount]),
    CALCULATE(SUM(Sales[SalesAmount]), ALLSELECTED(Sales[Product]))
)

تفاوت با ALL

  • ALL تمام فیلترها را حذف می‌کند.
  • ALLSELECTED فقط فیلترهای انتخاب کاربر را حفظ می‌کند.

تابع ALLEXCEPT

تعریف و کاربرد

تابع ALLEXCEPT تمام فیلترها را حذف می‌کند به جز ستون‌هایی که مشخص کرده‌ایم.

Syntax

ALLEXCEPT(<table>, <column1>, [<column2>], ...)

کاربردها

  1. محاسبه مجموع یا میانگین با حفظ فیلتر یک یا چند ستون
  2. حذف فیلترهای غیرضروری و تمرکز روی ستون‌های کلیدی

مثال عملی

TotalSalesByRegion :=
CALCULATE(
    SUM(Sales[SalesAmount]),
    ALLEXCEPT(Sales, Sales[Region])
)
  • فیلترهای دیگر حذف می‌شوند.
  • فقط فیلتر Region حفظ می‌شود.

جدول مقایسه پیشرفته

ویژگی / سناریوALLALLSELECTEDALLEXCEPT
حذف همه فیلترها✅ (غیر از انتخاب کاربر)
حفظ انتخاب کاربر
حفظ فیلتر ستون خاص
استفاده در CALCULATE
کاربرد در درصد سهم
کاربرد در Rank
مناسب KPI پویا
پیچیدگی کدنویسیکممتوسطمتوسط
عملکرد در مدل‌های بزرگعالیخوبخوب

سناریوهای عملی

مثال ۱: درصد سهم محصول از کل فروش (ALL)

PercentOfTotal :=
DIVIDE(
    SUM(Sales[SalesAmount]),
    CALCULATE(SUM(Sales[SalesAmount]), ALL(Sales[Product]))
)

مثال ۲: درصد سهم محصول در بازه انتخابی کاربر (ALLSELECTED)

PercentOfSelected :=
DIVIDE(
    SUM(Sales[SalesAmount]),
    CALCULATE(SUM(Sales[SalesAmount]), ALLSELECTED(Sales[Product]))
)

مثال ۳: مجموع فروش هر محصول در همان Region (ALLEXCEPT)

TotalSalesByRegion :=
CALCULATE(
    SUM(Sales[SalesAmount]),
    ALLEXCEPT(Sales, Sales[Region])
)

مثال ۴: رتبه محصولات بر اساس فروش کل (ALL)

ProductRank :=
RANKX(
    ALL(Sales[Product]),
    SUM(Sales[SalesAmount]),
    ,
    DESC,
    Skip
)

مثال ۵: رتبه محصولات در بازه انتخابی کاربر (ALLSELECTED)

ProductRankSelected :=
RANKX(
    ALLSELECTED(Sales[Product]),
    SUM(Sales[SalesAmount]),
    ,
    DESC,
    Skip
)

مثال ۶: درصد سهم فروش هر Region نسبت به کل Region (ALL)

PercentOfRegion :=
DIVIDE(
    SUM(Sales[SalesAmount]),
    CALCULATE(SUM(Sales[SalesAmount]), ALL(Sales[Region]))
)

مثال ۷: درصد سهم فروش Region در بازه انتخابی کاربر (ALLSELECTED)

PercentOfRegionSelected :=
DIVIDE(
    SUM(Sales[SalesAmount]),
    CALCULATE(SUM(Sales[SalesAmount]), ALLSELECTED(Sales[Region]))
)

نکات کلیدی برای تحلیل حرفه‌ای

  1. ALL: مناسب محاسبات کل (Global)
  2. ALLSELECTED: تعامل با انتخاب کاربر و Slicer
  3. ALLEXCEPT: حفظ ستون‌های کلیدی و حذف فیلترهای اضافی
  4. ترکیب توابع با CALCULATE ،DIVIDE و RANKX برای KPI و درصد سهم
  5. مستندسازی دقیق Measureها برای جلوگیری از خطا
  6. تست عملکرد در مدل‌های بزرگ ضروری است

معایب و محدودیت‌ها

  • استفاده بیش از حد از ALLSELECTED ممکن است باعث کاهش عملکرد شود
  • ALLEXCEPT اگر ستون‌های کلیدی اشتباه انتخاب شوند، نتایج اشتباه ایجاد می‌کند
  • پیچیدگی Measureها در مدل‌های بزرگ افزایش می‌یابد

سوالات متداول (FAQ)

۱. تفاوت ALL و ALLSELECTED چیست؟

ALL همه فیلترها را حذف می‌کند، ALLSELECTED فیلترهای انتخاب کاربر را حفظ می‌کند.

۲. کاربرد ALLEXCEPT چیست؟

حذف فیلترها ولی حفظ ستون یا ستون‌های مشخص

۳. استفاده از این توابع باعث کاهش سرعت می‌شود؟

در مدل‌های بزرگ، استفاده نادرست ممکن است سرعت را کاهش دهد.

۴. آیا در Excel Power Pivot هم قابل استفاده است؟

بله، تمام توابع اصلی DAX در Power Pivot پشتیبانی می‌شوند.

پیشنهاد مطالعه

  1. مرجع زبان DAX افزونه کوئری نویسی در اکسل و POWER BI
  2. مرجع زبان فرمول نویسی M در پاور کوئری
  3. طراحی داشبوردهای مدیریتی در Microsoft Power BI

تماس و مشاوره با لاندا

مدل‌سازی داده‌های حرفه‌ای با Power BI، اگر می‌خواهید گزارش‌های دقیق، پویا و قابل اعتماد بسازید و از تمام قابلیت‌های ALL، ALLSELECTED و ALLEXCEPT استفاده کنید، همین حالا با تیم توسعه فناوری اطلاعات لاندا تماس  با لاندا بگیرید:

  • طراحی مدل داده حرفه‌ای و پویا
  • آموزش عملی و کاربردی توابع DAX
  • مشاوره و پیاده‌سازی پروژه‌های Power BI

نظری داده نشده

دیدگاهتان را بنویسید

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