Power Query中的计算

我正在尝试创build位于几百个CSV文件中的数据摘要表。 我已经创build了一些强大的查询,将数据转换成一个包含五列(Name_Age,Events,MS,Name,Age)的表格,并将其导入到Excel表格中。 这个表格被称为RawData。 RawData示例

在第二个选项卡中,我有一个将RawData复制到名为Prep的第二个表中的VBA脚本。 第二个表是必要的,因为我有第六列计算持续时间。 这第二个表是必要的,因为我不知道如何在Power Query中进行计算。 准备示例

所以,MS代表毫秒。 该字段表示事件发生的时刻。 我需要计算事件的持续时间,即下一个事件的MS – 当前事件的MS。 以事件AR为例,我的公式取F(32635)的MS,减去AR(32301)的MS得到的持续时间为334. ER代表logging结束或所讨论的时间线结束学科。 我怎么能在Power Query中做到这一点?

我可以在Excel中完成,但是我正在使用macros将RawData复制到Prep中。 我宁愿只在Power Query中完成这一切。 另一个原因是我有一个数据透视表总结整个事情。 如果我能得到在Power Query中计算的持续时间,我可以跳过这个macros。

为了从当前行的下一行减去字段,您需要使用本文中描述的相对单元格引用: http : //excel-inside.pro/blog/2015/11/05/absolute-and -relative引用,在功耗查询/

由于您想要使用数据透视表来评估数据,因此我build议将数据加载到数据模型中,并使用Power Pivot执行计算。 使用公式添加一个计算列

=CALCULATE(Min(Table1[MS]),FILTER(Table1,EARLIER(Table1[MS]) < Table1[MS])) 

这会使你的MS的最小值大于当前行中的最小值。 之后,您可以添加另一列与新列和MS列之间的差异来获得持续时间。 你需要包含一个If子句来设置最高MS值的持续时间为0(或者你想要处理的):

 =If([CalculatedColumn1]=BLANK(),0,[CalculatedColumn1]-[MS]) 

您还可以在第一个公式中添加其他filter,以仅比较与相同“Name_Age”相关的MS值:

 =CALCULATE(Min(Table1[MS]),FILTER(Table1,EARLIER(Table1[MS]) < Table1[MS] && EARLIER(Table1[Name_Age]) = Table1[Name_Age])) 

有关EARLIER()的更多信息,请参阅https://msdn.microsoft.com/zh-cn/library/ee634551(v=sql.110).aspx