我有一个带有开始和结束日期时间的Jobs
表,还有一个Events
带有事件发生日期时间的表。
我试图发现为什么某些作业要比其他作业花费更长的时间,所以我想将页面过滤到特定作业,并查看哪些事件在开始时间之后和结束时间之前发生。我不确定如何建立这种关系...有什么建议吗?
我有一个日期和时间维度数据集(如果有的话)。
示例(来自与我的问题集不同的域):
工作数据集
Name - Start - End
Print Document 1 - 2018-06-19 1:20 PM - 2018-06-19 1:22 PM
Print Document 2 - 2018-06-19 2:20 PM - 2018-06-19 2:55 PM
Print Document 3 - 2018-06-19 3:20 PM - 2018-06-19 3:22 PM
事件数据集
ID - Name - DateTime
1 - Printer Jam - 2018-06-15 1:20 PM
2 - Doorbell Rang - 2018-06-19 2:23 PM
3 - Printer Jam - 2018-06-19 2:35 PM
4 - Out of toner - 2018-06-20 1:20 PM
我想将Print Document 2
与Event ID
的{{1}}和2
相关联,以便可以使用过滤器仅显示相关事件,或者可以创建一种统计每个作业的事件数的方法。
我无法将3
添加到Job Name
数据源,因为事件不一定在工作期间发生,也不一定是工作直接导致的。在我的原始域中,我需要查看系统中其他地方正在发生哪些其他不相关的活动,以确定工作为什么花了太长时间。
答案 0 :(得分:3)
您可以将Events
表中的内容合并到查询编辑器中的Jobs
表中。
创建一个自定义列,该列将从Events
表中的任何行中提取,其中DateTime
字段位于Start
和End
值之间。
= Table.AddColumn(#"[Previous Step Name Here]", "Custom",
(J) => Table.SelectRows(Events, (E) => E[DateTime] >= J[Start] and E[DateTime] <= J[End]))
一旦创建了自定义列,请展开该列(该列每行包含一个表)以关联打印期间发生的所有事件。
结果应如下所示:
您可以通过将以下内容粘贴到高级编辑器中来复制它:
let
JobsSource = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WCijKzCtRcMlPVjBU0lEyMjC00DUw0zW0VDC0MjJQCPDFEDQCCcbqIOs0QlVkhE2nkZWpKaZOY1RFxth0GsPsjAUA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Name = _t, Start = _t, End = _t]),
Jobs = Table.TransformColumnTypes(JobsSource,{{"Name", type text}, {"Start", type datetime}, {"End", type datetime}}),
EventsSource = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUQooyswrSS1S8ErMBfKMDAwtdA3MdA1NFQytjAwUAnyVYnWilYyAUi75+UVJqTk5CkGJeenISi0VjKyMjGFKjXGbCVZoClNoApTyLy1RyE9TKMnPSy1CUgm0GG57LAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [ID = _t, Description = _t, DateTime = _t]),
Events = Table.TransformColumnTypes(EventsSource,{{"ID", Int64.Type}, {"Description", type text}, {"DateTime", type datetime}}),
#"Added Custom" = Table.AddColumn(Jobs, "Custom", (J) => Table.SelectRows(Events, (E) => E[DateTime] >= J[Start] and E[DateTime] <= J[End])),
#"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"ID", "Description", "DateTime"}, {"ID", "Description", "DateTime"}),
#"Changed Type" = Table.TransformColumnTypes(#"Expanded Custom",{{"ID", Int64.Type}, {"Description", type text}, {"DateTime", type datetime}})
in
#"Changed Type"