تابع TREATAS زبان DAX در POWER BI

این تابع وقتی بکار می رود که بخواهیم یک جدول را بر اساس جدولی دیگری که هیچ  relationship بین آنها وجود ندارند، فیلتر کنیم و به عبارت دیگر جدولی که هیچ رابطه‌ای با جدول ما را ندارد، به عنوان یکی از جداولی که در ربطه است، «جا بزنیم.» !

برای مثال در تصویر زیر هیچ رابطه‌ای بین جدول Product و user_category وجود ندارد و ما می‌خواهیم که مقادیر این جدول را به عنوان مقادیر جدول Category که واقعا با Product رابطه دارد، «جا بزنیم»!

 

تابع TREATAS

و حال می‌توانیم فرمول DAX زیر را به عنوان یک Dax Query بنویسیم:

EVALUATE
	CALCULATE(
		SUM(OrderDetail[Amount]),
		TREATAS(
			VALUES(user_category[category_name]),
			Category[Category Name]
		)
	)

و خواهیم دید که در نتیجه فقط مقادیری که در جدول user_category وجود دارد، برای ما فیلتر شده است.


استفاده از تابع TREATAS در MEASURE

حال می‌خواهیم که مقادیر user_category را به عنوان یک SLICER استفاده کنیم برای اینکار MEASURE زیر را می‌نویسیم:

Sum of selected user_category = 
	CALCULATE(
		SUM(OrderDetail[Amount]),
		TREATAS(
			VALUES(user_category[category_name]),
			Category[Category Name]
		)
	)

و این Measure را به شکل زیر در یک Visual خواهیم گذاشت:

تابع TREATAS

حل بدون استفاده از تابع TREATAS

توجه) ممکن است که کاربران تازه کار POWER BI در چنین سناریوهایی، بین جدول user_category و Product یک Relationship جدید ایجاد کنند و مسئله را بدون نیاز به تابع TREATAS حل کنند.

اگر چه این راهکار غلط نیست، اما در نهایت استفاده از این راهکار (یعنی ایجاد رابطه بین جداول) باعث پیچیده شدن Data Model خواهد شد که تلقی من این است تا حد ممکن باید Data Model را خلوت و قابل درک نگه داشت و برای هر مسائله‌ای اقدام به ایجاد یک رابطه جدید نکنید.

🩹 برچسب‌ها

به عنوان اولین نفر، تجربه یا دیدگاه خود را بنویسید!

محتوای این فیلد خصوصی است و به صورت عمومی نشان داده نخواهد شد.

متن ساده

  • تگ‌های HTML مجاز نیستند.
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.
کد امنیتی