首页 > 解决方案 > Power Query - 查找自表中第一条记录以来的时间

问题描述

我有一个查询可以提取用户名和输入时间。我想让查询包含用户名、进入时间和自第一次进入时间以来的时间(以分钟为单位)。

鲍勃,2019 年 12 月 1 日 18:00,0 卡尔,2019 年 12 月 1 日 18:02,2 戴夫,2019 年 12 月 1 日 18:30、30

我已经能够创建一个查询来计算表中的最短时间,但我无法加入它们,而且无论如何一步完成它可能会更容易。

标签: powerquery

解决方案


按用户名..高级....分组。添加两个新列名以提取列入口时间的最大值和最小值。然后添加列..自定义列...并创建一个公式,从最小列中减去新的最大列

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"username", type text}, {"entrytime", type time}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"username"}, {{"In", each List.Min([entrytime]), type time}, {"Out", each List.Max([entrytime]), type time}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each [Out]-[In])
in #"Added Custom"

以上假设您正在查看单个日期的数据。对于具有多个日期且此人从不过夜的数据,请在用户名和日期上按 .. 高级 .... 分组。

编辑:

要将每一行与每个人的最短时间进行比较,得到每个人的最短时间

 MinTime = List.Min(Source[Time]),

然后创建一个新的自定义列减去

#"Added Custom" = Table.AddColumn(#"Prior Step", "Custom", each [Time]-MinTime)

推荐阅读