درک پارامترهای DATEADD در Calendar-Based Time Intelligence در DAX
DATEADD(
,
,
,
[Extension],
[Truncation]
)
پارامترها
: ستون تاریخ یا جدول تقویم
: تعداد دوره (مثبت یا منفی)
: DAY, MONTH, QUARTER, YEAR
[Extension] : نحوه مدیریت زمانی که دوره مقصد طولانیتر است
[Truncation] : نحوه مدیریت زمانی که دوره مقصد کوتاهتر است
Sales Last Month =
CALCULATE(
[Sales Amount],
DATEADD('Date'[Date], -1, MONTH)
)
مشکل ماههای با طول متفاوت
فرض کنید فوریه 2024 (29 روزه) را با ژانویه 2024 (31 روزه) مقایسه میکنید.
سؤال مهم:
آیا باید 29 روز اول ژانویه برگردانده شود؟
یا کل ماه ژانویه؟
یا روزهای انتهایی هم لحاظ شوند؟
اینجاست که پارامترهای Extension و Truncation اهمیت پیدا میکنند.
پارامتر Extension
این پارامتر تعیین میکند وقتی دوره مقصد طولانیتر است چه اتفاقی بیفتد.
حالتها
EXTENDING (پیشفرض)
کل دوره مقصد در نظر گرفته میشود.
PRECISE
فقط روزهای معادل حفظ میشوند.
ENDALIGNED
پایان دوره همراستا میشود.
مثال عملی Extension
Sales Last Month Precise =
CALCULATE(
[Sales Amount],
DATEADD(
'GregorianCalendar',
-1,
MONTH,
PRECISE
)
)
در این حالت:
اگر فوریه 29 روز داشته باشد، فقط 29 روز متناظر از ژانویه انتخاب میشود.
پارامتر Truncation
زمانی استفاده میشود که دوره مقصد کوتاهتر از دوره مبدا باشد.
حالتها
ANCHORED
روزهای بدون معادل به آخرین روز دوره مقصد متصل میشوند.
BLANKS
روزهای بدون معادل مقدار Blank برمیگردانند.
مثال عملی Truncation
Sales With Anchored =
CALCULATE(
[Sales Amount],
DATEADD(
'GregorianCalendar',
-1,
MONTH,
EXTENDING,
ANCHORED
)
)
Average Sales 6M =
CALCULATE(
AVERAGEX(
VALUES('Date'[Month]),
[Sales Amount]
),
DATESINPERIOD(
'Date'[Date],
MAX('Date'[Date]),
-6,
MONTH
)
)
Average Sales 6M Calendar =
CALCULATE(
AVERAGEX(
VALUES('GregorianCalendar'[Month]),
[Sales Amount]
),
DATESINPERIOD(
'GregorianCalendar',
MAX('GregorianCalendar'[Date]),
-6,
MONTH,
ENDALIGNED
)
)
جمعبندی
Calendar-Based Time Intelligence سطح جدیدی از کنترل را در اختیار توسعهدهندگان Power BI قرار میدهد.
با استفاده از پارامترهای:
Extension
Truncation
میتوانید رفتار DATEADD را دقیقاً مطابق نیاز تحلیلی خود تنظیم کنید.
این موضوع مخصوصاً در پروژههای حرفهای BI و تحلیلهای مالی سازمانی اهمیت بالایی دارد.
دیدگاهتان را بنویسید