【问题标题】:Weekly Period Column For Each Month in Power BIPower BI 中每个月的周期间列
【发布时间】:2020-01-02 16:34:59
【问题描述】:

我有一个带有日期列的日期表。我想每个月都有一个周期。到目前为止,我已经构建了一个自定义列,每个周期从星期一开始,到星期日结束:

let         
startOfWeek = Date.StartOfWeek([Date]),
endOfWeek = Date.EndOfWeek([Date]),
yearOfStartOfWeek = Date.Year(startOfWeek),
yearOfEndOfWeek = Date.Year(endOfWeek),
    valueToReturn = if yearOfStartOfWeek = yearOfEndOfWeek then
    Text.From(Date.StartOfWeek([Date])) & " - " & Text.From(Date.EndOfWeek([Date]))
else
    Text.From(Date.StartOfWeek([Date])) & " - " & Text.From(Date.EndOfWeek(endOfWeek))
in valueToReturn

这将为我提供下面的自定义列“每周期间”:

但我需要的是这种每周周期:

  • 每个月的第一周从当月的第一天开始,并且必须是工作日(不是周末)。例如,2019 年 9 月的第一周从 Monday 2nd 开始。此外,每个月的最后一个周期间以该月的最后一天结束。 您是否知道如何更改此代码或我需要使用哪些其他代码才能拥有如下列的每周周期?非常感谢。

  • 我还想要另一列,上面给出月份的周数。如果有人可以帮助我在日期表中构建这两个自定义列,我将不胜感激。

【问题讨论】:

    标签: datetime powerbi biweekly


    【解决方案1】:

    我在查询设计器(语言 M)中使用以下表达式进行了操作。转到Add Column > Custom Column(我在两个单独的列中做了):

    'Get first day of month
    FirstDayOfMonth = Date.StartOfMonth([Column1]) 'Make sure the outcome is a date format
    
    'Get first working day of month (without Saturday and Sunday)
    FirstWorkingDayOfMonth = if Date.DayOfWeek([FirstDayInMonth]) = Day.Saturday 
                                then Date.AddDays([FirstDayInMonth], 2) 
                             else if Date.DayOfWeek([FirstDayInMonth]) = Day.Sunday 
                                then Date.AddDays([FirstDayInMonth], 1) 
                             else [FirstDayInMonth]
    

    对于周数列,您可以使用Date.DayOfWeek() 函数,就像我在上面使用的那样。

    【讨论】:

    • 非常感谢,我刚刚在 M 中找到了给出确切每周周期的代码。并在此处发布答案。祝你好运。
    【解决方案2】:

    对于那些可能有帮助的人,我在这里找到了每周期间的答案:

    let         
    startOfWeek = Date.StartOfWeek([Date]),
    endOfWeek = Date.EndOfWeek([Date]),
    weekOfStartOfWeek = Date.WeekOfYear(startOfWeek),
    weekOfEndOfWeek = Date.WeekOfYear(endOfWeek),
    
    valueToReturn = if  (Date.Month(Date.StartOfWeek([Date])) = Date.Month([Date]) and Date.Month(Date.EndOfWeek([Date])) = Date.Month([Date]))
    then 
    Text.From(Date.StartOfWeek([Date])) & " - " & Text.From(Date.EndOfWeek([Date])) 
    
    else if  Date.Month(Date.StartOfWeek([Date])) <> Date.Month([Date]) then
        Text.From([Date.StartOfMonth([Date])]) & " - " & Text.From(Date.EndOfWeek(endOfWeek))
    
       else
        Text.From(Date.StartOfWeek([Date])) & " - " & Text.From(Date.EndOfMonth([Date]))
    
    in
    valueToReturn
    

    【讨论】:

      猜你喜欢
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 2021-12-01
      • 2021-12-10
      相关资源
      最近更新 更多