تابع TREATAS در Power BI
تابع TREATAS در زبان DAX یکی از توابع پیشرفته و قدرتمند در Power BI است که برای اعمال فیلتر از یک جدول به جدول دیگر، حتی بدون وجود رابطه مستقیم بین آنها استفاده میشود. این تابع به شما اجازه میدهد تا مقدارهای یک ستون را بهعنوان فیلتر روی ستونی دیگر اعمال کنید، گویی که بین آنها رابطهای وجود دارد.
تعریف تابع TREATAS
TREATAS(<table>, <column1>[, <column2>]…)
- table: جدولی که شامل مقادیر فیلتر است.
- column1, column2, …: ستونهایی که میخواهید فیلتر روی آنها اعمال شود.
عملکرد چگونه است؟
تابع TREATAS مقادیر موجود در جدول اول را بهعنوان فیلتر روی ستونهای مشخصشده در جدول دوم اعمال میکند. این کار شبیه به ایجاد یک رابطه مجازی بین دو جدول است، بدون اینکه واقعاً در مدل دادهای رابطهای تعریف شود.
✅ مثال ساده
فرض کنید دو جدول دارید:
- جدول
Salesبا ستونProductID - جدول
TopProductsبا ستونProductIDکه فقط شامل محصولات پرفروش است
اکنون میخواهید مجموع فروش فقط برای محصولات موجود در TopProducts را محاسبه کنید:
TopProductSales =
CALCULATE(
SUM(Sales[Amount]),
TREATAS(TopProducts, Sales[ProductID])
)
در این مثال، مقادیر ProductID از جدول TopProducts بهعنوان فیلتر روی Sales[ProductID] اعمال میشود.
کاربردهای رایج
- اعمال فیلتر از جدول بدون رابطه به جدول دیگر
- ساخت KPIهای سفارشی بر اساس لیستهای خارجی یا فیلترهای پویا
- استفاده در سناریوهایی که روابط فیزیکی بین جداول امکانپذیر نیست
- ترکیب با توابعی مانند
SUMX,CALCULATE,FILTER
مثال پیشرفته: فیلتر کردن فروش بر اساس انتخاب کاربر در جدول جداگانه
فرض کنید کاربر در جدول SelectionTable یک سال خاص را انتخاب کرده است و شما میخواهید فروش آن سال را محاسبه کنید:
SalesBySelectedYear =
CALCULATE(
SUM(Sales[Amount]),
TREATAS(VALUES(SelectionTable[Year]), Sales[Year])
)
در این مثال، مقدار انتخابشده در جدول SelectionTable بهعنوان فیلتر روی ستون Sales[Year] اعمال میشود.
نکات مهم
- تعداد ستونهای جدول اول و دوم باید با هم برابر باشد.
- نوع داده ستونها باید با هم سازگار باشد.
- اگر مقادیر جدول اول با ستون مقصد مطابقت نداشته باشند، فیلتر اعمال نمیشود.
- این تابع فقط در توابعی مانند
CALCULATE,CALCULATETABLE,SUMXقابل استفاده است.
تفاوت TREATAS با USERELATIONSHIP و CROSSFILTER
| تابع | عملکرد |
|---|---|
TREATAS |
اعمال فیلتر از یک جدول به جدول دیگر بدون رابطه |
USERELATIONSHIP |
فعالسازی موقت یک رابطه غیرفعال |
CROSSFILTER |
تغییر جهت یا غیرفعالسازی رابطه موجود |
ملاحظات
- تعداد ستونهای مشخص شده باید با تعداد ستونهای عبارت جدول مطابقت داشته باشد و به یک ترتیب باشند.
- اگر مقداری که در عبارت جدول برگردانده میشود در ستون وجود نداشته باشد، نادیده گرفته میشود. برای مثال، TREATAS({“Red”, “Green”, “Yellow”}, DimProduct[Color]) یک فیلتر روی ستون DimProduct[Color] با سه مقدار “Red”, “Green” و “Yellow” تنظیم میکند. اگر “Yellow” در DimProduct[Color] وجود نداشته باشد، مقادیر فیلتر مؤثر “Red” و “Green” خواهند بود.
- بهترین زمان استفاده زمانی است که رابطهای بین جداول وجود ندارد. اگر چندین رابطه بین جداول مربوطه دارید، به جای آن از USERELATIONSHIP استفاده کنید.
- این تابع برای استفاده در حالت DirectQuery هنگام استفاده در ستونهای محاسبه شده یا قوانین امنیتی سطح ردیف (RLS) پشتیبانی نمیشود.
برای خرید لایسنس نرم افزار Power BI ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.
میتوانید پاور بی آی دسکتاپ رایگان را دانلود کنید : Power BI desktop download
