انتشارات و آکادمی آموزشی اشکاوند
جستجو برای:
سبد خرید 0
  • خانه
  • فروشگاه
  • اخبار و مقالات
    • اخبار
    • آموزش
    • دانشگاه
    • مقالات
      • آموزش Word
      • آموزش Word موبایل
      • آموزش اکسل موبایل
      • مقالات Power Bi
      • مقالات اکسل
        • ابزارها و ترفندها
        • توابع آماری
        • توابع اطلاعاتی
        • توابع جستجو و ارجاع
        • توابع ریاضی و مثلثات
        • توابع زمان و تاریخ
        • توابع کار با متن
        • توابع منطقی
        • خطاهای اکسل
        • سایر توابع
      • مقالات عمومی
      • عمومی
  • انتشارات اشکاوند
    • فرآیند کامل چاپ کتاب
    • همکاری با انتشارات اشکاوند
  • دانشگاه
    • ارسال تمرین
    • جزوات درسی
      • برنامه نویسی پیشرفته
      • برنامه نویسی شی گرا
      • برنامه نویسی مقدماتی
      • پایگاه داده ها
      • ساختمان داده
      • شیوه ارائه مطلب
      • کاربرد کامپیوتر در حسابداری و مدیریت
      • مبانی فناوری اطلاعات
  • درباره ما
  • تماس با ما
  • حساب کاربری
    • حساب کاربری من
    • شرایط و قوانین فروشگاه آکادمی اشکاوند
    • راهنمای خرید اینترنتی
  • تمرین کتابها
    • فایل تمرین کتاب آموزش Power BI
    • پاسخنامه تمرینهای کتاب آموزش کاربردی و پروژه محور نرم افزار SQL
      • پاسخنامه تمرینهای فصل اول کتاب SQL Server
      • پاسخنامه تمرینهای فصل دوم کتاب SQL Server
      • پاسخنامه تمرینهای فصل سوم کتاب SQL Server
      • پاسخنامه تمرینهای فصل چهارم کتاب SQL Server
      • پاسخنامه تمرینهای فصل پنجم کتاب SQL Server
      • پاسخنامه تمرینهای فصل ششم کتاب SQL Server
      • پاسخنامه تمرینهای فصل هفتم کتاب SQL Server
      • پاسخنامه تمرینهای فصل هشتم کتاب SQL Server
      • پاسخنامه تمرینهای فصل نهم کتاب SQL Server
      • پاسخنامه تمرینهای فصل دهم کتاب SQL Server
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]

داده های شخصی شما برای پشتیبانی از تجربه شما در این وب سایت، برای مدیریت دسترسی به حساب کاربری شما و برای اهداف دیگری که در سیاست حفظ حریم خصوصی ما شرح داده می شود مورد استفاده قرار می گیرد.

ارسال مجدد کد یکبار مصرف (00:60)
لوگو انتشارات و آکادمی آموزشی اشکاوند
شروع کنید
0
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
  • خانه
  • فروشگاه
    • کتابهای آموزشی
    • فیلم های آموزشی
  • اخبار و مقالات
    • آموزش
    • مقالات
      • مقالات اکسل
        • ابزارها و ترفندها
        • توابع آماری
        • توابع اطلاعاتی
        • توابع جستجو و ارجاع
        • توابع ریاضی و مثلثات
        • توابع زمان و تاریخ
        • توابع کار با متن
        • توابع منطقی
        • خطاهای اکسل
        • اکسل و هوش مصنوعی
        • سایر توابع
      • آموزش Word
      • آموزش Word موبایل
      • آموزش اکسل موبایل
      • آموزش پاورپوینت
      • مقالات Power Bi
      • مقالات عمومی
      • اخبار
    • انتشارات اشکاوند
    • دانشگاه
    • عمومی
    • فیلم آموزشی
  • انتشارات اشکاوند
    • مجموعه کتابهای بیت
    • تمرین کتابها
      • کتاب آموزش SQL
        • پاسخنامه تمرینهای فصل اول
        • پاسخنامه تمرینهای فصل دوم
        • پاسخنامه تمرینهای فصل سوم
        • پاسخنامه تمرینهای فصل چهارم
        • پاسخنامه تمرینهای فصل پنجم
        • پاسخنامه تمرینهای فصل ششم
        • پاسخنامه تمرینهای فصل هفتم
        • پاسخنامه تمرینهای فصل هشتم
        • پاسخنامه تمرینهای فصل نهم
        • پاسخنامه تمرینهای فصل دهم
      • کتاب آموزش پاوربی آی
        • دانلود فایل تمرین کتاب آموزش نرم‌افزار Power BI
    • همکاری با انتشارات اشکاوند
    • فرآیند کامل چاپ کتاب
  • حساب کاربری
    • حساب کاربری من
    • شرایط و قوانین فروشگاه آکادمی اشکاوند
    • راهنمای خرید اینترنتی
    • سبد خرید
  • دانشگاه
    • ارسال تمرین
    • جزوات درسی
      • برنامه نویسی پیشرفته
      • برنامه نویسی شی گرا
      • برنامه نویسی مقدماتی
      • پایگاه داده ها
      • ساختمان داده
      • شیوه ارائه مطلب
      • کاربرد کامپیوتر در حسابداری و مدیریت
      • مبانی فناوری اطلاعات
  • درباره ما
  • تماس با ما

انتشارات و آکادمی آموزشی اشکاوند

  • خانه
  • فروشگاه
    • کتابهای آموزشی
    • فیلم های آموزشی
  • اخبار و مقالات
    • آموزش
    • مقالات
      • مقالات اکسل
        • ابزارها و ترفندها
        • توابع آماری
        • توابع اطلاعاتی
        • توابع جستجو و ارجاع
        • توابع ریاضی و مثلثات
        • توابع زمان و تاریخ
        • توابع کار با متن
        • توابع منطقی
        • خطاهای اکسل
        • اکسل و هوش مصنوعی
        • سایر توابع
      • آموزش Word
      • آموزش Word موبایل
      • آموزش اکسل موبایل
      • آموزش پاورپوینت
      • مقالات Power Bi
      • مقالات عمومی
      • اخبار
    • انتشارات اشکاوند
    • دانشگاه
    • عمومی
    • فیلم آموزشی
  • انتشارات اشکاوند
    • مجموعه کتابهای بیت
    • تمرین کتابها
      • کتاب آموزش SQL
        • پاسخنامه تمرینهای فصل اول
        • پاسخنامه تمرینهای فصل دوم
        • پاسخنامه تمرینهای فصل سوم
        • پاسخنامه تمرینهای فصل چهارم
        • پاسخنامه تمرینهای فصل پنجم
        • پاسخنامه تمرینهای فصل ششم
        • پاسخنامه تمرینهای فصل هفتم
        • پاسخنامه تمرینهای فصل هشتم
        • پاسخنامه تمرینهای فصل نهم
        • پاسخنامه تمرینهای فصل دهم
      • کتاب آموزش پاوربی آی
        • دانلود فایل تمرین کتاب آموزش نرم‌افزار Power BI
    • همکاری با انتشارات اشکاوند
    • فرآیند کامل چاپ کتاب
  • حساب کاربری
    • حساب کاربری من
    • شرایط و قوانین فروشگاه آکادمی اشکاوند
    • راهنمای خرید اینترنتی
    • سبد خرید
  • دانشگاه
    • ارسال تمرین
    • جزوات درسی
      • برنامه نویسی پیشرفته
      • برنامه نویسی شی گرا
      • برنامه نویسی مقدماتی
      • پایگاه داده ها
      • ساختمان داده
      • شیوه ارائه مطلب
      • کاربرد کامپیوتر در حسابداری و مدیریت
      • مبانی فناوری اطلاعات
  • درباره ما
  • تماس با ما
شروع کنید

وبلاگ

انتشارات و آکادمی آموزشی اشکاوند > اخبار و مقالات > مقالات > مقالات Power Bi > توابع DAX > آموزش تابع CALCULATE در Power BI؛ از یک فیلتر ساده تا Measureهای حرفه‌ای DAX

آموزش تابع CALCULATE در Power BI؛ از یک فیلتر ساده تا Measureهای حرفه‌ای DAX

7 شهریور 1405
ارسال شده توسط ایمان اشکاوند راد
توابع DAX، آموزش، مقالات، مقالات Power Bi

اگر مدت زیادی با Power BI کار نکرده باشید، ممکن است CALCULATE در نگاه اول فقط یک تابع دیگر در میان صدها تابع DAX به نظر برسد.

اما وقتی وارد ساخت Measureهای واقعی می‌شوید، داستان کاملاً متفاوت است.

فرض کنید مدیر یک فروشگاه زنجیره‌ای از شما می‌پرسد:

«فروش کل را دارم؛ حالا فروش شعبه‌های تهران را چطور جدا کنم؟»

بعد سؤال بعدی می‌آید:

«فروش تهران در مقایسه با کل کشور چند درصد بوده؟»

و بعد:

«فروش تهران در همین ماه سال قبل چقدر بوده؟»

و نهایتاً:

«اگر کاربر در گزارش یک شعبه را انتخاب کرد، بتوانم فروش آن را با کل فروش همه شعب مقایسه کنم.»

اینجاست که DAX از چند تابع ساده برای جمع و شمارش فاصله می‌گیرد و Context اهمیت پیدا می‌کند.

در مرکز بسیاری از این محاسبات، تابع CALCULATE قرار دارد.

Microsoft، CALCULATE را تابعی می‌داند که یک Expression را در یک Filter Context تغییر‌یافته ارزیابی می‌کند.

اگر قصد دارید ساخت داشبورد رو حرفه ای یاد بگیرید کتاب آموزش نرم افزار هوش تجاری Power Bi به شما کمک می کنه میتونیدبا کلیک یا ضربه روی تصویر کتاب اون رو سفارش بدید

کتاب آموزش power Bi اشکاوند چاپ 2

 

Contents

  • 1. CALCULATE در Power BI چیست؟
  • 2. CALCULATE را این‌طور تصور کنید
  • 3. اولین مثال؛ فروش یک شعبه خاص
  • 4. چرا CALCULATE با SUM فرق دارد؟
  • 5. CALCULATE و Filter Context
  • 6.  یک مثال کاربردی؛ فروش آنلاین در یک کانال خاص
  • 7. CALCULATE با چند شرط
  • 8. یک نکته مهم درباره فیلترهای CALCULATE
  • 9. KEEPFILTERS چه زمانی به درد می‌خورد؟
  • 10. CALCULATE و REMOVEFILTERS
  • 11. CALCULATE و ALL چه ارتباطی دارند؟
  • 12. CALCULATE و FILTER؛ این دو را اشتباه نگیرید
  • 13. آیا همیشه باید از FILTER داخل CALCULATE استفاده کنیم؟
  • 14. یکی از کاربردهای مهم CALCULATE؛ فعال کردن رابطه متفاوت
  • 15. Context Transition چیست؟
  • 16. یک سناریوی واقعی برای داشبورد فروش
  • 17. اشتباه رایج شماره ۱؛ استفاده از CALCULATE برای همه چیز
  • 18. اشتباه رایج شماره ۲؛ حفظ کردن CALCULATE بدون فهم Context
  • 19. یک الگوی ذهنی ساده برای یادگیری CALCULATE
  • 20. خلاصه مهم‌ترین کاربردهای CALCULATE
  • 21. تمرین عملی برای یادگیری CALCULATE
    • 21.1. تمرین اول
    • 21.2. تمرین دوم
    • 21.3. تمرین سوم
    • 21.4. تمرین چهارم
    • 21.5. تمرین پنجم
    • 21.6. تمرین ششم
  • 22. سؤالات متداول CALCULATE در Power BI
    • 22.1. CALCULATE در DAX چه کاری انجام می‌دهد؟
    • 22.2. آیا CALCULATE فقط برای فیلتر کردن استفاده می‌شود؟
    • 22.3. تفاوت CALCULATE و FILTER چیست؟
    • 22.4. CALCULATE برای یادگیری Power BI ضروری است؟
    • 22.5. بعد از CALCULATE چه چیزی یاد بگیریم؟
  • 23. جمع‌بندی
  • 24. مقالات مرتبط آموزش Power BI و DAX

CALCULATE در Power BI چیست؟

 

Syntax کلی CALCULATE به شکل زیر است:

CALCULATE(
    <Expression>,
    <Filter1>,
    <Filter2>,
    ...
)

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

برای مثال، ابتدا فروش کل را می‌سازیم:

Total Sales =
SUM(StoreSales[Amount])

حالا می‌خواهیم فروش شعبه‌های منطقه شمال را محاسبه کنیم:

North Sales =
CALCULATE(
    [Total Sales],
    Stores[Region] = "شمال"
)

در اینجا [Total Sales] همان محاسبه اصلی است، اما CALCULATE شرایطی را به آن اضافه کرده است تا محاسبه در Context مربوط به منطقه شمال انجام شود.

 

CALCULATE را این‌طور تصور کنید

 

برای فهم CALCULATE لازم نیست از همان ابتدا وارد تعریف‌های پیچیده شوید.

فعلاً آن را این‌طور در ذهن داشته باشید:

یک محاسبه دارم
+
می‌خواهم شرایط اجرای آن را تغییر بدهم
=
CALCULATE

مثلاً:

[Total Sales]

یعنی فروش را حساب کن.

اما:

CALCULATE(
    [Total Sales],
    Stores[Region] = "شمال"
)

یعنی:

«فروش را حساب کن، اما در شرایطی که منطقه شمال باشد.»

همین ایده ساده، پایه تعداد زیادی از Measureهای حرفه‌ای DAX است.

 

اولین مثال؛ فروش یک شعبه خاص

 

فرض کنید جدول StoreSales اطلاعات تراکنش‌های فروش را نگهداری می‌کند و جدول Stores مشخصات شعب را دارد.

می‌خواهیم فروش شعبه «شریعتی» را محاسبه کنیم.

Shariati Sales =
CALCULATE(
    [Total Sales],
    Stores[StoreName] = "شریعتی"
)

نکته مهم این است که ما یک Measure جدید برای جمع کردن فروش ننوشته‌ایم.

از Measure موجود استفاده کرده‌ایم:

[Total Sales]

و فقط Context آن را تغییر داده‌ایم.

این روش باعث می‌شود Measureهای پروژه ساختار منظم‌تری داشته باشند.

 

چرا CALCULATE با SUM فرق دارد؟

 

این دو تابع وظیفه یکسانی ندارند.

مثلاً:

Total Sales =
SUM(StoreSales[Amount])

می‌گوید:

«مقادیر ستون Amount را جمع کن.»

اما:

Tehran Sales =
CALCULATE(
    [Total Sales],
    Stores[City] = "تهران"
)

می‌گوید:

«همان محاسبه فروش را انجام بده، اما با شرط تهران.»

پس:

SUM بیشتر روی خود عملیات جمع تمرکز دارد.

CALCULATE روی Contextی تمرکز دارد که محاسبه در آن انجام می‌شود.

این تفاوت در پروژه‌های واقعی بسیار مهم است.

 

CALCULATE و Filter Context

 

یکی از مفاهیم اساسی Power BI، Filter Context است.

برای مثال فرض کنید در گزارش فروش، یک Slicer برای سال قرار داده‌ایم.

کاربر سال 1405 را انتخاب می‌کند.

حالا Measure:

Total Sales =
SUM(StoreSales[Amount])

در Context فعلی گزارش محاسبه می‌شود.

اگر کاربر یک شهر را هم انتخاب کند، Context باز هم تغییر می‌کند.

CALCULATE می‌تواند این Context را دستکاری کند؛ یعنی فیلترهای جدیدی به آن اضافه کند یا در بعضی سناریوها فیلترهای موجود را تغییر دهد.

به همین دلیل Microsoft، CALCULATE را یکی از ابزارهای اصلی برای تغییر Filter Context معرفی می‌کند.

 

 یک مثال کاربردی؛ فروش آنلاین در یک کانال خاص

فرض کنید یک شرکت هم فروش حضوری دارد و هم فروش اینترنتی.

ستون Channel مشخص می‌کند هر سفارش از کجا آمده است.

فروش کل:

Total Sales =
SUM(Sales[Amount])

فروش اینترنتی:

Online Sales =
CALCULATE(
    [Total Sales],
    Sales[Channel] = "Online"
)

فروش حضوری:

Store Sales =
CALCULATE(
    [Total Sales],
    Sales[Channel] = "Store"
)

حالا می‌توانیم این سه Measure را کنار هم در یک داشبورد قرار دهیم.

مثلاً:

شاخص مقدار
کل فروش 18.4 میلیارد
فروش آنلاین 7.2 میلیارد
فروش حضوری 11.2 میلیارد

نکته جالب اینجاست که اگر گزارش را برای یک ماه یا محصول خاص فیلتر کنید، این Measureها نیز متناسب با Context گزارش تغییر می‌کنند.

 

CALCULATE با چند شرط

 

CALCULATE می‌تواند بیش از یک فیلتر داشته باشد.

مثلاً مدیر شرکت می‌خواهد فروش آنلاین محصولات دیجیتال در شهر تهران را ببیند:

Tehran Digital Sales =
CALCULATE(
    [Total Sales],
    Sales[Channel] = "Online",
    Products[Category] = "Digital",
    Stores[City] = "تهران"
)

حالا محاسبه فقط در شرایط تعیین‌شده انجام می‌شود.

این روش در ساخت KPIهای مدیریتی بسیار کاربردی است.

 

یک نکته مهم درباره فیلترهای CALCULATE

 

اگر ستونی که در Filter Argument استفاده کرده‌اید از قبل در Context فیلتر داشته باشد، رفتار پیش‌فرض CALCULATE می‌تواند فیلتر موجود روی همان ستون را با فیلتر جدید جایگزین کند.

مثلاً اگر Context فعلی شامل چند شهر باشد و CALCULATE شرطی برای تهران اعمال کند، نتیجه مربوط به Context جدید خواهد بود.

این رفتار یکی از نقاطی است که کاربران تازه‌کار معمولاً در آن با CALCULATE دچار ابهام می‌شوند. Microsoft نیز توضیح می‌دهد که در حالت استاندارد، فیلترهای جدید روی همان ستون‌ها می‌توانند فیلترهای قبلی را بازنویسی کنند؛ برای حفظ فیلتر موجود در کنار فیلتر جدید می‌توان از KEEPFILTERS استفاده کرد.

 

KEEPFILTERS چه زمانی به درد می‌خورد؟

 

فرض کنید کاربر در گزارش چند استان را انتخاب کرده و Measure شما می‌خواهد فیلتر دیگری روی همان ستون اعمال کند.

در بعضی سناریوها نمی‌خواهیم انتخاب کاربر کنار گذاشته شود؛ بلکه می‌خواهیم فیلتر جدید با انتخاب موجود ترکیب شود.

اینجاست که KEEPFILTERS می‌تواند مفید باشد:

Selected North Sales =
CALCULATE(
    [Total Sales],
    KEEPFILTERS(
        Stores[Region] = "شمال"
    )
)

KEEPFILTERS نحوه اعمال فیلتر در CALCULATE یا CALCULATETABLE را تغییر می‌دهد و باعث می‌شود فیلتر جدید با فیلتر موجود به‌صورت Intersection در نظر گرفته شود.

البته لازم نیست در Measureهای ساده همیشه از KEEPFILTERS استفاده کنید. بهتر است ابتدا رفتار معمول CALCULATE را یاد بگیرید و بعد سراغ این قابلیت بروید.

 

CALCULATE و REMOVEFILTERS

 

یکی از کاربردهای جذاب CALCULATE زمانی است که بخواهیم یک فیلتر را از محاسبه حذف کنیم.

فرض کنید در یک Matrix، فروش محصولات را نمایش داده‌ایم و می‌خواهیم بدانیم هر محصول چه سهمی از کل فروش دارد.

فروش کل:

Total Sales =
SUM(Sales[Amount])

حالا:

All Products Sales =
CALCULATE(
    [Total Sales],
    REMOVEFILTERS(Products[ProductName])
)

REMOVEFILTERS برای پاک کردن فیلتر از جدول یا ستون مشخص‌شده استفاده می‌شود.

حالا می‌توانیم درصد سهم محصول را بسازیم:

Product Share =
DIVIDE(
    [Total Sales],
    [All Products Sales]
)

فرض کنید خروجی Matrix این باشد:

محصول فروش سهم از کل
لپ‌تاپ 4.8 میلیارد 38%
مانیتور 2.9 میلیارد 23%
پرینتر 2.1 میلیارد 17%
سایر محصولات 2.8 میلیارد 22%

اینجا دیگر CALCULATE فقط یک «فیلتر ساده» نیست؛ بلکه به ما کمک کرده است نسبت هر محصول را با یک مقدار مرجع بسنجیم.

 

CALCULATE و ALL چه ارتباطی دارند؟

 

احتمالاً در مثال‌های DAX با ALL هم مواجه شده‌اید.

مثلاً:

All Product Sales =
CALCULATE(
    [Total Sales],
    ALL(Products[ProductName])
)

ALL می‌تواند فیلترهای اعمال‌شده روی جدول یا ستون را نادیده بگیرد. Microsoft در مستندات توابع Filter نیز ALL و REMOVEFILTERS را در گروه توابعی قرار می‌دهد که برای کنترل فیلترها استفاده می‌شوند.

با این حال، اگر هدف شما مشخصاً حذف فیلتر باشد، REMOVEFILTERS معمولاً بیان واضح‌تری از قصد Measure ارائه می‌کند.

 

CALCULATE و FILTER؛ این دو را اشتباه نگیرید

 

CALCULATE و FILTER هر دو با فیلتر سروکار دارند، اما یک کار انجام نمی‌دهند.

FILTER یک جدول یا Expression جدولی را دریافت می‌کند و فقط ردیف‌هایی را برمی‌گرداند که شرط را برقرار می‌کنند:

FILTER(
    Sales,
    Sales[Amount] > 50000000
)

اما CALCULATE یک Expression را در Context فیلتر جدید ارزیابی می‌کند.

به همین دلیل ممکن است این دو را کنار هم ببینیم:

High Value Sales =
CALCULATE(
    [Total Sales],
    FILTER(
        Sales,
        Sales[Amount] > 50000000
    )
)

FILTER در اینجا جدول موردنظر را مشخص می‌کند و CALCULATE محاسبه را با آن فیلتر انجام می‌دهد. مستندات Microsoft نیز FILTER را تابعی معرفی می‌کند که یک زیرمجموعه از جدول یا Expression را برمی‌گرداند و اشاره می‌کند که می‌تواند در سایر توابعی که به جدول نیاز دارند استفاده شود.

 

آیا همیشه باید از FILTER داخل CALCULATE استفاده کنیم؟

 

خیر.

برای شرط‌های ساده، معمولاً نوشتن مستقیم شرط خواناتر است.

مثلاً:

Tehran Sales =
CALCULATE(
    [Total Sales],
    Stores[City] = "تهران"
)

نیازی ندارد که آن را بی‌دلیل به این شکل بنویسیم:

Tehran Sales =
CALCULATE(
    [Total Sales],
    FILTER(
        Stores,
        Stores[City] = "تهران"
    )
)

FILTER زمانی ارزش بیشتری پیدا می‌کند که منطق فیلتر پیچیده‌تر باشد یا واقعاً به یک Table Expression نیاز داشته باشیم.

 

یکی از کاربردهای مهم CALCULATE؛ فعال کردن رابطه متفاوت

 

در مدل‌های حرفه‌ای Power BI ممکن است بین دو جدول چند نوع رابطه منطقی داشته باشیم؛ مثلاً یک جدول فروش هم Order Date داشته باشد و هم Ship Date.

ممکن است یکی از روابط Active و دیگری Inactive باشد.

در چنین سناریوهایی می‌توان از USERELATIONSHIP در CALCULATE استفاده کرد تا رابطه موردنظر برای محاسبه فعال شود.

مثلاً:

Sales By Ship Date =
CALCULATE(
    [Total Sales],
    USERELATIONSHIP(
        Sales[ShipDate],
        'Date'[Date]
    )
)

این یکی از نمونه‌هایی است که نشان می‌دهد CALCULATE فقط برای «فیلتر شهر = تهران» ساخته نشده است؛ بلکه در مدل‌سازی و تحلیل حرفه‌ای DAX نقش بسیار گسترده‌تری دارد. Microsoft، USERELATIONSHIP و CROSSFILTER را نیز در گروه Filter Modifierهایی معرفی می‌کند که در CALCULATE برای کنترل روابط و Filter Context کاربرد دارند.

 

Context Transition چیست؟

 

این بخش کمی پیشرفته‌تر است، اما اگر می‌خواهید DAX را جدی یاد بگیرید، بهتر است با مفهوم آن آشنا باشید.

CALCULATE حتی در صورت نداشتن Filter Argument نیز کاربرد خاصی دارد: می‌تواند Row Context را به Filter Context تبدیل کند.

این رفتار را Context Transition می‌نامند.

برای کاربر تازه‌کار، شاید این تعریف کمی انتزاعی باشد.

فعلاً این تصویر ذهنی را داشته باشید:

Row Context
     ↓
CALCULATE
     ↓
Filter Context

این موضوع زمانی اهمیت بیشتری پیدا می‌کند که با Calculated Columnها، Iteratorها و Measureهای پیچیده‌تر کار کنید.

برای همین توصیه می‌کنم در شروع کار، قبل از اینکه وارد مثال‌های خیلی پیچیده Context Transition شوید، ابتدا رفتار CALCULATE در Filter Context را به‌خوبی یاد بگیرید.

 

یک سناریوی واقعی برای داشبورد فروش

 

فرض کنید مدیر یک شرکت پخش می‌خواهد چهار شاخص را در داشبورد مشاهده کند:

  • فروش کل
  • فروش آنلاین
  • فروش شعب
  • سهم فروش آنلاین

Measureهای اصلی:

Total Sales =
SUM(Sales[Amount])
Online Sales =
CALCULATE(
    [Total Sales],
    Sales[Channel] = "Online"
)
Store Sales =
CALCULATE(
    [Total Sales],
    Sales[Channel] = "Store"
)

و:

Online Share =
DIVIDE(
    [Online Sales],
    [Total Sales]
)

حالا اگر مدیر سال، استان یا گروه محصول را در Slicer تغییر دهد، Measureها نیز با Context جدید گزارش دوباره محاسبه می‌شوند.

این همان چیزی است که Power BI را از گزارش‌های ثابت Excel متمایز می‌کند: Measureها به Context گزارش واکنش نشان می‌دهند.

 

اشتباه رایج شماره ۱؛ استفاده از CALCULATE برای همه چیز

 

اینکه CALCULATE تابع بسیار قدرتمندی است به این معنی نیست که باید همه Measureها را با CALCULATE بنویسیم.

اگر فقط می‌خواهید یک ستون را جمع کنید:

Total Sales =
SUM(Sales[Amount])

کاملاً کافی است.

نوشتن:

Total Sales =
CALCULATE(
    SUM(Sales[Amount])
)

در اینجا ارزش خاصی به محاسبه ساده شما اضافه نمی‌کند.

 

اشتباه رایج شماره ۲؛ حفظ کردن CALCULATE بدون فهم Context

 

اگر فقط Syntax زیر را حفظ کنید:

CALCULATE(Expression, Filter)

احتمالاً خیلی زود در Measureهای واقعی به مشکل می‌خورید.

بخش مهم ماجرا این است که بدانید قبل از CALCULATE چه Contextی وجود دارد و بعد از آن چه تغییری می‌کند.

این موضوع یکی از دلایل اصلی است که یادگیری Filter Context و Row Context در DAX اهمیت زیادی دارد.

 

یک الگوی ذهنی ساده برای یادگیری CALCULATE

 

هر زمان Measure پیچیده‌ای می‌بینید، این چهار سؤال را از خودتان بپرسید:

۱. محاسبه اصلی چیست؟

مثلاً:

[Total Sales]

۲. Context فعلی گزارش چیست؟

مثلاً:

سال = 1405
استان = خراسان رضوی

۳. CALCULATE چه تغییری ایجاد می‌کند؟

مثلاً:

Channel = Online

۴. نتیجه جدید چیست؟

یعنی:

فروش آنلاین
در سال 1405
در خراسان رضوی

اگر با این نگاه به Measureها نگاه کنید، خواندن کدهای DAX بسیار ساده‌تر می‌شود.

خلاصه مهم‌ترین کاربردهای CALCULATE

 

CALCULATE را می‌توان برای کارهایی مانند این استفاده کرد:

  • اعمال فیلتر جدید روی یک Measure
  • تغییر Filter Context
  • حذف فیلترها
  • حفظ فیلترهای موجود با KEEPFILTERS
  • استفاده از FILTER برای شرایط پیچیده‌تر
  • استفاده از ALL و REMOVEFILTERS برای مقایسه با کل
  • استفاده از USERELATIONSHIP برای محاسبات مبتنی بر رابطه دیگر
  • ایجاد بسیاری از محاسبات زمانی و تحلیلی

توابع فیلتر DAX دقیقاً برای همین نوع دستکاری Context و ایجاد محاسبات پویا طراحی شده‌اند.

تمرین عملی برای یادگیری CALCULATE

 

برای اینکه مطالب این مقاله فقط در حد تئوری باقی نماند، یک جدول فروش با ستون‌های زیر بسازید:

Date
Product
Category
City
Channel
Quantity
Amount

سپس این Measureها را خودتان ایجاد کنید:

تمرین اول

فروش کل را محاسبه کنید.

تمرین دوم

فقط فروش آنلاین را محاسبه کنید.

تمرین سوم

فروش شهر تهران را محاسبه کنید.

تمرین چهارم

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

تمرین پنجم

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

تمرین ششم

یک Measure بسازید که فیلتر محصول را نادیده بگیرد اما فیلتر سال را حفظ کند.

اگر بتوانید این تمرین‌ها را بدون کپی کردن فرمول از اینترنت انجام دهید، قدم بسیار خوبی برای ورود به DAX حرفه‌ای برداشته‌اید.

سؤالات متداول CALCULATE در Power BI

 

CALCULATE در DAX چه کاری انجام می‌دهد؟

 

CALCULATE یک Expression را در یک Filter Context تغییر‌یافته ارزیابی می‌کند و به همین دلیل یکی از مهم‌ترین ابزارهای DAX برای ساخت محاسبات شرطی و تحلیلی است.

 

آیا CALCULATE فقط برای فیلتر کردن استفاده می‌شود؟

 

خیر. علاوه بر اضافه کردن یا تغییر فیلترها، می‌تواند برای حذف فیلتر، کنترل نحوه اعمال فیلترها و استفاده از روابط متفاوت نیز به کار برود.

 

تفاوت CALCULATE و FILTER چیست؟

 

FILTER یک جدول فیلترشده برمی‌گرداند، اما CALCULATE یک Expression را در Context تغییر‌یافته ارزیابی می‌کند. این دو تابع در بسیاری از Measureهای پیشرفته در کنار هم استفاده می‌شوند.

CALCULATE برای یادگیری Power BI ضروری است؟

اگر قصد دارید از Power BI فقط برای ساخت نمودارهای ساده استفاده نکنید و Measureهای تحلیلی و داشبوردهای حرفه‌ای بسازید، یادگیری CALCULATE بسیار مهم است.

 

بعد از CALCULATE چه چیزی یاد بگیریم؟

 

پیشنهاد می‌کنم مسیر را این‌گونه ادامه دهید:

CALCULATE → FILTER → DIVIDE → ALL و REMOVEFILTERS → RANKX → Row Context و Filter Context → Time Intelligence

این ترتیب باعث می‌شود مفاهیم به‌صورت زنجیره‌ای روی یکدیگر ساخته شوند.

 

جمع‌بندی

 

CALCULATE را اگر فقط به‌عنوان یک Syntax حفظ کنید، بخش کوچکی از قدرت آن را یاد گرفته‌اید.

اصل ماجرا Context است.

وقتی می‌نویسیم:

Tehran Sales =
CALCULATE(
    [Total Sales],
    Stores[City] = "تهران"
)

در واقع نگفته‌ایم فقط «فروش تهران را جمع کن».

گفته‌ایم:

همان محاسبه فروش را بردار و آن را در یک Context متفاوت اجرا کن.

از همین ایده ساده می‌توان به محاسباتی مانند سهم از کل، مقایسه دوره‌ها، فروش یک کانال خاص، حذف فیلتر، استفاده از رابطه متفاوت و بسیاری از Measureهای حرفه‌ای رسید.

اگر می‌خواهید DAX را اصولی یاد بگیرید، CALCULATE یکی از آن توابعی است که ارزش دارد برایش وقت بگذارید؛ چون بعد از یادگیری آن، بسیاری از فرمول‌هایی که قبلاً پیچیده به نظر می‌رسیدند، منطق قابل فهم‌تری پیدا می‌کنند.

 

مقالات مرتبط آموزش Power BI و DAX

برای ادامه مسیر یادگیری پیشنهاد می‌کنیم این مقالات را نیز مطالعه کنید:

تفاوت Measure و Calculated Column در Power BI
برای آشنایی با تفاوت دو روش مهم محاسبه در Power BI.

تفاوت SUM و SUMX در Power BI
برای درک بهتر Iteratorها و محاسبات ردیف‌به‌ردیف.

تفاوت Row Context و Filter Context در DAX چیست؟ آموزش ساده با مثال‌های عملی

آموزش تابع FILTER در Power BI (به زودی)
برای آشنایی با فیلتر کردن جدول‌ها و استفاده از FILTER در DAX.

Context Transition در DAX چیست؟ (به زودی)
موضوع بعدی این مجموعه برای درک ارتباط Row Context و Filter Context.

برچسب ها: آموزش DAXآموزش Power BIآموزش تابع Calculate
Author Avatar
درباره ایمان اشکاوند راد

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

نوشته‌های بیشتر از ایمان اشکاوند راد
قبلی راهنمای کامل خطاهای اکسل | شناخت و رفع تمام خطاها
بعدی چگونه با ChatGPT فرمول Excel بنویسیم؟ آموزش فرمول‌نویسی با AI (هوش مصنوعی)

پست های مرتبط

خطای NUM اکسل

3 آبان 1405

انواع خطاهای اکسل خطای !NUM# در اکسل چیست؟ علت بروز و روش رفع آن با مثال

Author Avatar
ایمان اشکاوند راد
ادامه مطلب
خطای REF اکسل

28 مهر 1405

انواع خطاهای اکسل خطای !Ref# و علت بروز خطا و روش‌های رفع آن با مثال

Author Avatar
ایمان اشکاوند راد
ادامه مطلب
خطای NAME اکسل

10 مهر 1405

انواع خطاهای اکسل : خطای #NAME? در اکسل چیست؟

Author Avatar
ایمان اشکاوند راد
ادامه مطلب
مغایرت گیری کامل و چند شرطی در اکسل

5 مهر 1405

مغایرت گیری کامل و چند شرطی در اکسل

Author Avatar
ایمان اشکاوند راد
ادامه مطلب
آشنایی با تابع substitute اکسل

4 مهر 1405

آشنایی با تابع substitute اکسل

Author Avatar
ایمان اشکاوند راد
ادامه مطلب

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • آموزش
  • آموزش Word
  • آموزش Word موبایل
  • آموزش اکسل موبایل
  • آموزش پاورپوینت
  • ابزارها و ترفندها
  • اخبار
  • انتشارات اشکاوند
  • تمرین کتابها
  • توابع DAX
  • توابع آماری
  • توابع اطلاعاتی
  • توابع جستجو و ارجاع
  • توابع ریاضی و مثلثات
  • توابع زمان و تاریخ
  • توابع کار با متن
  • توابع منطقی
  • خطاهای اکسل
  • دانشگاه
  • عمومی
  • فیلم آموزشی
  • کاربرد کامپیوتر در حسابداری و مدیریت
  • کتاب آموزش پاوربی آی
  • مقالات
  • مقالات Power Bi
  • مقالات اکسل
  • مقالات عمومی
برچسب‌ها
Word در گوشی آموزش DAX آموزش Power BI آموزش powerpoint آموزش word آموزش آفیس موبایل آموزش اکسل آموزش اکسل حرفه‌ای آموزش اکسل موبایل آموزش ترلو آموزش توابع اکسل آموزش جامع Power BI آموزش جامع Word آموزش جامع اکسل آموزش جامع پاورپوینت آموزش حرفه‌ای Word آموزش حرفه‌ای اکسل آموزش مقدماتی کامپیوتر آموزش ورد موبایل آموزش کامپیوتر ابزارهای مدیریت پروژه انواع خطاهای اکسل اکسل در گوشی بردهای ترلو ترفندهای اکسل توابع آماری اکسل توابع اطلاعاتی اکسل توابع جستجوی اکسل توابع ریاضی اکسل توابع متنی اکسل تکمیل خودکار اکسل خطاهای فرمول اکسل دوره اکسل پیشرفته رفع خطای اکسل مدیریت پروژه با ترلو نرم‌افزار Excel موبایل نرم‌افزار Word موبایل نرم‌افزار مدیریت پروژه Trello کار با Word موبایل کار با اکسل موبایل کتاب Excel فارسی کتاب آموزش Power BI کتاب آموزش PowerPoint کتاب آموزش Word کتاب آموزش اکسل
انتشارات و آکادمی اشکاوند
لوگو انتشارات و آکادمی آموزشی اشکاوند

ما در انتشارات و آکادمی آموزشی اشکاوند بهترین کتاب ها و دوره های آموزشی کامپیوتر را برای شما تولید می کنیم.

با محصولات و آموزشهای ما در کامپیوتر حرفه ای شوید.

دسترسی سریع
  • خانه
  • اخبار و مقالات
  • فروشگاه
  • درباره ما
  • تماس با ما
نمادها
logo-samandehi
شبکه های اجتماعی
Telegram Instagram icon--white

مشهد، بلوار وکیل آباد، بلوار هنرستان تلفن: 09305936340

کلیه حقوق برای انتشارات و آکادمی اشکاوند محفوظ می باشد.

ورود
با شماره موبایل
با آدرس ایمیل
آیا هنوز عضو نشده اید؟ اکنون ثبت نام کنید
بازنشانی رمزعبور
با شماره موبایل
با آدرس ایمیل
ثبت نام
با شماره موبایل
با آدرس ایمیل
قبلا عضو شده اید؟ اکنون وارد شوید