تابع Calculate
زمانی که در محاسبات measure شرط دارید باید از تابع Calculate استفاده کنید. و زمانی که در محاسبات calculated table شرط داریم باید از تابع CalculateTable استفده کنید.
در مثال زیر یک ستون محاسباتی ایجاد می کنیم و محاسبات جمع ستون saleamount را برای محصولات قرمز رنگ انجام بد. در ستون محاسباتی ایجاد شده فقط ردیف هایی مقدار دارد که رنگ کالا قرمز است.
![]()
حالا یک مژر ایجاد می کنیم با همین عملیات و با همان کد قبلی:
![]()
حالا هر دو نوع محاسبات را در یک ویژوال table قرار می دهیم تا با هم مقایسه کنیم. و می بینید که برابر هستند.

ولی اگر در ویژوال فیلد color را هم در قسمت value قرار دهیم شرایط تغییر می کند. در ستون SalesAmount به ازای هر رنگ فیلتر میشود و فروش را نشان می دهد. در ستون سوم همان ستون محاسباتی است که فروش کالاهای قرمز رنگ است و این ستون فقط جاهایی مقدار داشت که رنگ محصول قرمز بوده است بنابراین می بینید که در رنگهای دیگر مقداری ثبت نشده است.
ستون چهارم که همان measure می باشد که تعریف کردیم تمامی مقادیر تکرار شده است، در فرمول نویسی مژر گفته بودیم جمع SaleAmount را برای محصولات با رنگ قرمز حساب کن. کد DimProduct[color]=’red’ که در تعریف مژر نوشتیم یک explicite filter میباشد به این معنا که محصول هر رنگی بود توجه نکن و فقط مجموع فروش محصول با رنگ قرمز را محاسبه کن که مقدار این محاسبه برابر ۷۷۲۳۸۰۰ می باشد. بنابراین در تمامی ردیف ها با اینکه رنگ محصولات متفاوت است جمع فروش محصولات قرمز را قرار می دهد و کاری به محصولات دیگر ندارد.

نمونه این مثال را می توانید در صفحه ۶۶ کتاب beginning dax with power bi مطالعه کنید.
بنابراین تابع calculate تابعی است که به ما کمک می کند که محاسبات را به همراه فیلتر انجام دهیم و پرکاربردترین تابع در dax میباشد. می توانید در این تابع چندین نوع فیلتر مختلف از جداول مختلف استفاده کنید. فیلترها باید برمبنای مقادیر ستونها و مقادیر مشخص باشد.
نکته مهم : اگر در تابع calculate خواستید فیلتری بر مبنای مژر داشته باشید ابتدا مقدار measure را داخل یک متغیر ریخته و سپس آن متغیر را در فیلتر تابع calculate استفاده کنید.