مقایسه ستون محاسباتی و measure
ستون محاسباتی به ازای هر ردیف جدول حساب می شود و نتیجه در سلول آن ردیف قرار می گیرد. به این حالت اصطلاحاً row context می گویند یعنی محاسبات سطر به سطر انجام می شود.
ستون محاسباتی از Ram فضا میگیرد برای اینکه دیتای خود را نگهداری کند.
ستون محاسباتی filter context را به خوبی متوجه نمی شود.
Measure می تواند filter tontext را متوجه شود.
Filter context مجموعه ای از فیلترها که برروی محاسبات یک مژر اعمال می شود.
به تمامی فیلترهای صفحه و فیلترهای موجود در نوار filters و فیلترهایی که در کد مژر نوشته شده filter context می گویند که روی مژر تاثیر می گذارد.
Measure ذاتا بصورت داینامیک می باشد یعنی در لحظه با توجه به فیلترها در ویژوال حساب می شود.
Measure از cpu استفاده می کند و ram زیادی استفاده نمی کند.
در درس گذشته یک ستون محاسباتی بنام SaleAndTax ساختیم که دو ستون sale و tax را با هم جمع میکرد. در اینجا همین کار را با طراحی measure و با استفاده از تابع sumx انجام می دهیم.
برای مقایسه این دو روش از ویژوال table استفاده کرده و در value این دو مقدار را قرار می دهیم. همانطور که می بینید نتیجه هر دو یکسان است اما نحوه محاسبات اینها با یکدیگر متفاوت می باشد. در ستون وسط که توسط مژر انجام شده محاسبات هفت بار انجام شده ( در قسمت total مژر یکبار دیگر محاسبه می شود )، ولی در ستون سوم که توسط ستون محاسباتی انجام شده تعداد دفعات محاسبات خیلی زیاد می باشد چون برای هر کشور باید برای همه رکوردها محاسبات را انجام دهد. بنابراین استفاده از مژر باعث می شود محاسبات در زمان کمتری انجام شود.
بنابراین زمانی که می خواهید محاسباتی نظیر sum و average انجام دهید بهتر است از measure استفاده کنید. زمانی از ستون محاسباتی استفاده کنید که می خواهید از نتایج تولید شده در آن ستون محاسباتی بخواهید در اسلایسر از آن استفاده کنید یعنی بهتر است ستون محاسباتی متنی باشد که بتوانید از آن ستون در اسلایسر استفاده کنید.
برای مثال در جدول DimProduct یک ستون محاسباتی ایجاد می کنیم که همه محصولات را از لحاظ رنگ به سه دسته شاد، روشن و تیره تقسیم کنیم. برای نوشتن شرط داخل زبان Dax از تابع switch استفاده می کنیم.
در switch باید یک عبارت بنویسید اگر این عبارت مقدار یک را تولید کرد تابع هم نتیجه یک را برمیگرداند، اگر مقدار دو را تولید کرد تابع نتیجه دو را برمیگرداند و به همین ترتیب هر چند تا شرط که بخواهید می توانید اعمال کنید.
در این مثال چون چندین شرط را می خواهیم بررسی کنیم باید از switch true استفاده کنیم.
اگر رنگ برابر زرد بود یا رنگ برابر قرمز بود، نتیجه خروجی را رنگ شاد بنویس. ( رشته ها را درون ” ” بگذارید)
عملگر or که دو تا شرط می گیرد را با کارکتر || نشان می دهیم که اگر فقط یکی از شرطها برقرار باشد نتیجه true را برمیگرداند.
سپس شرطهای بعدی را بنویسید.
اگر رنگ برابر آبی یا سفید بود، نتیجه خروجی را رنگ روشن بنویس. و در غیر اینصورت نتیجه خروجی را “رنگ تیره” بنویس.
بنابراین توانستیم به کمک ستون محاسباتی یک ستون متنی با سه دسته بندی ایجاد کنیم که در اسلایسر مورد استفاده قرار دهیم.
بنابراین سعی کنید در محاسباتی که قرار است از جاهای مختلف فیلتر بگیرد از measure استفاده کنید و جاهایی که می خواهید مقادیری تولید کنید که در اسلایسر قرار دهید و از طریق آنها فیلتر کنید از ستون محاسباتی استفاده کنید.