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

If statement 使用两个不同日期范围的If-then语句,if-statement,powerbi,powerquery,m,If Statement,Powerbi,Powerquery,M,在Power BI中,我使用的是一个句点表,它应用步骤获取今天的日期,设置范围,将范围转换为一个表,然后在Power查询中设置输出。一切都按预期进行,但重点是在范围步骤 这是原样: = { {"Day", Date.AddDays(TodaysDate,-1), Date.AddDays(TodaysDate,-1), 1},

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

这是原样:

    = {
                    {"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),
    ] ....
请注意,“天”是“昨天”。 我正在努力做到这一点,这样人们就可以看到前一天的生产工作,而周一的前一天是周五

以下是全部代码:

    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},

我在任何地方都看不到问题。你到底遇到了什么问题?我试图做一个if语句,但它是错误的。我不知道power查询中的正确语法,无法为“如果今天是星期一,那么日期将是星期五,否则日期将是今天-1”执行if语句。我如何使上述尝试起作用?您希望结果是什么样子,为什么要写两次?假设今天是19年5月20日星期一。我想显示的“一天”是5/17/19,因为那是最后一个工作日。我在顶部添加了整个代码,但是需要一个“范围”来避免错误。我仍然不知道您希望最终的表是什么样子。与您的屏幕截图相同的格式?