تابع CALCULATE

در این مطلب می‌خواهیم به معرفی تابع CALCULATE و استفاده از توابع متفاوت در آن بپردازیم. همان‌طور که در اکسل یاد گرفتیم، زمانی که ما می‌خواهیم سطرهای خاصی از یک table یا محدوده را با یکدیگر جمع کنیم از توابعی همچون SUMIF و یا SUMIFS می‌توانیم استفاده کنیم.

اما تابع SUMIF، یکسری محدودیت‌هایی دارد. اول اینکه قواعد شرطی آن دشوار و بدقلق است. دوم، این امکان وجود ندارد که شما بتوانید به‌عنوان‌مثال از تابع MAXIF در آن استفاده کنید. درواقع تمامی توابع را پوشش نمی‌دهد. تابع ()CALCULATE تمام این محدودیت‌ها را رفع می‌کند.

ساختار این تابع به شکل زیر می‌باشد:

=CALCULATE(<aggregate expression>, <filter1>, <filter2>, … )

<aggregate expression> درواقع عبارتی است که measure را توصیف می‌کند. در زیر نمونه‌هایی از آن را برای شما آورده‌ایم:

  1. SUM([Column])
  2. SUM([Column1]) / MAX([Column2])
  3. The name of another measure that’s already been defined

حال شما می‌توانید CALCULATE را بر روی هریک از موارد ذکرشده اعمال کنید. علاوه بر این‌ها شما حتی می‌توانید از یک measure که قبلاً خودتان ساخته‌اید مثلاً با عنوان “Avg Sales per Day”، نیز می‌توانید استفاده کنید. و پس‌ازآن شما می‌توانید هر تعداد فیلتری که می‌خواهید روی aggregate expression اعمال کنید.

نمونه‌های کاربردی معتبر:

  1. [ColumnName] = “Foo”
  2. [ColumnName] >= 6
  3. ALL([ColumnName])

شما می‌توانید این عبارت‌های شرطی را به هر صورتی که نیاز دارید روی داده‌ها اعمال کنید.

تابع ()ALL این امکان را برای شما ایجاد می‌کند تا بتوانید یک measure مانند “All-Time Sales”بسازید. حال اگر شما به‌عنوان‌مثال از (ALL(Date استفاده کنید، هیچ فیلتری بر Date وارد نمی‎‌شود. به این معنی که وقتی شما در Slicer به‌عنوان‌مثال، سال ۲۰۰۹ را انتخاب کنید هیچ تغییری در مقدار نشان داده‌شده که مربوط به فروش کل برای تمامی سال‌ها هست را شاهد نخواهید بود.

البته می‌توانید به صورت زیر، تابع CALCULATE را در حالتی که تابع ALL در قسمت فیلتر آن نوشته شده باشد نیز بسازید و از کل آن به‌عنوان مخرج یک measure استفاده کنید.

=SUM(SalesTable[Sales]) /

     CALCULATE(SUM(SalesTable[Sales]), ALL(SalesTable[Sales]))

مبینا چزانی

دانش آموخته دانشگاه تهران، علاقه‌مند به کار در حوزه BI و شیفته یادگیری مطالب جدید هستم. و معتقدم هیچ گاه برای آموختن دیر نیست.

مبینا چزانی (همه)

دیدگاه بگذارید

avatar
  عضویت  
به دوستتان خبر دهید.