تابع ALL در Power BI
تابع ALL در زبان DAX یکی از توابع مهم و پرکاربرد در Power BI است که برای حذف فیلترها و بازگرداندن تمام ردیفهای یک جدول یا تمام مقادیر یک ستون استفاده میشود. این تابع نقش کلیدی در کنترل زمینه فیلتر (Filter Context) دارد و معمولاً در محاسباتی مانند درصد سهم، مقایسه با کل، و تحلیلهای سطح بالا استفاده میشود.
تعریف تابع ALL
Syntax
ALL( [<table> | <column>[, <column>[, <column>[,…]]]] )
- اگر نام یک جدول را وارد کنید، تمام فیلترهای اعمالشده روی آن جدول حذف میشوند.
- اگر نام یک ستون را وارد کنید، فقط فیلترهای آن ستون حذف میشوند و تمام مقادیر منحصربهفرد آن ستون بازگردانده میشود.
عملکرد تابع چگونه است؟
تابع ALL زمینه فیلتر را بازنشانی میکند. یعنی اگر در گزارش یا معیار فیلترهایی اعمال شده باشند، این تابع آنها را نادیده میگیرد و دادهها را در سطح کلیتر بررسی میکند.
✅ مثال ساده
فرض کنید میخواهید مجموع فروش را بدون در نظر گرفتن فیلتر روی ستون منطقه (Region) محاسبه کنید:
TotalSalesAllRegions =
CALCULATE(
SUM(Sales[Amount]),
ALL(Sales[Region])
)
در این مثال، تابع ALL فیلترهای اعمالشده روی ستون Region را حذف میکند و مجموع فروش برای همه مناطق محاسبه میشود.
تفاوت ALL با REMOVEFILTERS
| تابع | عملکرد |
|---|---|
ALL |
حذف فیلترها و بازگرداندن تمام مقادیر منحصربهفرد |
REMOVEFILTERS |
فقط حذف فیلترها بدون بازگرداندن مقادیر |
کاربردهای رایج
- محاسبه درصد سهم از کل (مانند سهم فروش هر منطقه نسبت به کل کشور)
- ساخت معیارهای مقایسهای
- حذف فیلترهای گزارش برای محاسبه در سطح کلیتر
- استفاده در توابعی مانند
CALCULATE,SUMX,DIVIDE,FILTER
مثال پیشرفته: درصد فروش هر منطقه نسبت به کل
RegionSalesPercentage =
DIVIDE(
SUM(Sales[Amount]),
CALCULATE(
SUM(Sales[Amount]),
ALL(Sales[Region])
)
)
در این مثال، مقدار فروش هر منطقه بر مجموع فروش کل کشور تقسیم میشود تا درصد سهم منطقه محاسبه شود.
⚠️ نکات مهم
- تابع ALL فقط در توابعی مانند
CALCULATEیا توابع پیمایشی قابل استفاده است. - اگر روی جدول اعمال شود، تمام فیلترهای ستونهای آن جدول حذف میشود.
- اگر روی یک ستون اعمال شود، فقط فیلترهای آن ستون حذف میشود و مقادیر منحصربهفرد آن بازگردانده میشود.
ملاحضات
- این تابع به خودی خود استفاده نمیشود، بلکه به عنوان یک تابع واسطه عمل میکند که میتواند برای تغییر مجموعه نتایجی که محاسبات دیگری روی آنها انجام میشود، استفاده شود.
- رفتار عادی عبارات DAX حاوی تابع ALL() این است که هر فیلتر اعمال شده نادیده گرفته میشود. با این حال، برخی سناریوها وجود دارند که به دلیل auto-exist، که یک فناوری DAX است که فیلتر کردن را بهینه میکند تا میزان پردازش مورد نیاز برای برخی از پرسوجوهای DAX را کاهش دهد، این مورد صدق نمیکند. مثالی که auto-exist و ALL() نتایج غیرمنتظرهای ارائه میدهند، زمانی است که روی دو یا چند ستون از یک جدول یکسان فیلتر انجام میشود (مانند استفاده از slicers)، و یک معیار در همان جدول وجود دارد که از ALL() استفاده میکند. در این حالت، auto-exist چندین فیلتر را در یک فیلتر ادغام میکند و فقط روی ترکیبات موجود از مقادیر فیلتر میکند. به دلیل این ادغام، معیار روی ترکیبات موجود از مقادیر محاسبه میشود و نتیجه به جای تمام مقادیر مورد انتظار، بر اساس مقادیر فیلتر شده خواهد بود.
- جدول زیر نحوه استفاده از توابع ALL و ALLEXCEPT را در سناریوهای مختلف شرح میدهد.
تابع ALL
-
Function and usage توضیحات ALL() همه فیلترها را در همه جا حذف میکند. تابع ALL() فقط میتواند برای پاک کردن فیلترها استفاده شود، اما نمیتواند جدول را برگرداند. ALL(Table) تمام فیلترها را از جدول مشخص شده حذف میکند. در واقع، ALL(Table) تمام مقادیر موجود در جدول را برمیگرداند و هر فیلتری را از زمینهای که در غیر این صورت ممکن است اعمال شده باشد، حذف میکند. این تابع زمانی مفید است که با سطوح مختلف گروهبندی کار میکنید و میخواهید محاسبهای ایجاد کنید که نسبت یک مقدار تجمیع شده به کل مقدار را ایجاد کند. مثال اول این سناریو را نشان میدهد. ALL (Column[, Column[, …]]) تمام فیلترها را از ستونهای مشخصشده در جدول حذف میکند؛ تمام فیلترهای دیگر روی ستونهای دیگر جدول همچنان اعمال میشوند. تمام آرگومانهای ستون باید از همان جدول باشند. نوع ALL(Column) زمانی مفید است که میخواهید فیلترهای زمینه را برای یک یا چند ستون خاص حذف کنید و تمام فیلترهای زمینه دیگر را نگه دارید. مثالهای دوم و سوم این سناریو را نشان میدهند. ALLEXCEPT(Table, Column1 [,Column2]…) تمام فیلترهای زمینهای جدول را به جز فیلترهایی که روی ستونهای مشخصشده اعمال شدهاند، حذف میکند. این یک میانبر مناسب برای موقعیتهایی است که میخواهید فیلترها را روی بسیاری از ستونهای یک جدول، اما نه همه آنها، حذف کنید. - این تابع برای استفاده در حالت DirectQuery، هنگام استفاده در ستونهای محاسبهشده یا قوانین امنیتی سطح ردیف (RLS) پشتیبانی نمیشود.
برای خرید لایسنس نرم افزار Power BI ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.
میتوانید پاور بی آی دسکتاپ رایگان را دانلود کنید : Power BI desktop download
