ایجاد گزارش Power BI برای مقایسه فروش در x روز بعد و قبل از یک بازه زمانی به کمک زبان DAX

گزارش Power BI

گزارش Power BI فروش با امکان مقایسه x روز

منبع این مقاله سایت SQLBI است و در اینجا می توانید اصل مقاله را ببینید، حال قصد داریم یکبار موضوع را با هم بررسی کنیم، نیاز جالبی پوشش داده شده است و می تواند در پروژه های مختلف توسط شما عزیزان برای شاخصهای متفاوت بکار گرفته شود. هدف بررسی حجم فروش قبل و بعد از یک بازه زمانی خاص است. 11 برند داریم که مشتریان محصولات این برندها را خرید می کنند (برند A. Datum تا برند Wide world Importers). به عنوان مثال، با در نظر گرفتن مشتریانی که در فوریه 2018 محصولات برند Contoso را خریداری کرده‌اند، مقدار فروش Contoso و سایر محصولات به همین مشتریان در 180 روز قبل و بعد از فوریه 2018 چقدر است؟ در اینجا x را برابر 180 در نظر گرفته ایم و باید شرایطی باشد که بتوانیم عدد x را تغییر دهیم.

اولین هدف بدست آوردن نتیجه‌ای است که در شکل زیر نمایش داده شده است. ستون Pre-Sales All Products را مشاهده کنیم، مقادیر این ستون نشان دهنده ی مقدار فروش تمام محصولات Contoso در 180 روز قبل از بازه زمانی مورد نظر است و به طور مشابه، ستون Post-Sales All Products نشان دهنده ی مقدار فروش با همان شرایط در 180 روز پس از بازه زمانی مورد نظر است. اسلایسر روزها یک پارامتر است که برای تغییر طول دوره‌های قبل و بعد مورد نظرمان استفاده می‌شود و عملا قابل تغییر به عدد بین 0 تا 360 است و هدف ما حاصل می شود:

گزارش فروش Power BI برای دوره زمانی خاص مقایسه ای

مدل و ارتباط جداول در گزارش Power BI

قبل از بررسی ادامه کار، ابتدا مدل ارتباط جداول را با هم بررسی کنیم:

  • رابطه جدول Store و Sales از طریق Storekey است.
  • رابطه جدول Customer و Sales از طریق Customerkey است.
  • رابطه جدول Product و Sales از طریق Productkey است و برند نیز از طریق جدول Product امکان فیلتر روی جدول Sales را دارد.
  • رابطه فعال بین جدول Date و Sales هم از طریق ستون Date است.

ایجاد Measure (سنجه) در گزارش Power BI

کد DAX در ادامه آمده است، سنجه Pre-Sales All Products با استفاده از REMOVEFILTERS (Product) فیلتر برند را حذف می‌کند و فیلتر را در مشتریان جایگزین می‌کند تا فقط از مشتریانی استفاده کند که تراکنش‌هایی در فروش داشته‌اند. این جایگزینی فیلتر با حذف هر فیلتر مشتری با استفاده از REMOVEFILTERS (Customer) صورت می‌گیرد و فقط با استفاده از متغیر TargetCustomer، فیلتر را بر روی Customer[Name] اعمال می‌کند؛ در اینجا ارزیابی متغیر هدف با در نظر گرفتن فیلتر برند Contoso صورت می‌گیرد. تابع DATESBETWEEN فیلتر را بر روی 180 روز قبل از دوره انتخاب شده اعمال می‌کند.

				
					Pre-Sales All Products :=
VAR FirstDateOfPeriod = MIN ( 'Date'[Date] )
VAR PeriodDays = [Days Value]
VAR TargetCustomers =
    SUMMARIZE ( Sales, Customer[Name] )
VAR FilterPeriod =
    DATESBETWEEN (
        'Date'[Date],
        FirstDateOfPeriod - PeriodDays,
        FirstDateOfPeriod - 1
    )
VAR Result =
    CALCULATE (
        [Sales Amount],
        REMOVEFILTERS ( 'Product' ),
        REMOVEFILTERS ( Customer ),
        TargetCustomers,
        FilterPeriod
    )
RETURN Result
' );
				
			

سنجه Post-Sales All Products تفاوت‌ کمی نسبت به Pre-Sales All Products دارد، زیرا فقط نحوه ارزیابی فیلتر DATESBETWEEN تغییرمی‌ کند:

				
					Post-Sales All Products :=
VAR LastDateOfPeriod = MAX ( 'Date'[Date] )
VAR PeriodDays = [Days Value]
VAR TargetCustomers =
    SUMMARIZE ( Sales, Customer[Name] )
VAR FilterPeriod =
    DATESBETWEEN (
        'Date'[Date],
        LastDateOfPeriod + 1,
        LastDateOfPeriod + PeriodDays
    )
VAR Result =
    CALCULATE (
        [Sales Amount],
        REMOVEFILTERS ( 'Product' ),
        REMOVEFILTERS ( Customer ),
        TargetCustomers,
       FilterPeriod
    )
RETURN Result

				
			

علاوه بر این فروش قبل و بعد می تواند نمایش داده شود و این مقادیر بین فروش برند انتخاب شده برای میزان فروش و فروش سایر برندها تقسیم شوند (عملاً فروش قبل و بعد را به تفکیک همین برند و برندهای دیگر گزارش کنیم). در مثال زیر، Pre Sales فروش در 180 روز قبل از برند انتخاب شده در نوار انتخاب را نشان می‌دهد. ستون Pre Other مقدار Pre-Sales Other Products را نشان می‌دهد که تفاوت بین Pre-Sales All Products و Pre-Sales را محاسبه می‌کند.

به کد DAX زیر دقت کنید:

				
					Pre-Sales :=
VAR FirstDateOfPeriod = MIN ( 'Date'[Date] )
VAR PeriodDays = [Days Value]
VAR TargetCustomers =
    SUMMARIZE ( Sales, Customer[Name] )
VAR FilterPeriod =
    DATESBETWEEN (
        'Date'[Date],
        FirstDateOfPeriod - PeriodDays,
        FirstDateOfPeriod - 1
    )
VAR Result =
    CALCULATE (
        [Sales Amount],
        -- does not change the filter on Product
        REMOVEFILTERS ( Customer ),
        TargetCustomers,
        FilterPeriod
    )
RETURN Result

				
			

معیار Pre-Sales Other Products تفاوت بین Pre-Sales All Products و Pre-Sales را محاسبه می‌کند و صفر را با BLANK جایگزین می‌کند.

				
					Pre-Sales Other Products :=
VAR Delta = [Pre-Sales All Products] - [Pre-Sales]
VAR Result = DIVIDE ( Delta, Delta <> 0 )
RETURN Result
				
			

معیارهای Post-Sales و Post-Sales Other Products با رویکرد مشابهی به دست می‌آیند و در فایل نمونه‌ای که می‌توانید دانلود کنید، در دسترس هستند.

دانلود فایل Pbix گزارش فروش Power BI

جهت دریافت فایل گزارش Power BI، فرم زیر را تکمیل نمایید، فایل pbix برای شما ایمیل خواهد شد. توجه بفرمایید ممکن است ایمیل در پوشه Spam یا junk باشد.

 





    دیدگاه‌ خود را بنویسید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

    اسکرول به بالا