В Power BI я использую таблицу периодов, которая применяет шаги для получения текущей даты, устанавливает диапазоны, преобразует диапазоны в таблицу, а затем устанавливает вывод в Power Query. Все работает как положено, но фокус на шаге диапазонов.
Вот как:
= {
{"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"