如何用 Power Query M 语言编写 WorkdayDiff 日期函数
How to write a WorkdayDiff date function in Power Query M Language
我正在尝试创建一个自定义函数来计算两个日期之间的工作日差异。我在 SSRS 中完成了相同的功能:
Public Function WorkdayDiff(StartDate As Date, EndDate As Date) As Date
Return Datediff("ww", StartDate, EndDate, vbMonday) +
Datediff("ww", StartDate, EndDate, vbTuesday) +
Datediff("ww", StartDate, EndDate, vbWednesday) +
Datediff("ww", StartDate, EndDate, vbThursday) +
Datediff("ww", StartDate, EndDate, vbFriday)
End Function
我现在尝试用 Power Query M 语言做同样的事情,但它让我一直说:
Type is not defined.
这是我在 Power BI 高级编辑器中的代码:
(DateStart as Date, DateEnd as Date) as Date =>
let
WorkdayDiff = Datediff("ww",DateStart ,DateEnd, vbMonday) +
Datediff("ww",DateStart ,DateEnd, vbTuesday) +
Datediff("ww",DateStart ,DateEnd, vbWednesday) +
Datediff("ww",DateStart ,DateEnd, vbThursday) +
Datediff("ww",DateStart ,DateEnd, vbFriday)
in
WorkdayDiff
您的代码有几个问题。
你得到 Type not defined
的原因是 M 区分大小写,在引用数据类型时你需要使用 date
而不是 Date
。 M 也没有 Datediff
功能或理解 vbMonday
的含义。您必须使用 M 函数,而不是仅仅粘贴 SSRS 代码并希望它起作用。
这是 this post.
风格的 M 中可能的实现
let
WorkdayDiff = (StartDate as date, EndDate as date) as number =>
let
DateList = List.Dates(StartDate, Number.From(EndDate - StartDate) + 1, #duration(1,0,0,0)),
RemoveWeekends = List.Select(DateList, each Date.DayOfWeek(_, Day.Monday) < 5),
CountDays = List.Count(RemoveWeekends)
in
CountDays
in
WorkdayDiff
我正在尝试创建一个自定义函数来计算两个日期之间的工作日差异。我在 SSRS 中完成了相同的功能:
Public Function WorkdayDiff(StartDate As Date, EndDate As Date) As Date
Return Datediff("ww", StartDate, EndDate, vbMonday) +
Datediff("ww", StartDate, EndDate, vbTuesday) +
Datediff("ww", StartDate, EndDate, vbWednesday) +
Datediff("ww", StartDate, EndDate, vbThursday) +
Datediff("ww", StartDate, EndDate, vbFriday)
End Function
我现在尝试用 Power Query M 语言做同样的事情,但它让我一直说:
Type is not defined.
这是我在 Power BI 高级编辑器中的代码:
(DateStart as Date, DateEnd as Date) as Date =>
let
WorkdayDiff = Datediff("ww",DateStart ,DateEnd, vbMonday) +
Datediff("ww",DateStart ,DateEnd, vbTuesday) +
Datediff("ww",DateStart ,DateEnd, vbWednesday) +
Datediff("ww",DateStart ,DateEnd, vbThursday) +
Datediff("ww",DateStart ,DateEnd, vbFriday)
in
WorkdayDiff
您的代码有几个问题。
你得到 Type not defined
的原因是 M 区分大小写,在引用数据类型时你需要使用 date
而不是 Date
。 M 也没有 Datediff
功能或理解 vbMonday
的含义。您必须使用 M 函数,而不是仅仅粘贴 SSRS 代码并希望它起作用。
这是 this post.
风格的 M 中可能的实现let
WorkdayDiff = (StartDate as date, EndDate as date) as number =>
let
DateList = List.Dates(StartDate, Number.From(EndDate - StartDate) + 1, #duration(1,0,0,0)),
RemoveWeekends = List.Select(DateList, each Date.DayOfWeek(_, Day.Monday) < 5),
CountDays = List.Count(RemoveWeekends)
in
CountDays
in
WorkdayDiff