我正在寻找一个公式来计算电力支点中两个日期之间的工作日/工作日数。
我使用以下查询在T-SQL中执行相同的操作
DATEDIFF(dd, Date1, GETDATE()) - (DATEDIFF(wk, Date1, GETDATE()) * 2) -
CASE WHEN DATEPART(dw, Date1) = 1 THEN 1 ELSE 0 END +
CASE WHEN DATEPART(dw, GETDATE()) = 1 THEN 1 ELSE 0 END END
我正在寻找PowerPivot中的类似查询。
答案 0 :(得分:2)
首先,您需要创建一个日期表。这将帮助您解决此问题,并使您能够使用许多其他Time Intelligence Functions。您可以手动创建或使用
创建CalendarDate | Month Key | Month Name | Quarter Name | Year
-----------------------------------------------------------
1/1/2014 | 1.00 | Jan | Q1 | 2014
1/2/2014 | 1.00 | Jan | Q1 | 2014
...
2/1/2014 | 2.00 | Feb | Q1 | 2014
....
8/1/2014 | 8.00 | Aug | Q3 | 2014
..
9/2/2014 | 9.00 | Sep | Q3 | 2014
..
12/16/2014 | 12.00 | Dec | Q4 | 2014
在Dates Table中,您可以创建一个计算列,用于确定每天是否为工作日。请调用IsWeekday专栏
=SWITCH(WEEKDAY([CalendarDate]),7,FALSE(),1,FALSE(),TRUE())
如果星期几是一周的第7天或第1天(星期六/星期日),则SWITCH语句将返回false
现在,在包含您的交易的表格中,您可以创建一个名为Number Of Weekdays的新计算列。这将
=CALCULATE(COUNTA(Dates[IsWeekday]),
DATESBETWEEN(Dates[CalendarDate],
TransactionTable[date1],
TransactionTable[date2]
)
)
以下是我推荐的与此方法相关的两篇文章。
答案 1 :(得分:0)
另一种解决方案是使用下面的dax代码创建一个快速测量列:
WeekDays =
SUMX(
SELECTCOLUMNS(
CALENDAR(min('MyTable'[Time1]), min('MyTable'[Time2])),
"Date", min('MyTable'[Time1]),
"BDay", IF(WEEKDAY([Date],3) < 5, 1, 0)
),
[BDay]
)
答案 2 :(得分:0)
我在 Power BI 中寻找一种计算工作日的算法方法时遇到了这个问题。我发现的解决方案建立在生成表的基础上(手动或自动)。他们确实工作。但就像在原始问题中提出的那样,我希望它只是算术。
所以尽管问题得到了回答,但如果其他人正在寻找和我一样的人,下面是一个示例,说明如何在不使用日历生成的情况下做到这一点。 (我确实使用这样的日历,但仅限于特定的红日)。
Weekdays from Dec =
Var DaysSinceStart = calculate(DATEDIFF(DATE(2020,12,04),max('MyTable'[Date created]),DAY)*1.0)
Var WeeksSinceStart = DaysSinceStart/7.0
Var LeftOverWeekDays = INT((WeeksSinceStart - int(WeeksSinceStart)) * 7.0 + 0.5)
Var ThisWeekDay = WEEKDAY(max('MyTable'[Date created]),2)
Var SatReductionWeekDaysLeft = if(((ThisWeekDay-LeftOverWeekDays)<0),1,0)
Var SunReductionWeekDaysLeft = if(((ThisWeekDay-LeftOverWeekDays)<-1),1,0)
RETURN INT(WeeksSinceStart)*5 + LeftOverWeekDays - SatReductionWeekDaysLeft - SunReductionWeekDaysLeft