Power BI - 在日期中添加 N 个工作日

问题描述 投票:0回答:2

我有一个日历表,其中有一列存储用于指示日历日期是否为工作日(工作日)的标志。 WorkDay_FL = 0 表示日期是周末或假日。我想创建一个计算列以向给定日期添加 5 个工作日。

因此,如果日期 = 12/30/2020,即 2020 年 12 月 30 日,那么添加 5 个工作日应该得到 1/7/2020(2021 年 1 月 7 日)。

31-Dec-2020 = WeekDay
1-Jan-2021 = Holiday
2-Jan-2021 = Weekend
3-Jan-2021 = Weekend
4-Jan-2021 = WeekDay
5-Jan-2021 = WeekDay
6-Jan-2021 = WeekDay
7-Jan-2021 = WeekDay

DAX 公式或 Power Query 函数都可以。

谢谢

powerbi dax powerquery
2个回答
0
投票

最简单的方法是在日历表中创建一个计算表,其中包含工作日的渐进数字。例如,假设您的 WorkDay_FL 为 1 表示工作日

WorkDayProg = 
VAR CurDate = 'Date'[Date]
RETURN CALCULATE( SUM('Date'[WorkDay_FL]), 'Date'[Date] <= CurDate, REMOVEFILTERS('Date') )

并使用 WorkDayProg 计算列仅计算工作日的未来(或过去)日期

FiveWorkingDaysInTheFuture =
VAR CurrentWorkDay =
    MAX( 'Date'[WorkDayProg] )
RETURN
    CALCULATE(
        MIN( 'Date'[Date] ),
        'Date'[WorkDayProg] = CurrentWorkDay + 5,
        REMOVEFILTERS( 'Date' )
    )

我们使用 MIN,因为非工作日的 WorkDayProg 等于最后一个工作日。


0
投票

我使用了嵌套的if语句没有使用日历或排名函数来解决这个问题。我想在“网站访问结束日期”列中添加 10 个工作日,因此我计算了“结束日期”和“结束日期”+11 之间的网络天数。如果答案是 10 天,那么它将在“结束日期”列中添加 11 天,如果不是,那么在下一步中,我计算“结束日期”和“结束日期”+12 之间的网络天数。同样,如果答案是 10,它将在“结束日期”列中添加 11 天,这实际上给了我 10 个网络天数,如果不是,那么在下一步中,我计算了“结束日期”和“结束日期”之间的网络天数+ 13 并执行相同操作,直到“结束日期”+14 天。因为如果我尝试查找日期 dd/mm/yy 和 dd/mm/yy +15 之间的网络天数,则工作日将始终超过 10,因为两周内(即 14 天)最多可有 4 个假期。这是代码。

WORKINDAY = IF(NETWORKDAYS('监控访问报告_3002'[现场访问结束日期], '监控访问报告_3002'[现场访问结束日期]+11)=10,'监控访问报告_3002'[现场访问结束日期]+11, IF(NETWORKDAYS('监控访问报告_3002'[现场访问结束日期], '监控访问报告_3002'[现场访问结束日期]+12)=10,'监控访问报告_3002'[现场访问结束日期]+12,IF(NETWORKDAYS ('监控访问报告_3002'[现场访问结束日期],'监控访问报告_3002'[现场访问结束日期]+13)=10,'监控访问报告_3002'[现场访问结束日期]+13,'监控访问报告_3002'[现场访问结束日期]+14)))

© www.soinside.com 2019 - 2024. All rights reserved.