【发布时间】:2021-01-29 13:10:24
【问题描述】:
在 Google BigQuery 中,我在单个支持会话中有一个事件列表,这些事件由事件名称标记。每个支持问题resolved_time 是resolved 事件的时间戳。每个问题 start_time 是事件 message、pending 或 unresolved 的第一次出现,无论是在会话的绝对开头还是在已解决的标记之后。
换句话说,对话的状态要么是开放的,要么是已解决的。状态在第一次出现 message、pending 或 unresolved 事件时变为打开状态,并在 resolved 事件时关闭。
目前我只有timestamp 和event_name 的表。想加入start_time和resolved_time。
在下面的示例中,这会导致 4 个单独的支持问题。三个正在通过resolved 事件解决,最后一个未解决,因为它没有通过resolved 事件关闭。
| timestamp | event_name | start_time | resolved_time |
|---|---|---|---|
| 2021-01-15 20:27:59 UTC | unresolved | 2021-01-15 20:27:59 UTC | 2021-01-20 19:31:37 UTC |
| 2021-01-16 03:02:46 UTC | message | 2021-01-15 20:27:59 UTC | 2021-01-20 19:31:37 UTC |
| 2021-01-20 19:31:37 UTC | resolved | 2021-01-15 20:27:59 UTC | 2021-01-20 19:31:37 UTC |
| 2021-01-21 00:13:43 UTC | pending | 2021-01-21 00:13:43 UTC | 2021-01-23 23:38:46 UTC |
| 2021-01-23 23:38:46 UTC | resolved | 2021-01-21 00:13:43 UTC | 2021-01-23 23:38:46 UTC |
| 2021-01-24 00:38:17 UTC | message | 2021-01-24 00:38:17 UTC | 2021-01-24 02:19:44 UTC |
| 2021-01-24 00:42:31 UTC | unresolved | 2021-01-24 00:38:17 UTC | 2021-01-24 02:19:44 UTC |
| 2021-01-24 02:19:44 UTC | resolved | 2021-01-24 00:38:17 UTC | 2021-01-24 02:19:44 UTC |
| 2021-01-25 15:55:50 UTC | message | 2021-01-25 15:55:50 UTC | NULL |
| 2021-01-25 15:59:55 UTC | unresolved | 2021-01-25 15:55:50 UTC | NULL |
WITH sample_table AS (
SELECT TIMESTAMP("2021-01-15 20:27:59") `timestamp` , "unresolved" event_name UNION ALL
SELECT TIMESTAMP("2021-01-16 03:02:46") , "message" UNION ALL
SELECT TIMESTAMP("2021-01-20 19:31:37") , "resolved" UNION ALL
SELECT TIMESTAMP("2021-01-21 00:13:43") , "pending" UNION ALL
SELECT TIMESTAMP("2021-01-23 23:38:46") , "resolved" UNION ALL
SELECT TIMESTAMP("2021-01-24 00:38:17") , "message" UNION ALL
SELECT TIMESTAMP("2021-01-24 00:42:31") , "unresolved" UNION ALL
SELECT TIMESTAMP("2021-01-24 02:19:44") , "resolved" UNION ALL
SELECT TIMESTAMP("2021-01-25 15:55:50") , "message" UNION ALL
SELECT TIMESTAMP("2021-01-25 15:59:55") , "unresolved" )
SELECT * FROM sample_table
ORDER BY timestamp ASC
提前感谢您的帮助。
【问题讨论】:
-
老问题总是在新问题打开之前关闭吗?每个问题是否可能有多个同名事件?
-
不能同时打开两个支持问题。所以状态是打开或关闭。我会在问题中澄清。
-
我不明白。首先,你想要什么结果?其次,您有两条“已解决”的记录,3 条“消息”、1 条“待处理”和 2 条“未解决”。这如何变成 4 个支持问题?问题不清楚。
标签: sql google-bigquery