Thursday، ۲۰ Amordaad ۱۴۰۱
در این پست قصد داریم تا در قالب یک مثال مقایسه اثرات Slicerها بر روی توابع Sum، Sumx، Calculate(sum) رو بررسی کنیم:
برای این موضوع از یک Dataset برای پیادهسازی این توابع استفاده خواهیم کرد. این دیتاست شامل 5 ستون سال، دستهبندی محصول، محصول، فصل و مقدار فروش است. این Dataset را در Power BI Desktop لود کرده و نام جدول رو به Sales Target تغییر میدهیم. شما میتوانید برای تمارین این پُست، این Dataset رو به همراه فایل pbix از اینجا دانلود نمایید.
مساله:
میخواهیم جمع تعداد لپتاپهایی که در سه ماه اول سال (فصل اول) فروخته شده را با استفاده از ایجاد Measureها با سه تابع ذکر شده محاسبه نماییم. پس در واقع فیلتری که میبایست انجام بشه روی ستون Product برای مقدار Laptop و Quarter برای مقدار Quarter 1 هست. با یک محاسبات ساده هم متوجه میشیم که نتیجه این کوئری عدد 665 خواهد بود.
روش اول (استفاده از تابع Sum):
یک Measure تحت عنوان Use Sum ایجاد میکنیم
Use Sum = sum(Sales target[Sales Quantity])
و مقدار Measure را در یک Card ایجاد مینماییم؛ اما از آنجایی که این تابع روی کل ستون Sales Quantity محاسبه مینماید، مقدار 4000 را نشان میدهد. لذا برای رسیدن به عدد مورد نظر از فیلترینگ یا Slicerهای جداگانه استفاده کرد.
برای ایجاد فیلترینگ در صفحه گزارش Slicerهایی برای Quarter و Product ایجاد میکنیم و فیلترینگ را انجام میدهیم و با انتخاب گزینه های Laptop و Quarter 1 به پاسخ میرسیم:
روش دوم (استفاده از تابع Sumx):
یک Measure دیگر تحت عنوان Sumx ایجاد میکنیم:
Use Sumx = sumx(FILTER(Sales target,[Prodcut]="Laptop" && [Quarter]="Quarter 1"),Sales target[Sales Quantity])
مقدار Measure را در یک Card به نام ایجاد مینماییم مقدار محاسبه شده صحیح است.
نکته: در صورتی که این Card با Slicerهای موجود در صفحه Interction داشته باشد با انتخاب گزینههای مختلف Slicer، محاسبات این Measure تغییر میکند. به عنوان مثال اگر در Slicer گزینه Laptop را انتخاب نکنیم، مقدار Measure Sumx محسابهای را نشان نخواهد داد.
روش سوم (استفاده از تابع Calculate(sum)):
یک Measure تحت عنوان Calculate(Sum) ایجاد میکنیم:
Use Calculate Sum = CALCULATE(sum(Sales target[Sales Quantity]),Sales target[Quarter] ="Quarter 1" && Sales target[Prodcut]="Laptop")
مقدار Measure را در یک Card ایجاد مینماییم و همانطور که مشاهده مینماییم مقدار محسابه شده صحیح است.
در واقع در سناریوهای فوق آموختیم که:
حال با توجه به روش های فوق از کدام روش برای محاسبات مشابه در گزارش های خود استفاده کنیم؟ پاسخ این سوال خیلی ساده است. در واقع هیچکدام از این روشها نسبت به دیگری برتری ندارند و شما صرفا میبایست با توجه به شرایط و محدودیتهای گزارش و کاربران تصمیمگیری نمایید که از کدام تابع استفاده کنید.