You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query中如何筛选最近120分钟的DateTime数据?

解决Power Query筛选最近120分钟数据的问题

问题排查与修正点:

  • 步骤引用错误:筛选步骤#"Filtered Rows1"中,你引用的是#"Changed Type",但Datum/Tid列是在#"Added Custom"后新增,并在#"Changed Type1"中转为datetime类型的,必须引用#"Changed Type1"才能获取正确的时间列。
  • 持续时间计算错误:#duration(0,1,20,0)代表1小时20分钟,而你需要的是120分钟(2小时),正确写法应为#duration(0,2,0,0),或更直观的Duration.FromMinutes(120)。
  • 初始语法错误:你最初尝试的Duration.Minutes(DateTime.LocalNow() -(120))逻辑错误,Duration.Minutes是提取持续时间的分钟数,而非创建持续时间,不能直接用于时间减法。

修正后的完整代码:

let
    Source = Table.Combine({tab_Silosar, tab_Mjölk, tab_Grädde, tab_Restmjölk, tab_Gränsmjölk, tab_SötGränsmjölk, tab_Permeat, tab_Pastörer, tab_Filråvara, tab_Hydrolys, tab_Syrning}),
    #"Filtered Rows" = Table.SelectRows(Source, each ([Tank] <> null)),
    #"Reordered Columns" = Table.ReorderColumns(#"Filtered Rows",{"ID", "Streckkod", "Datum", "Tid", "Tank", "Produkt", "Fett", "Protein", "TS", "Laktos", "SNF", "Glukos", "pH", "Nitrat", "Nitrit", "Temp", "Ålder", "Volym", "LoS", "UTS", "Konsistens", "Antibiotika", "Sign", "Kommentar"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Reordered Columns",{{"ID", type any}, {"Streckkod", type text}, {"Datum", type date}, {"Tid", type time}, {"Tank", type text}, {"Produkt", type text}, {"Fett", type number}, {"Protein", type number}, {"TS", type number}, {"Laktos", type number}, {"SNF", type number}, {"Glukos", type number}, {"pH", type number}, {"Nitrat", type number}, {"Nitrit", type number}, {"Temp", type number}, {"Ålder", type number}, {"Volym", Int64.Type}, {"LoS", Int64.Type}, {"UTS", Int64.Type}, {"Konsistens", Int64.Type}, {"Antibiotika", type text}, {"Sign", type text}, {"Kommentar", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Datum/Tid", each [Datum]&[Tid]),
    #"Changed Type1" = Table.TransformColumnTypes(#"Added Custom",{{"Datum/Tid", type datetime}}),
    #"Filtered Rows1" = Table.SelectRows(#"Changed Type1", each ([#"Datum/Tid"] >= DateTime.LocalNow() - #duration(0,2,0,0)))
in
    #"Filtered Rows1"

可选简化写法:

用Duration.FromMinutes(120)替代#duration,代码可读性更强:

#"Filtered Rows1" = Table.SelectRows(#"Changed Type1", each ([#"Datum/Tid"] >= DateTime.LocalNow() - Duration.FromMinutes(120)))

提示:若需避免时区偏差,可将DateTime.LocalNow()替换为DateTime.UtcNow(),同时确保Datum/Tid列使用UTC时间格式。

内容的提问来源于stack exchange,提问作者WeAreOne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 20:10:33