تفاوت تابع SUM و SUMX در زبان DAX چیست ؟
تابع SUM و تابع SUMX از توابع مهم در زبان DAX هستند که برای عمل جمع کردن مقادیر استفاده می شوند. به ظاهر اگر شما این توابع را استفاده کنید فکر می کنید که هر دو این توابع یک کار را انجام می دهند. واقعیت این است که هر دو مقادیر را جمع می کنند اما تفاوت آنها این است که تابع SUM، مقادیر کل ستون را یکجا جمع می زند اما تابع SUMX ردیف به ردیف مقادیر را جمع می زند.
به مثال زیر توجه کنید:
همان طور که ملاحظه می کنید تابع SUM و SUMX در ضرب هر ردیف نتیجه یکسان را بر میگردانند.اما تفاوت در جمع کل است. در واقع تابع SUMX بر روی جدول مورد نظر، پیمایش را ردیف به ردیف انجام می دهد و سپس حاص ضرب هر ردیف را محاسبه می کند و در قسمت مجموع تمام نتایج ستون محاسبه شده را جمع می زند اما تابع SUM در قسمت مجموع نتایج را جمع نمی کند، بلکه حاصل ضرب عدد مجموع دو ستون را محاسبه می کند.
شکل تابع SUM و SUMX به شرح زیر می باشد:
SUM = sum ( ‘Table'[x] ) * sum( ‘Table'[y] )
SUMX = sumx ( ‘Table’,’Table'[x] * ‘Table'[y] )
کاربرد دیگر تابع SUMX نیز برای زمانی است که می خواهیم جمع ستون های فیلتر شده را محاسبه کنیم. به عنوان مثال جمع ستونهایی که عدد آنها بیشتر از 3 است. در این صورت این تابع را به صورت زیر استفاده می کنیم:
SUMX = sumx( filter(‘Table’,’Table'[x]>3),’Table'[x]*’Table'[y])
نتیجه نیز به شکل زیر محاسبه می شود: