powerbi - PowerBI - 如何使用 PowerQuery 提取最近 2 个工作日
问题描述
我需要帮助来尝试使用 Power BI 上的 PowerQuery 提取包括今天在内的最后 2 个工作日(如果今天是工作日)。
到目前为止,我可以拉最后 2 天,但需要帮助排除周末。这就是我到目前为止所拥有的。
let
DateList = {Number.From( DateTime.Date( Date.AddDays(DateTimeZone.LocalNow(),-1) ))..Number.From( DateTime.Date( Date.AddDays(DateTimeZone.LocalNow(),0) ))},
#"Converted to Table" = Table.FromList(DateList, Splitter.SplitByNothing(), null, null, ExtraValues.Ignore),
#"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Date"}}),
#"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Date", type date}})
in
#"Changed Type"
解决方案
试试这个
let
DateList = {Number.From( DateTime.Date( Date.AddDays(DateTimeZone.LocalNow(),-3) ))..Number.From( DateTime.Date( Date.AddDays(DateTimeZone.LocalNow(),0) ))},
#"Converted to Table" = Table.FromList(DateList, Splitter.SplitByNothing(), null, null, ExtraValues.Ignore),
#"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Date"}}),
#"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Date", type date}}),
#"Inserted Day of Week" = Table.AddColumn(#"Changed Type", "Day of Week", each Date.DayOfWeek([Date]), Int64.Type),
#"Filtered Rows" = Table.SelectRows(#"Inserted Day of Week", each [Day of Week] <> 5),
#"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each [Day of Week] <> 6),
#"Kept Last Rows" = Table.LastN(#"Filtered Rows1", 2),
#"Removed Columns" = Table.RemoveColumns(#"Kept Last Rows",{"Day of Week"})
in
#"Removed Columns"
这将从列表中删除周六和周日,并保留最后两天没有这些天。
Update1:另一种方法,但我认为您需要四天时间
let
//d1 = Date.FromText("03.04.2021"),
d1 = DateTimeZone.LocalNow(),
d2 = Date.AddDays(d1,-1),
d3 = Date.AddDays(d1,-2),
d4= Date.AddDays(d1,-3),
dlist= {d1,d2,d3,d4},
dTable = Table.FromList(dlist, Splitter.SplitByNothing(),null, null, ExtraValues.Ignore),
changeType = Table.TransformColumnTypes(dTable,{{"Column1", type date}}),
addWeekday = Table.AddColumn(changeType, "Weekday", each Date.DayOfWeek([Column1]), Int64.Type),
filter = Table.SelectRows(addWeekday, each [Weekday] <> 5 and [Weekday] <> 6),
keepRows = Table.FirstN(filter,2),
removeColumns = Table.RemoveColumns(keepRows,{"Weekday"})
in
removeColumns
更新 2:另一种不同的方法是使用 if 条件
let
// td = Date.FromText("03.04.2021"),
td = DateTime.Date(DateTime.LocalNow()),
d1= if Date.DayOfWeek(td) = 6 then Date.AddDays(td,-2) else if Date.DayOfWeek(td) = 5 then Date.AddDays(td,-1) else td,
d2 = if Date.DayOfWeek(d1) = 0 then Date.AddDays(d1,-3) else Date.AddDays(d1,-1),
dList = {d1,d2}
in
dList
推荐阅读
- charts - 工具提示无法与饼图上的 activeIndex 一起正常工作(ReCharts)
- python-3.x - 使用 PySNMP 获取 OID 的数据类型
- amazon-dynamodb - 对于同时具有分区键和排序键的表,如何最好地仅对主分区键执行查询?
- java - set @ActiveProfiles from test runner class
- mysql - 将 mysql 选择结果与 LIKE 和多个零混淆 (%00%)
- azure-iot-edge - Running IoT Edge Module in NVIDIA Runtime
- java - 在手动创建的实例中注入组件
- javascript - 如何修复 JavaScript 中的“无法读取未定义的属性‘匹配’”错误?
- ios - 如何直接显示我的应用程序位置设置
- php - .htaccess: RewriteCond: bad flag delimiters - apache error