Excel power 查询中的时间序列数据。我希望返回前一天的值

Posted

技术标签:

【中文标题】Excel power 查询中的时间序列数据。我希望返回前一天的值【英文标题】:Time series data in Excel power query. I wish to return a value from the previous day 【发布时间】:2021-08-05 04:11:15 【问题描述】:

我有时间序列数据正在通过电源查询导入到 Excel 表中。 数据是多个进程的每日数据,这些进程被标识为正在运行或未运行。因此,我的数据告诉我进程是否正在运行 - 但是我希望确定进程是否昨天正在运行。

其实。具体来说,我希望确定每天关闭的进程(即昨天正在运行但今天没有)和每天重新启动的进程(即昨天没有运行但今天正在运行)。有了这个在 excel 表中(从 powerquery 返回),我可以在 excel 中显示今天(或本周或本月)关闭的进程和今天(或本周或本月)重新启动的进程。

我希望这是有道理的。以下是示例数据。我是澳大利亚人,所以我的日期是 d/m/yyyy。为了清楚起见,我只展示了两个流程,但我的数据有数百个,所以我希望有一个通用的解决方案。

您可以在下面看到 aaa 在 2020 年 3 月 1 日下线,并在 2020 年 6 月 1 日重新上线。 bbb 于 2020 年 4 月 1 日下线,并于 2020 年 5 月 1 日回来。我想创建一个标识该事实的列。在excel中这很容易。我将创建一个名为 isOnlineYesterday 的虚拟列,将进程与日期连接起来,然后创建 index(isonline,match(procecss+(date-1),isOnlineYesterday,0))。但是我希望在 powerquery 中执行此操作。

我希望我的问题很清楚。谢谢你的聪明。

Date         Process        IsOnline
1/1/2020     aaa            true
1/1/2020     bbb            true 
2/1/2020     aaa            true
2/1/2020     bbb            true
3/1/2020     aaa            false
3/1/2020     bbb            true
4/1/2020     aaa            false
4/1/2020     bbb            false
5/1/2020     aaa            false
5/1/2020     bbb            true
6/1/2020     aaa            true
6/1/2020     bbb            true



【问题讨论】:

【参考方案1】:

最简单的方法是添加一个返回 date-1 的自定义列

= Date.AddDays([Date],-1)

然后合并表本身,匹配昨天日期和进程进程

将 IsOnline 列展开为 IsOnlineYesterday

然后,您可以将 IsOnline 与 IsOnlineYest 进行比较,以使用另一个自定义列做任何您想做的事情

示例代码

let Source = Excel.CurrentWorkbook()[Name="Table1"][Content],
#"Changed Type" = Table.TransformColumnTypes(Source,"Date", type date, "Process", type text, "IsOnline", type logical),
#"Added Custom" = Table.AddColumn(#"Changed Type", "yesterday", each Date.AddDays([Date],-1), type date),
#"Merged Queries" = Table.NestedJoin(#"Added Custom","Process", "yesterday",#"Added Custom","Process", "Date","Added Custom",JoinKind.LeftOuter),
#"Expanded Added Custom" = Table.ExpandTableColumn(#"Merged Queries", "Added Custom", "IsOnline", "IsOnlineYest"),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Added Custom","yesterday")
in #"Removed Columns"

【讨论】:

以上是关于Excel power 查询中的时间序列数据。我希望返回前一天的值的主要内容,如果未能解决你的问题,请参考以下文章

通过 Power Query 在 Excel 中的 Smartsheet 数据

从 Excel 数据模型/Power Query 查询单个数据点(获取和转换数据)

Excel 2016 Power Query - 从 Oracle 数据字典中获取数据

Excel Power Query:工序产出数据的整合与提取

Power Query 将表类型数据加载到单个 Excel 工作表

powerquery追加查询如何将导入数据表头不显示null