Power Pivot #7 – SUMX funksiyası (DAX)

Power Analytics

RELATED funksiyası ilə bağlı yazımızda, məhsul kodu və müştəri kodu ilə bərabər, eyni zamanda hər məhsulun satış qiymətini də cədvəlimizə gətirmişdik. Növbədə isə – ümumi satış gəlirimizi hesablamaq var. Bunu 2 yolla həll edə bilərik:

  1. Yeni Calculated Column yaradıb – SUM funksiyası ilə
  2. Əlavə sütun yaratmadan – SUMX funksiyası ilə

 

  1. SUM funksiyası ilə ümumi gəlirin hesablanması

Bunun üçün [Sales Revenue] adlı yeni bir sütun əlavə edirik, daha sonra [Units sold] və  [Unit sales price] sütunlarını bir-birinə vuraraq, hər əməliyyatdan əldə olunan individual gəlirləri tapırıq.

Picture1.png

Picture4.png

Belə olan halda, hər bir sətrə aid gəlir məbləğlərini hesablamış oluruq. Növbədə, bu sütundakı bütün dəyərləri cəmləyəcəyimiz Measure yazmaqdır. Bu Measure – SUM funksiyası ilə olacaq:

Picture2.png

Formulun mənasıSalesData cədvəlindəki [Sales Revenue] sütunundakı bütün dəyərləri cəmlə.

Lakin, əksər hallarda, əgər Measure ilə məsələni həll etmək imkanı varsa, Calculated Column yazmamaq məsləhət görülür, çünki əlavə etdiyimiz hər bir sütun, Excel faylının həcmini artırır, işləyişini yavaşladır. Amma, Measure, faylda heç bir yer tutmur, müəyyən bir şablondur, pivot cədvələ atılmadığı müddətcə, arxa planda təsirsiz qalır. Measure-ları qəlib kimi də düşünmək olar, içinə heç bir maddə atılmadığı müddətcə, ortaya yeni heç bir şey çıxmır.

Bu səbəblə, SUMX funksiyası kritik əhəmiyyət daşıyır.

 

2. SUMX funksiyası ilə ümumi gəlirin hesablanması

Power Pivot-da bəzi funksiyaların sonunda X hərfinə rastlayacaqsınız. Bu funksiyalar, ingilis dilində “iterator” adlanır, yəni təkrarlanan funksiyalardır. Eyni anda sayısız təkrarlanan əməliyyat aparırlar. SUMX, AVERAGEX, MINX, MAXX, PRODUCTX və s. bu funksiyalara misallardır.

Qeyd: Excel-də bu funksiyanın analoqu SUMPRODUCT funksiyası ola bilər.

Yuxarıdakı kontekst işığında, gəlin misalımızdaki məsələni SUMX ilə həll edib, daha sonra funksiyanın işləyişinə baxaq.

Picture2.png

Yuxardakı formul sətirinə diqqət yetirək. Funksiya 2 komponentdən ibarətdir: TableExpression.

Picture11.png

  1. Table: Cədvəlimizin adı – SalesData
  2. Expression: Etmək istədiyimiz əməliyyat – [Units sold] ilə [Unit sales price] sütunlarını bir-birinə vurmaq

Formulumuz isə aşağıdakı kimidir:

Picture1.png

Bu funksiya və ümumilikdə formul ilə aşağıdakı addımları atdıq:

  • SalesData cədvəlini tapdıq,
  • Bu cədvəldə yer alan [Units sold] və [Unit sales price] sütunlarındakı hər bir dəyəri bir-birinə vurduq. Bu əməliyyat ROW context daxilində baş verdi, yəni, hər bir sətirdəki müvafiq dəyərlər bir-birinə vuruldu. Məsələn, yuxarıdakı misaldakı kimi, 1*250; 1*165; 1*12; 8*1200 və s. Beləliklə, hər əməliyyatın ayrı-ayrılıqda öz gəlirini hesablamış olduq.
  • Ən sonda, individual gəlirləri SUMX funksiyası ilə cəmlədik.

Beləliklə, əlavə köməkçi sütuna ehtiyac duyulmadan, ümumi gəlirimizi hesablamış olduq. Yuxarıdakı skrində həm ənənəvi SUM funksiyası ilə, həm də SUMX iterator-ı ilə aldığımız nəticələrin eyni olduğunu müşahidə edə bilərik.

Picture3.png

Bunu, yeni quracağımız pivot cədvəldə də görə bilərik. Power Pivot pəncərəsi daxilində menudan Pivot Table seçin.

Picture4.png

Customer və Product haqqında məlumatları Rows blokuna, Total RevenueTotal RevenueX  Measure-larını isə Values blokuna əlavə edin. Hər Measure-ın qarşısında onu digərlərindən ayırd edən – Fx işarəsi var.

Picture5.png

Gördüyümüz kimi, hər 2 Measure eyni nəticə verdi, lakin Total RevenueX – əlavə sütun yaratmadan əldə etdik.

Vacib fərq: SUM funksiyası ilə SUMX funksiyası arasındakı fundamental fərqi sadə bir misalla izah edək: 10 yaşındakı uşağa “4*5 neçədir?” desəniz, düşünmədən 20 cavabını verəcəkdir. Lakin eyni sualı 5 yaşındakı uşağa versəniz, öncə ağlında hesablama aparacaq:”…4+4+4+4+4…” və nəticəni bundan sonra deyəcəkdir. Bizim misalımızda da SUM funksiyası 10, SUMX funksiyası isə 5 yaşındakı uşaqdır. Problemin kontekstindən asılı olaraq, hər iki funksiyanın bir-birinə ciddi üstünlükləri vardır.

Yekun etibarilə, hər bir Measure, əlavə kriteriya və ya filterləmə verilmədiyi müddətcə, cədvəldə olan bütün sətirlər əsasında əməliyyar aparır, yəni cədvəldəki bütün sətirləri nəzərə alır. Məsələn, ancaq 2017-ci ilə aid satışlar, və ya satış məbləği 500k EUR-dan yuxarı olan satışlar kimi kriteriyalara cavab vermir.

Növbəti yazımızda, Tarix funksiyalarına qısa giriş edəcək, daha sonra öyrənilənlər əsasında daha kompleks DAX formullarına davam edəcəyik – Power Pivot #8 – Date & Time funksiyaları (DAX).