تفاوت SUM و SUMX

در این مطلب آموزشی، می‌خواهیم تفاوت SUM و SUMX را شرح دهیم و در نهایت به این سوال پاسخ دهیم که بهتر است از کدام تابع استفاده شود: SUM یا SUMX یا CALCULATE؟

()SUM

خبر خوب این است که یک تابع ساده SUM، در اکثر مواقع می‌تواند به کار برده شود. با استفاده از قابلیت رابطه‌ها، این تابع از پسِ انجام عملیات قدرتمندی که تصور نمی‌کردید، بر می‌آید. ارتباطات در Power Pivot، یعنی شما measure های خود را تنها یکبار تعریف کنید و از آن‌ها در همه جا بهره بگیرید. Measure های شما به قالب pivot خودتان در می‌آیند، در نتیجه می‌توانید هر کادر و فیلد دلخواهی از مدل خود را در صفحه بکشید و رها کنید یا از slicer های مختلف استفاده نمایید و در همه موارد measure ها همچنان کار می‌کنند.

Sales:=SUM(Transactions[Amount])

تفاوت SUM و SUMX

 

()SUMX

این تابع یک تکرارشونده محسوب می‌شود؛ یعنی برعکس SUM که می‌تواند بر روی بلوک‌هایی از داده‌ها اعمال شود و بسیار کارآمد است، SUMX در هر زمان، یک سطر از داده‌های شما را می‌خواند و کارآمد نیست. در نتیجه اگر به هیچ عنوان نمی‌توانید از SUM استفاده کنید، به سراغ SUMX بروید. با یک مثال، کاربرد آن را روشن می‌کنیم:

اگر از یک دختر بچه ۱۰ ساله بپرسید که به مدت ۷ روز با دادن روزانه ۴ عدد سیب به او، در نهایت چند سیب خواهد داشت؟ به سرعت ۷ را در ۴ ضرب کرده و جواب ۲۸ را می‌دهد. این همان کاری است که SUM می‌کند.

اما با پرسیدن همان سوال از پسر بچه ۷ ساله، او این کار را انجام می‌دهد: ۴+۴+۴+۴+۴+۴+۴ یا به صورت قدم به قدم: ۴+۴=۸، ۸+۴=۱۲، …، ۲۴+۴=۲۸٫ این SUMX است!

بعضی مواقع شما همین قدم به قدم تکرار را لازم دارید. به عنوان مثال در جدول تراکنش‌های زیر تعداد کالای فروخته شده و قیمت واحد هرکدام وجود دارد:

تفاوت SUM و SUMX

 

در این سناریو، measure مورد استفاده SUMX است زیرا وارد کردن یک ستون به صورت یک‌جا به درد نمی‌خورد و باید سطر به سطر اضافه شود.

Sales :=
SUMX (
Transactions,
Transactions[Quantity] * Transactions[UnitPrice])

ترجمه دستور، به این صورت است:

۱- بر روی جدول تراکنش‌ها سطر به سطر حرکت کن.

۲- برای هر سطر حاصلِ ضرب را محاسبه کن.

۳- در انتها تمام نتایج را با هم جمع کن.

 

()CALCULATE

از این تابع زمانی استفاده کنید که می‌خواهید فیلتری اعمال نمایید؛ مثلا مجموع میزان فروش را در حالت‌های زیر نیاز دارید: فقط سال پیش، تنها نوع دوچرخه، هفتگی و مواردی از این دست. در واقع شما نمی‌خواهید تغییری در مدل و شکل pivot خود ایجاد کنید و صرفا در موارد خاص این مقادیر خاص را لازم دارید.

تفاوت SUM و SUMX

Sales for Bike Category :=
CALCULATE ( [Sales], DimProduct[ProductCategory] = “Bikes” )

با مثال بالا آموزش را خاتمه می‌دهیم اما برای توضیحات بیشتر پیرامون CALCULATE می‌توانید به این مطلب مراجعه کنید.

امینه نقویان

امینه نقویان

به مطالعه و یادگیری مطالب به روز آی تی و همچنین به اشتراک گذاری آنها علاقه دارم.
امینه نقویان

امینه نقویان (همه)

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

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