تابع ALLCROSSFILTERED در Power BI
تابع ALLCROSSFILTERED در زبان DAX یکی از توابع تخصصی برای کنترل زمینه فیلتر (Filter Context) در Power BI است. این تابع به شما اجازه میدهد تا تمام فیلترهایی که از طریق روابط بین جداول (چه مستقیم، چه غیرمستقیم یا دوطرفه) روی یک جدول اعمال شدهاند را حذف کنید، بدون اینکه خود جدول یا مقادیر آن را بازگرداند.
تعریف تابع ALLCROSSFILTERED
ALLCROSSFILTERED(<table>)
- <table>: نام جدولی که میخواهید فیلترهای اعمالشده از طریق روابط آن حذف شوند.
عملکرد چگونه است؟
در مدل دادهای Power BI، فیلترها میتوانند از طریق روابط بین جداول منتقل شوند. این روابط ممکن است:
- یکطرفه یا دوطرفه باشند
- مستقیم یا غیرمستقیم باشند
- از طریق روابط ضعیف (weak relationships) منتقل شوند
تابع ALLCROSSFILTERED تمام این فیلترهای منتقلشده را غیرفعال میکند، اما برخلاف ALL، خود جدول را بازنمیگرداند.
✅ مثال اول
فرض کنید جدول Sales از طریق روابطی با جداول دیگر مانند Customers یا Products فیلتر شده است. حالا میخواهید مجموع فروش را بدون تأثیر این فیلترها محاسبه کنید:
TotalSalesNoCrossFilters =
CALCULATE(
SUM(Sales[Amount]),
ALLCROSSFILTERED(Sales)
)
در این مثال، فیلترهایی که از طریق روابط به جدول Sales رسیدهاند حذف میشوند، اما فیلترهای مستقیم روی خود Sales باقی میمانند.
✅ مثال دوم
DEFINE
MEASURE FactInternetSales[TotalQuantity1] =
CALCULATE(SUM(FactInternetSales[OrderQuantity]), ALLCROSSFILTERED(FactInternetSales))
MEASURE FactInternetSales[TotalQuantity2] =
CALCULATE(SUM(FactInternetSales[OrderQuantity]), ALL(FactInternetSales))
EVALUATE
SUMMARIZECOLUMNS(DimSalesReason[SalesReasonName],
"TotalQuantity1", [TotalQuantity1],
"TotalQuantity2", [TotalQuantity2])
ORDER BY DimSalesReason[SalesReasonName]
بازگشتها،
| DimSalesReason[SalesReasonName] | [TotalQuantity1] | [TotalQuantity2] |
|---|---|---|
| Demo Event | 60398 | |
| Magazine Advertisement | 60398 | |
| Manufacturer | 60398 | 1818 |
| On Promotion | 60398 | 7390 |
| Other | 60398 | 3653 |
| Price | 60398 | 47733 |
| Quality | 60398 | 1551 |
| Review | 60398 | 1640 |
| Sponsorship | 60398 | |
| Television Advertisement | 60398 | 730 |
نکته: یک رابطه چند به چند مستقیم یا غیرمستقیم بین جدول FactInternetSales و جدول DimSalesReason وجود دارد.
تفاوت با توابع مشابه
| تابع | عملکرد |
|---|---|
ALL |
حذف فیلترها و بازگرداندن جدول یا مقادیر |
REMOVEFILTERS |
حذف فیلترها بدون بازگرداندن جدول |
ALLCROSSFILTERED |
حذف فیلترهای منتقلشده از طریق روابط، بدون بازگرداندن جدول |
کاربردهای رایج
- جلوگیری از تأثیر فیلترهای غیرمستقیم در محاسبات حساس
- کنترل دقیقتر زمینه فیلتر در مدلهای پیچیده با روابط چندگانه
- ساخت معیارهایی که فقط به فیلترهای مستقیم وابسته باشند
⚠️ نکات مهم
- این تابع فقط در توابعی مانند
CALCULATE,CALCULATETABLEقابل استفاده است. - در حالت DirectQuery، در ستونهای محاسبهشده یا قوانین امنیت سطح ردیف (RLS) پشتیبانی نمیشود.
- اگر جدول ورودی فیلتر مستقیم نداشته باشد، نتیجه مشابه
REMOVEFILTERSخواهد بود.
ملاحضات
- ALLCROSSFILTERED فقط میتواند برای پاک کردن فیلترها استفاده شود، اما نمیتواند جدول را برگرداند.
- این تابع برای استفاده در حالت DirectQuery، هنگام استفاده در ستونهای محاسبهشده یا قوانین امنیتی سطح ردیف (RLS) پشتیبانی نمیشود.
برای خرید لایسنس نرم افزار Power BI ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.
میتوانید پاور بی آی دسکتاپ رایگان را دانلود کنید : Power BI desktop download
