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