تابع ALLSELECTED در Power BI
تابع ALLSELECTED در زبان DAX یکی از توابع مهم برای کنترل زمینه فیلتر (Filter Context) در Power BI است. این تابع به شما اجازه میدهد تا فیلترهای انتخابشده توسط کاربر در گزارش (مانند Slicerها یا Visualهای تعاملی) را حفظ کرده و از آنها در محاسبات استفاده کنید، حتی اگر فیلترهای دیگر در مدل وجود داشته باشند.
تعریف تابع ALLSELECTED
ALLSELECTED(<tableName or columnName>)
- اگر نام یک جدول را وارد کنید، تمام فیلترهای انتخابشده روی آن جدول حفظ میشوند.
- اگر نام یک ستون را وارد کنید، فقط فیلترهای انتخابشده روی آن ستون حفظ میشوند.
عملکرد چگونه است؟
در Power BI، کاربران میتوانند از طریق Slicerها یا Visualهای تعاملی، فیلترهایی را انتخاب کنند. تابع ALLSELECTED این فیلترهای انتخابشده را حفظ میکند و در محاسبات بهکار میبرد، در حالی که فیلترهای داخلی یا زمینهای دیگر ممکن است نادیده گرفته شوند.
✅ مثال ساده
فرض کنید میخواهید مجموع فروش را برای مقادیر انتخابشده در Slicer محاسبه کنید:
TotalSalesSelected =
CALCULATE(
SUM(Sales[Amount]),
ALLSELECTED(Sales[Region])
)
در این مثال، فقط فیلترهایی که کاربر از طریق Slicer روی ستون Region انتخاب کرده حفظ میشوند.
مثال کاربردی
define
measure 'Reseller Sales'[Reseller Sales Amount]=sum('Reseller Sales'[Sales Amount])
measure 'Reseller Sales'[Reseller Grand Total]=calculate(sum('Reseller Sales'[Sales Amount]), ALL('Reseller Sales'))
measure 'Reseller Sales'[Reseller Visual Total]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED())
measure 'Reseller Sales'[Reseller Visual Total for All of Calendar Year]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED('Date'[Calendar Year]))
measure 'Reseller Sales'[Reseller Visual Total for All of Product Category Name]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED('Product Category'[Product Category Name]))
evaluate
CalculateTable(
//CT table expression
summarize(
//summarize table expression
crossjoin(distinct('Product Category'[Product Category Name]), distinct('Date'[Calendar Year]))
//First Group by expression
, 'Product Category'[Product Category Name]
//Second Group by expression
, 'Date'[Calendar Year]
//Summary expressions
, "Reseller Sales Amount", [Reseller Sales Amount]
, "Reseller Grand Total", [Reseller Grand Total]
, "Reseller Visual Total", [Reseller Visual Total]
, "Reseller Visual Total for All of Calendar Year", [Reseller Visual Total for All of Calendar Year]
, "Reseller Visual Total for All of Product Category Name", [Reseller Visual Total for All of Product Category Name]
)
//CT filters
, 'Sales Territory'[Sales Territory Group]="Europe", 'Promotion'[Promotion Type]="Volume Discount"
)
order by [Product Category Name], [Calendar Year]
ALLSELECTED
پس از اجرای عبارت فوق در SQL Server Management Studio در برابر AdventureWorks DW Tabular Model، نتایج زیر به دست میآید:
| [Product Category Name] | [Calendar Year] | [Reseller Sales Amount] | [Reseller Grand Total] | [Reseller Visual Total] | [Reseller Visual Total for All of Calendar Year] | [Reseller Visual Total for All of Product Category Name] |
|---|---|---|---|---|---|---|
| Accessories | 2000 | 80450596.9823 | 877006.7987 | 38786.018 | ||
| Accessories | 2001 | 80450596.9823 | 877006.7987 | 38786.018 | ||
| Accessories | 2002 | 625.7933 | 80450596.9823 | 877006.7987 | 38786.018 | 91495.3104 |
| Accessories | 2003 | 26037.3132 | 80450596.9823 | 877006.7987 | 38786.018 | 572927.0136 |
| Accessories | 2004 | 12122.9115 | 80450596.9823 | 877006.7987 | 38786.018 | 212584.4747 |
| Accessories | 2005 | 80450596.9823 | 877006.7987 | 38786.018 | ||
| Accessories | 2006 | 80450596.9823 | 877006.7987 | 38786.018 | ||
| Bikes | 2000 | 80450596.9823 | 877006.7987 | 689287.7939 | ||
| Bikes | 2001 | 80450596.9823 | 877006.7987 | 689287.7939 | ||
| Bikes | 2002 | 73778.938 | 80450596.9823 | 877006.7987 | 689287.7939 | 91495.3104 |
| Bikes | 2003 | 439771.4136 | 80450596.9823 | 877006.7987 | 689287.7939 | 572927.0136 |
| Bikes | 2004 | 175737.4423 | 80450596.9823 | 877006.7987 | 689287.7939 | 212584.4747 |
| Bikes | 2005 | 80450596.9823 | 877006.7987 | 689287.7939 | ||
| Bikes | 2006 | 80450596.9823 | 877006.7987 | 689287.7939 | ||
| Clothing | 2000 | 80450596.9823 | 877006.7987 | 95090.7757 | ||
| Clothing | 2001 | 80450596.9823 | 877006.7987 | 95090.7757 | ||
| Clothing | 2002 | 12132.4334 | 80450596.9823 | 877006.7987 | 95090.7757 | 91495.3104 |
| Clothing | 2003 | 58234.2214 | 80450596.9823 | 877006.7987 | 95090.7757 | 572927.0136 |
| Clothing | 2004 | 24724.1209 | 80450596.9823 | 877006.7987 | 95090.7757 | 212584.4747 |
| Clothing | 2005 | 80450596.9823 | 877006.7987 | 95090.7757 | ||
| Clothing | 2006 | 80450596.9823 | 877006.7987 | 95090.7757 | ||
| Components | 2000 | 80450596.9823 | 877006.7987 | 53842.2111 | ||
| Components | 2001 | 80450596.9823 | 877006.7987 | 53842.2111 | ||
| Components | 2002 | 4958.1457 | 80450596.9823 | 877006.7987 | 53842.2111 | 91495.3104 |
| Components | 2003 | 48884.0654 | 80450596.9823 | 877006.7987 | 53842.2111 | 572927.0136 |
| Components | 2004 | 80450596.9823 | 877006.7987 | 53842.2111 | 212584.4747 | |
| Components | 2005 | 80450596.9823 | 877006.7987 | 53842.2111 | ||
| Components | 2006 | 80450596.9823 | 877006.7987 | 53842.2111 |
تابع ALLSELECTED
ستونهای گزارش عبارتند از:
- مبلغ فروش نمایندگی فروش
ارزش واقعی فروش نمایندگی فروش برای سال و دسته بندی محصول. این مقدار در سلولی در مرکز گزارش شما، در تقاطع سال و دسته بندی محصول نمایش داده میشود.
- جمع بصری نمایندگی فروش برای کل سال تقویمی
ارزش کل برای یک دسته بندی محصول در تمام سالها. این مقدار در انتهای یک ستون یا ردیف برای یک دسته بندی محصول مشخص و در تمام سالهای گزارش نمایش داده میشود.
- جمع بصری نمایندگی فروش برای کل نام دسته بندی محصول
ارزش کل برای یک سال در تمام دسته بندیهای محصول. این مقدار در انتهای یک ستون یا ردیف برای یک سال مشخص و در تمام دسته بندیهای محصول در گزارش نمایش داده میشود.
- جمع بصری نمایندگی فروش
ارزش کل برای تمام سالها و دسته بندیهای محصول. این مقدار معمولاً در گوشه پایین سمت راست جدول نمایش داده میشود.
- جمع کل نمایندگی فروش
این مجموع کل برای تمام فروشهای نمایندگی فروش، قبل از اعمال هرگونه فیلتر است. شما باید تفاوت را با [جمع بصری نمایندگی فروش] متوجه شوید. به یاد دارید که این گزارش شامل دو (2) فیلتر است، یکی روی گروه دستهبندی محصولات و دیگری روی نوع تبلیغات.
توجه : اگر فیلترهای صریحی در عبارت خود دارید، آن فیلترها روی عبارت نیز اعمال میشوند.
کاربردهای رایج
- محاسبه درصد سهم از مقادیر انتخابشده توسط کاربر
- ساخت معیارهای پویا بر اساس انتخابهای گزارش
- تحلیل دادهها در سطح انتخابشده، نه کل داده یا زمینه فیلتر فعلی
مثال پیشرفته: درصد فروش هر محصول نسبت به مجموع فروش محصولات انتخابشده
ProductSalesPercentage =
DIVIDE(
SUM(Sales[Amount]),
CALCULATE(
SUM(Sales[Amount]),
ALLSELECTED(Products[ProductName])
)
)
در این مثال، مجموع فروش محصول بر مجموع فروش محصولات انتخابشده توسط کاربر تقسیم میشود.
⚠️ نکات مهم
ALLSELECTEDفقط فیلترهای انتخابشده توسط کاربر را حفظ میکند، نه فیلترهای زمینهای یا داخلی.- این تابع معمولاً در ترکیب با
CALCULATE,SUMX,DIVIDEاستفاده میشود. - در Visualهایی که هیچ انتخابی انجام نشده باشد،
ALLSELECTEDمانندALLعمل میکند.
ملاحضات
- اگر یک آرگومان وجود داشته باشد، آرگومان یا tableName یا columnName است. اگر بیش از یک آرگومان وجود داشته باشد، باید ستونهایی از یک جدول باشند.
- این تابع با ALL() متفاوت است زیرا تمام فیلترهایی را که به صراحت در پرسوجو تنظیم شدهاند، حفظ میکند و تمام فیلترهای زمینه را به غیر از فیلترهای سطر و ستون حفظ میکند.
- این تابع برای استفاده در حالت DirectQuery هنگام استفاده در ستونهای محاسبهشده یا قوانین امنیتی سطح سطر (RLS) پشتیبانی نمیشود.
برای خرید لایسنس نرم افزار Power BI ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.
میتوانید پاور بی آی دسکتاپ رایگان را دانلود کنید : Power BI desktop download
