【问题标题】:In DAX, can I create a function that calculates the working days between two date/time fields?在 DAX 中,我可以创建一个计算两个日期/时间字段之间的工作日的函数吗?
【发布时间】:2023-03-22 08:12:01
【问题描述】:

如果不涉及时间,已经有很多选项可以计算两个日期之间的工作日数,但是如果您将其保留为日期/时间,有没有办法获得工作日数(带小数余数) 在 DAX 中的两个时间点之间(例如 Power Query/Power BI)?

【问题讨论】:

  • 你能举个例子说明你的数据表是什么样的吗?
  • 两列,日期/时间格式,例如:开始日期 2018 年 6 月 5 日上午 8:00 完成日期:2018 年 8 月 5 日下午 5:00 创建一个计算列来计算这些日期之间的工作日数(不包括周末)。

标签: excel powerbi dax powerquery powerbi-desktop


【解决方案1】:

假设您的开始和结束时间发生在工作日,那么您应该能够获取两个日期之间的时间差并减去该期间的非工作日数。

您需要一个日历表来提供帮助。说,

Dates = CALENDARAUTO()

那么您的工作日度量可能如下所示:

WorkingDays =
    StartFinish[Finish Date] - StartFinish[Start Date] -
    SUMX(
        FILTER(Dates,
            Dates[Date] > StartFinish[Start Date] && 
            Dates[Date] < StartFinish[Finish Date]),
        IF(WEEKDAY(Dates[Date]) = 1 || WEEKDAY(Dates[Date]) = 7, 1, 0)
    )

如果您的日历表中有 IsWorkDay 列(可能包括节假日和周末),您可以在最后一行引用它:

        IF(Dates[IsWorkDay], 0, 1)

请注意,此方法假定工作日为 24 小时,而不是更标准的 8 小时。如果您不希望小数部分表示 24 小时的部分,则必须进行一些调整。要切换到 8 小时工作日的一部分,只需将小数部分乘以 24/3 = 3。

【讨论】:

    猜你喜欢
    • 2012-02-13
    • 2018-08-03
    • 2010-09-20
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多