If then 语句使用两个不同的日期范围

If then Statement using Two Different Date Ranges

在 Power BI 中,我使用句点 table 应用步骤来获取今天的日期,设置范围,将范围转换为 table,然后将输出设置为电源查询。一切都按预期进行,但重点是范围步骤。

这是原样:

    = {
                    {"Day", 
                    Date.AddDays(TodaysDate,-1), 
                    Date.AddDays(TodaysDate,-1),
            1},
                    {"Week to Date", 
                    Date.From(Date.StartOfWeek(TodaysDate,Day.Thursday)), 
                    Date.AddDays( Date.From(Date.StartOfWeek(TodaysDate,Day.Thursday)) , +6), 
            2},
                    {"Week", 
                    Date.AddWeeks( Date.From(Date.StartOfWeek(TodaysDate,Day.Thursday)) , -1), 
                    Date.AddDays( Date.From(Date.StartOfWeek(TodaysDate,Day.Thursday)) , -1), 
....

这是示例输出:

然而,我想要的是,如果今天等于星期一,则只显示星期五的日期。 这是我的尝试:

= {
            {"Day", 
            if Date.DayofWeek(TodaysDate) = 1 
       then 
    [
            Date.AddDays(TodaysDate,-3), 
            Date.AddDays(TodaysDate,-3),
    ]
            else
    [
            Date.AddDays(TodaysDate,-1), 
            Date.AddDays(TodaysDate,-1),
    ] ....

请注意 "Day" 是 "Yesterday"。 我正在努力完成这项工作,以便人们可以看到前一天的生产工作,而周一的前一天是周五。

完整代码如下:

    let
    TodaysDate = Date.From(DateTimeZone.FixedUtcNow()),
    Ranges = {
                {"Day", 
                Date.AddDays(TodaysDate,-1),                 
                Date.AddDays(TodaysDate,-1), 

        1},
                {"Week to Date", 
                Date.From(Date.StartOfWeek(TodaysDate,Day.Thursday)), 
                Date.AddDays( Date.From(Date.StartOfWeek(TodaysDate,Day.Thursday)) , +6), 
        2},
        {"Week", 
                Date.AddWeeks( Date.From(Date.StartOfWeek(TodaysDate,Day.Thursday)) , -1), 
                Date.AddDays( Date.From(Date.StartOfWeek(TodaysDate,Day.Thursday)) , -1), 
        3},
                {"Month To Date", 
                Date.From(Date.StartOfMonth(TodaysDate)), 
                TodaysDate, 
                4},
                {"Month", 
                Date.AddMonths(Date.From(Date.StartOfMonth(TodaysDate)),-1), 
                Date.AddMonths(Date.From(Date.EndOfMonth(TodaysDate)),-1), 
                5},
                {"Rolling 13Wks", 
                Date.AddWeeks(TodaysDate,-13) + #duration(1,0,0,0), 
                TodaysDate, 
                6},
                {"Year To Date", 
                Date.From(Date.StartOfYear(TodaysDate)), 
                TodaysDate, 
                7}

             },
    GetTables = List.Transform(Ranges, 
            each CreatePeriodTable(_{0}, _{1}, _{2}, _{3})),
    Output = Table.Combine(GetTables),
    #"Filtered Rows" = Table.SelectRows(Output, each true)
in
    #"Filtered Rows"

我认为最简单的事情是为前一天创建一个变量:

let
    TodaysDate = Date.From(DateTimeZone.FixedUtcNow()),
    PrevWorkDate = if Date.DayOfWeek(TodaysDate) = 1
                   then Date.AddDays(TodaysDate,-3)
                   else Date.AddDays(TodaysDate,-1),

    Ranges = {
                {"Day", 
                PrevWorkDate,                 
                PrevWorkDate, 

        1},

    [...etc...]

否则,您也许可以这样做:

let
    TodaysDate = Date.From(DateTimeZone.FixedUtcNow()),
    Ranges = {
        if Date.DayOfWeek(TodaysDate) = 1
        then
            {"Day", 
                Date.AddDays(TodaysDate,-3), 
                Date.AddDays(TodaysDate,-3),
             1}
        else
            {"Day", 
                Date.AddDays(TodaysDate,-1), 
                Date.AddDays(TodaysDate,-1),
             1},