محاسبهی دقیق سود و زیان، ستون فقرات هر کسبوکاری است. DAX، زبان پرسوجوی قدرتمند پاور بیآی، ابزاری کارآمد برای این محاسبات پیچیده ارائه میدهد. در این سناریو، با استفاده از DAX، به بررسی تکنیکهای مختلف برای محاسبهی سود و زیان خواهیم پرداخت.
از محاسبات سادهی سود و زیان تا محاسبات پیشرفتهتر با در نظر گرفتن هزینههای سربار و تخصیص هزینهها، تمامی جنبههای کلیدی مورد بررسی قرار خواهند گرفت. هدف نهایی، ارائهی روشهایی دقیق و قابلاعتماد برای تحلیل وضعیت مالی کسبوکار است.
1.محاسبه ضرر و زیان بر اساس گروه محصولات: محاسبه سود یا زیان هر گروه از محصولات فروخته شده.
بیایید سناریوی “محاسبه ضرر و زیان بر اساس گروه محصولات” را با جزئیات بیشتر بررسی کنیم، همراه با کد DAX و مثال. فرض کنید یک جدول Sales
داریم با ستونهای زیر:
ProductName
: نام محصولProductCategory
: گروه محصول (مثلاً، الکترونیک، پوشاک، لوازم خانگی)SalesAmount
: مبلغ فروشCostOfGoodsSold
: هزینه کالای فروش رفته
هدف ما محاسبه سود یا زیان برای هر گروه محصول است. برای این کار، از CALCULATE
و SUMX
در DAX استفاده میکنیم.
فرمول DAX:
توضیح فرمول:
VAR TotalSales = CALCULATE(SUM(Sales[SalesAmount]), ALLEXCEPT(Sales, Sales[ProductCategory]))
: این بخش مبلغ کل فروش را برای هر گروه محصول محاسبه میکند.ALLEXCEPT
تمام فیلترها را به جز فیلتر رویProductCategory
حذف میکند، بنابراین برای هر گروهProductCategory
، مجموع فروش آن گروه را محاسبه می کند.VAR TotalCost = CALCULATE(SUM(Sales[CostOfGoodsSold]), ALLEXCEPT(Sales, Sales[ProductCategory]))
: این بخش مشابه بخش قبل است، اما به جایSalesAmount
ازCostOfGoodsSold
استفاده میکند تا هزینه کل کالای فروش رفته برای هر گروه را محاسبه کند.RETURN TotalSales - TotalCost
: این بخش تفاضل بین مجموع فروش و مجموع هزینه را محاسبه میکند که نشان دهنده سود یا زیان هر گروه محصول است. اگر نتیجه مثبت باشد، سود است و اگر منفی باشد، زیان است.
مثال:
فرض کنید جدول Sales
به شکل زیر باشد:
پس از اجرای فرمول DAX، نتیجه به صورت زیر خواهد بود:
توضیح مثال:
- برای گروه “الکترونیک”، مجموع فروش 2500 = (1000 + 1500) و مجموع هزینه 1700 = (700 + 1000) است. بنابراین، سود 800 = (2500 – 1700) است.
- برای گروه “پوشاک”، مجموع فروش 800 = (500 + 300) و مجموع هزینه 450 = (300 + 150) است. بنابراین، سود 350 = (800 – 450) است.
- و به همین ترتیب برای گروه “لوازم خانگی”.
این فرمول DAX یک راه ساده و کارآمد برای محاسبه سود یا زیان بر اساس گروه محصولات ارائه میدهد. میتوانید این فرمول را به راحتی برای محاسبه سود یا زیان بر اساس سایر معیارها مانند منطقه، مشتری یا دوره زمانی تغییر دهید. فقط کافیست Sales[ProductCategory]
را با ستون مربوط به معیار مورد نظر جایگزین کنید.
2.محاسبه ضرر و زیان بر اساس منطقه جغرافیایی: محاسبه سود یا زیان در هر منطقه عملیاتی.
بیایید سناریوی “محاسبه ضرر و زیان بر اساس منطقه جغرافیایی” را با جزئیات بیشتر بررسی کنیم، همراه با کد DAX و مثال. فرض کنید جدولی به نام Sales
داریم با ستونهای زیر:
Region
: منطقه جغرافیایی (مثلاً، تهران، مشهد، اصفهان)SalesAmount
: مبلغ فروشCostOfGoodsSold
: هزینه کالای فروش رفتهOperatingExpenses
: هزینههای عملیاتی (مثل اجاره، حقوق و …)
هدف ما محاسبه سود یا زیان برای هر منطقه جغرافیایی است. برای این کار، از CALCULATE
, SUM
, و ALLEXCEPT
در DAX استفاده میکنیم. این بار، با در نظر گرفتن هزینههای عملیاتی، محاسبهی دقیقتری خواهیم داشت.
فرمول DAX:
توضیح فرمول:
SUM ( Sales[SalesAmount] ) - SUM ( Sales[CostOfGoodsSold] ) - SUM(Sales[OperatingExpenses])
: این بخش کل فروش را محاسبه کرده، سپس هزینه کالای فروش رفته و هزینههای عملیاتی را از آن کم میکند تا سود خالص برای هر منطقه را به دست آورد.CALCULATE ( ... , ALLEXCEPT ( Sales, Sales[Region] ) )
: این بخش کل محاسبه را در محدوده هر منطقه انجام میدهد.ALLEXCEPT
تمام فیلترها را به جز فیلتر رویRegion
حذف میکند، بنابراین برای هر منطقه، محاسبه سود/زیان به طور مستقل انجام میشود.
مثال:
فرض کنید جدول Sales
به شکل زیر باشد:
پس از اجرای فرمول DAX، نتیجه به صورت زیر خواهد بود:
توضیح مثال:
- برای منطقه تهران: سود = 10000 (فروش) – 6000 (هزینه کالا) – 2000 (هزینه عملیاتی) = 2000
- برای منطقه مشهد: سود = 8000 – 5000 – 1000 = 2000
- برای منطقه اصفهان: سود = 12000 – 7000 – 3000 = 2000
این فرمول DAX سود یا زیان هر منطقه را با در نظر گرفتن هزینههای عملیاتی محاسبه میکند. این فرمول نسبت به فرمول سادهتر که فقط فروش و هزینه کالای فروش رفته را در نظر میگرفت، دقیقتر است. در صورت نیاز به جزئیات بیشتر، میتوانید هزینههای عملیاتی را به زیرمجموعههای دقیقتری تقسیم کنید (مثلا هزینه اجاره، هزینه حقوق، هزینه تبلیغات و…) و در فرمول از آنها استفاده کنید. همچنین میتوان این فرمول را برای محاسبه سود/زیان بر اساس هر معیار دیگری (مانند ماه، سال، یا هر پارامتر دلخواه) تغییر داد. به سادگی Sales[Region]
را با ستون مربوط به معیار مورد نظر جایگزین کنید.
3.محاسبه ضرر و زیان بر اساس دوره زمانی: محاسبه سود یا زیان در دوره های زمانی مختلف (مثلاً ماهانه، فصلی، سالانه).
بیایید سناریوی “محاسبه ضرر و زیان بر اساس دوره زمانی” را با جزئیات بیشتر بررسی کنیم، همراه با کد DAX و مثال. فرض میکنیم جدولی به نام Sales
با ستونهای زیر داریم:
SalesDate
: تاریخ فروش (به فرمت تاریخ)SalesAmount
: مبلغ فروشCostOfGoodsSold
: هزینه کالای فروش رفتهOperatingExpenses
: هزینههای عملیاتی
هدف ما محاسبهی سود یا زیان برای هر ماه، هر فصل و هر سال است. برای این کار، از توابع CALCULATE
, SUM
, YEAR
, MONTH
, و YEAR
در DAX استفاده میکنیم.
فرمول DAX برای سود ماهانه:
توضیح فرمول سود ماهانه:
SUM ( Sales[SalesAmount] ) - SUM ( Sales[CostOfGoodsSold] ) - SUM(Sales[OperatingExpenses])
: محاسبهی سود خالص با کم کردن هزینهها از فروش.CALCULATE ( ... , ALLEXCEPT ( Sales, Sales[SalesDate] ) )
: این بخش اطمینان میدهد که محاسبه برای هر ردیف در جدولSales
انجام میشود.ALLEXCEPT
تمام فیلترها به جز فیلتر بر روی تاریخ را حذف میکند.MONTH ( Sales[SalesDate] ) = MONTH ( SELECTEDVALUE ( 'Calendar'[Date] ) )
: این بخش فیلتر اضافه میکند تا فقط دادههای مربوط به ماه جاری (ماه انتخاب شده در جدول تقویمCalendar
) را در نظر بگیرد. اینجا فرض میشود که یک جدول تقویم (Calendar
) با ستونDate
وجود دارد که برای بریدن دادهها از آن استفاده میشود.
فرمول DAX برای سود سالانه:
این فرمول مشابه فرمول سود ماهانه است، با این تفاوت که به جای MONTH
از YEAR
استفاده میشود.
فرمول DAX برای سود فصلی: ( نیاز به مقداری پیشپردازش دارد)
برای محاسبه سود فصلی، ابتدا باید ستونی به نام Quarter
به جدول Sales
اضافه کنید که فصل هر تاریخ را مشخص کند. این کار را میتوان با استفاده از DAX انجام داد:
سپس میتوانید از فرمول زیر برای محاسبه سود فصلی استفاده کنید:
مثال:
فرض کنید Sales
دادههایی برای چند ماه داشته باشد. با استفاده از این فرمولها، میتوان سود هر ماه، سال و فصل را به صورت جداگانه محاسبه کرد. خروجی به صورت جدولی خواهد بود که هر سطر آن مربوط به یک دوره زمانی (ماه، سال یا فصل) است و ستون Profit مقدار سود/زیان آن دوره را نشان میدهد.
نکته: برای عملکرد بهینه، حتماً از یک جدول تقویم (Calendar
) به عنوان منبع تاریخ استفاده کنید. این کار باعث میشود که محاسبات به طور مؤثرتر و با دقت بیشتری انجام شوند.
این توضیحات و فرمولها روش محاسبهی سود و زیان را بر اساس دورههای زمانی مختلف (ماهانه، سالانه و فصلی) با استفاده از DAX نشان میدهد. به یاد داشته باشید که نام ستونها را با نام ستونهای خود تطبیق دهید.
4.محاسبه ضرر و زیان بر اساس مشتریان: محاسبه سود یا زیان حاصل از هر مشتری یا گروه از مشتریان.
بیایید سناریوی “محاسبه ضرر و زیان بر اساس مشتریان” را با جزئیات بیشتر بررسی کنیم، همراه با کد DAX و مثال. فرض میکنیم جدولی به نام Sales
با ستونهای زیر داریم:
CustomerID
: شناسه مشتری (مثلاً، یک عدد منحصر به فرد برای هر مشتری)CustomerName
: نام مشتریSalesAmount
: مبلغ فروشCostOfGoodsSold
: هزینه کالای فروش رفتهOperatingExpenses
: هزینههای عملیاتی (این هزینهها را میتوان به ازای هر مشتری یا به صورت کلی تخصیص داد، بستگی به نوع دادههای شما دارد).
هدف ما محاسبه سود یا زیان برای هر مشتری است. برای این کار، از توابع CALCULATE
, SUM
, و ALLEXCEPT
در DAX استفاده میکنیم. اگر هزینههای عملیاتی به هر مشتری اختصاص داده شدهاند، محاسبه دقیقتر خواهد بود. در غیر این صورت، تخصیص هزینههای عملیاتی به مشتریان نیازمند روش تخصیص دیگری (مثلاً نسبت به مبلغ فروش هر مشتری) است.
فرمول DAX (با هزینههای عملیاتی اختصاصی به هر مشتری):
توضیح فرمول:
SUM ( Sales[SalesAmount] ) - SUM ( Sales[CostOfGoodsSold] ) - SUM ( Sales[OperatingExpenses] )
: محاسبه سود خالص برای هر مشتری با کم کردن هزینههای مرتبط از مبلغ فروش.CALCULATE ( ... , ALLEXCEPT ( Sales, Sales[CustomerID] ) )
: این بخش اطمینان میدهد که محاسبه برای هر مشتری به صورت جداگانه انجام میشود.ALLEXCEPT
تمام فیلترها را به جز فیلتر بر رویCustomerID
حذف میکند.
فرمول DAX (بدون هزینههای عملیاتی اختصاصی به هر مشتری – روش تخصیص ساده):
اگر هزینههای عملیاتی به صورت کلی برای همه مشتریان است و نمیتوان آنها را به صورت اختصاصی به هر مشتری تخصیص داد، میتوان از یک روش تخصیص ساده استفاده کرد (مثلاً نسبت به میزان فروش):
توضیح فرمول ساده شده:
TotalSales
وTotalOperatingExpenses
: مجموع فروش و هزینه عملیاتی کل را محاسبه میکنند.CustomerSales
: مجموع فروش هر مشتری را محاسبه میکند.AllocatedOperatingExpenses
: هزینه عملیاتی را به نسبت فروش هر مشتری تخصیص میدهد.- بخش
RETURN
: سود هر مشتری را با کم کردن هزینههای کالای فروش رفته و هزینه عملیاتی تخصیص داده شده از مجموع فروش مشتری محاسبه میکند.
مثال:
فرض کنید جدول Sales
به شکل زیر باشد (با هزینههای عملیاتی اختصاصی به هر مشتری):
پس از اجرای فرمول DAX (اولین فرمول)، نتیجه به صورت زیر خواهد بود:
این مثال نشان میدهد که چگونه میتوان سود یا زیان هر مشتری را به صورت جداگانه محاسبه کرد. روش تخصیص هزینههای عملیاتی به مشتریان به ساختار دادههای شما و چگونگی ثبت هزینهها بستگی دارد. اگر هزینههای عملیاتی به ازای هر مشتری وجود نداشته باشد، باید از روش تخصیص مناسب استفاده کنید.ضرر و زیان کسب و کار
این توضیحات و فرمولها روش محاسبهی سود و زیان را بر اساس مشتریان مختلف با استفاده از DAX نشان میدهد. به یاد داشته باشید که نام ستونها را با نام ستونهای خود تطبیق دهید. اگر هزینههای عملیاتی به ازای هر مشتری ثبت نشده باشند، باید یک روش تخصیص مناسب را به کار ببرید.
بدون دیدگاه