Power BI DAX代码修改:将休息日从周六周日改为仅周五
Power BI DAX调整:将休息日从周六周日改为仅周五
以下是修改后的DAX代码,已将休息日设置为仅周五:
Business Hours Number Format = VAR _WorkStart = TIME( 8, 00, 0 ) VAR _WorkFinish = TIME( 17, 00, 0 ) VAR _1DayWorkingTime = DATEDIFF( _WorkStart, _WorkFinish, HOUR ) VAR _StartDate = DATEVALUE([Start (Date/Time)] ) // 在此设置开始日期列 VAR _EndDate = DATEVALUE([Finish (Date/Time)] ) // 在此设置结束日期列 VAR _StartDateTime = TIMEVALUE([Start (Date/Time)] ) // 在此设置开始时间列 VAR _EndDateTime = TIMEVALUE([Finish (Date/Time)] ) // 在此设置结束时间列 VAR _DaysBetweenStartFinish = ADDCOLUMNS( 'Date Table', "DayN", WEEKDAY( [Date], 2 ) ) // 在此使用日期表 VAR _WorkingDaysBetweenStartFinish = COUNTX( FILTER( _DaysBetweenStartFinish, [Date] > _StartDate && [Date] < _EndDate && [DayN] <> 5 && [Holiday Yes/No]="No" ), [DayN] ) // 调整后仅周五为休息日 // 设置[Holiday = No]以从计算中排除节假日 VAR _Day1WorkingHour = IF( WEEKDAY( _StartDate, 2 ) <> 5, ( MAX( _WorkFinish, _StartDateTime ) - MAX( _StartDateTime, _WorkStart ) ) * 24, 0 ) VAR _LastDayWorkingHour = IF( WEEKDAY( _EndDate, 2 ) <> 5, ( MIN( _WorkFinish, _EndDateTime ) - MIN( _EndDateTime, _WorkStart ) ) * 24, 0 ) VAR _Duration = IF( _StartDate = _EndDate&&WEEKDAY(_StartDate,2) <> 5, MAX(( MIN( _WorkFinish, _EndDateTime ) - MAX( _WorkStart, _StartDateTime ) ) * 24, 0), _WorkingDaysBetweenStartFinish * _1DayWorkingTime + _Day1WorkingHour + _LastDayWorkingHour ) RETURN _Duration
调整说明
- 核心逻辑改动:原代码通过
[DayN]<6排除周六、周日(WEEKDAY([Date],2)返回1=周一至7=周日),现改为[DayN]<>5,仅将周五标记为休息日 - 同步更新所有涉及工作日判断的分支:
- 中间工作日计数的过滤条件
- 开始日工时计算的判断逻辑
- 结束日工时计算的判断逻辑
- 开始/结束日为同一天时的工时计算判断
内容的提问来源于stack exchange,提问作者Asem omar
相关产品推荐
相关产品推荐

