Kusto 查询以筛选并计算行之间的时间差
Kusto Query to Filter and calculate the Time difference between rows
Timestamp
Correlationld
EventName
2022-04-12T14:10:49.387Z
02a9407f-3e2a-448c-961a-67c83d63720a
HandlingRequest
<-- 1a
2022-04-12T14:21:47.797Z
02a9407f-3e2a-448c-961a-67c83d63720a
RequestComplete
<-- 1b
2022-04-12T14:25:28.748Z
0455a17f-098a-4204-bf21-459280603f53
HandlingRequest
2022-04-12T16:09:09.066Z
017fac2a-2d7b-496a-aed8-36265674c19a
HandlingRequest
<-- 2a
2022-04-12T19:19:02.076Z
01aba138-470f-406f-927c-1055c3776231
HandlingRequest
2022-04-12T21:30:22.943Z
005dab40-b601-4f5d-a983-8a92945af909
HandlingRequest
<-- 3a
2022-04-12T23:19:45.32Z
00676b81-cb5d-4847-b0de-328a3346c7e7
HandlingRequest
2022-04-12T23:25:28.291Z
00574df8-5c92-4667-8566-62dabf65208a
HandlingRequest
2022-04-12T23:48:28.306Z
02d078c2-739b-460b-9fa9-776f7f97b863
HandlingRequest
2022-04-12T23:50:18.577Z
043117f6-c972-423a-8368-f0476e89ed9f
HandlingRequest
2022-04-12T23:53:36.762Z
008cbb4c-21ca-421e-890f-335320d4e922
HandlingRequest
2022-04-13T00:00:26.387Z
005c4b88-7d14-48ba-b292-65e3a0971405
HandlingRequest
2022-04-13T00:03:51.262Z
02fd7cb9-0307-4eef-8d5c-dbd7f67199a7
HandlingRequest
2022-04-13T00:04:37.902Z
02a3fd47-e73e-4305-bcea-9b4ce3743cbb
HandlingRequest
2022-04-13T00:05:52.555Z
03777fcd-c43b-41cf-969f-aad87f3a7318
HandlingRequest
2022-04-13T00:12:13.579Z
00159845-9089-4671-bb93-fdce974ce804
HandlingRequest
2022-04-13T00:23:13.138Z
005dab40-b601-4f5d-a983-8a92945af909
RequestComplete
<-- 3b
2022-04-13T08:09:14.458Z
017fac2a-2d7b-496a-aed8-36265674c19a
RequestComplete
<-- 2b
2022-04-13T13:02:08.395Z
0142b2f2-032b-49d7-bcdf-fe0b1c32ef93
HandlingRequest
示例数据请参考附件图片table。我有 2 种类型的事件名称的相关 ID。并非所有关联 ID 都具有这两个事件名称。我需要计算相关 ID 的 Handling request 和 Request complete 之间的时间差。有没有办法只过滤具有这些事件名称的 ID 并计算时间差异。谢谢
检查这是否适合您:
datatable(Timestamp:datetime, CorrelationId:string, EventName:string)
[
datetime(2022-01-01), "a", "HandlingRequest",
datetime(2022-01-01), "b", "HandlingRequest",
datetime(2022-01-01), "c", "HandlingRequest",
datetime(2022-01-02), "c", "RequestComplete",
datetime(2022-01-01), "d", "HandlingRequest",
datetime(2022-01-01), "e", "HandlingRequest",
datetime(2022-01-01), "f", "HandlingRequest",
datetime(2022-01-03), "e", "RequestComplete",
datetime(2022-01-04), "b", "RequestComplete",
]
| order by CorrelationId asc , Timestamp asc
| extend Correlated = prev(CorrelationId) == CorrelationId and EventName == "RequestComplete" and prev(EventName) == "HandlingRequest"
| project CorrelationId, HandlingRequest = prev(Timestamp), RequestComplete = Timestamp, Correlated
| extend Diff = RequestComplete - HandlingRequest
| where Correlated | project-away Correlated
CorrelationId
HandlingRequest
RequestComplete
Diff
b
2022-01-01 00:00:00.0000000
2022-01-04 00:00:00.0000000
3.00:00:00
c
2022-01-01 00:00:00.0000000
2022-01-02 00:00:00.0000000
1.00:00:00
e
2022-01-01 00:00:00.0000000
2022-01-03 00:00:00.0000000
2.00:00:00
我能想到的两个快速方法-
let t = datatable (Timestamp:datetime,Correlationld:string,EventName:string)
[
"2022-04-13 00:12:13.5790", "00159845-9089-4671-bb93-fdce974ce804", "HandlingRequest"
,"2022-04-12 23:25:28.2910", "00574df8-5c92-4667-8566-62dabf65208a", "HandlingRequest"
,"2022-04-13 00:00:26.3870", "005c4b88-7d14-48ba-b292-65e3a0971405", "HandlingRequest"
,"2022-04-12 21:30:22.9430", "005dab40-b601-4f5d-a983-8a92945af909", "HandlingRequest"
,"2022-04-13 00:23:13.1380", "005dab40-b601-4f5d-a983-8a92945af909", "RequestComplete"
,"2022-04-12 23:19:45.3200", "00676b81-cb5d-4847-b0de-328a3346c7e7", "HandlingRequest"
,"2022-04-12 23:53:36.7620", "008cbb4c-21ca-421e-890f-335320d4e922", "HandlingRequest"
,"2022-04-13 13:02:08.3950", "0142b2f2-032b-49d7-bcdf-fe0b1c32ef93", "HandlingRequest"
,"2022-04-12 16:09:09.0660", "017fac2a-2d7b-496a-aed8-36265674c19a", "HandlingRequest"
,"2022-04-13 08:09:14.4580", "017fac2a-2d7b-496a-aed8-36265674c19a", "RequestComplete"
,"2022-04-12 19:19:02.0760", "01aba138-470f-406f-927c-1055c3776231", "HandlingRequest"
,"2022-04-13 00:04:37.9020", "02a3fd47-e73e-4305-bcea-9b4ce3743cbb", "HandlingRequest"
,"2022-04-12 14:10:49.3870", "02a9407f-3e2a-448c-961a-67c83d63720a", "HandlingRequest"
,"2022-04-12 14:21:47.7970", "02a9407f-3e2a-448c-961a-67c83d63720a", "RequestComplete"
,"2022-04-12 23:48:28.3060", "02d078c2-739b-460b-9fa9-776f7f97b863", "HandlingRequest"
,"2022-04-13 00:03:51.2620", "02fd7cb9-0307-4eef-8d5c-dbd7f67199a7", "HandlingRequest"
,"2022-04-13 00:05:52.5550", "03777fcd-c43b-41cf-969f-aad87f3a7318", "HandlingRequest"
,"2022-04-12 23:50:18.5770", "043117f6-c972-423a-8368-f0476e89ed9f", "HandlingRequest"
,"2022-04-12 14:25:28.7480", "0455a17f-098a-4204-bf21-459280603f53", "HandlingRequest"
];
// Option 1
t
| summarize diff = anyif(Timestamp,EventName == "RequestComplete") - anyif(Timestamp,EventName == "HandlingRequest") by Correlationld
| where isnotnull(diff);
// Option 2
t
| partition hint.strategy=native by Correlationld
(
order by Timestamp asc
| project Correlationld, diff = Timestamp - prev(Timestamp)
| where isnotnull(diff)
)
Result set 1
Correlationld
diff
005dab40-b601-4f5d-a983-8a92945af909
02:52:50.1950000
017fac2a-2d7b-496a-aed8-36265674c19a
16:00:05.3920000
02a9407f-3e2a-448c-961a-67c83d63720a
00:10:58.4100000
Result set 2
Correlationld
diff
005dab40-b601-4f5d-a983-8a92945af909
02:52:50.1950000
02a9407f-3e2a-448c-961a-67c83d63720a
00:10:58.4100000
017fac2a-2d7b-496a-aed8-36265674c19a
16:00:05.3920000
Timestamp | Correlationld | EventName | |
---|---|---|---|
2022-04-12T14:10:49.387Z | 02a9407f-3e2a-448c-961a-67c83d63720a | HandlingRequest | <-- 1a |
2022-04-12T14:21:47.797Z | 02a9407f-3e2a-448c-961a-67c83d63720a | RequestComplete | <-- 1b |
2022-04-12T14:25:28.748Z | 0455a17f-098a-4204-bf21-459280603f53 | HandlingRequest | |
2022-04-12T16:09:09.066Z | 017fac2a-2d7b-496a-aed8-36265674c19a | HandlingRequest | <-- 2a |
2022-04-12T19:19:02.076Z | 01aba138-470f-406f-927c-1055c3776231 | HandlingRequest | |
2022-04-12T21:30:22.943Z | 005dab40-b601-4f5d-a983-8a92945af909 | HandlingRequest | <-- 3a |
2022-04-12T23:19:45.32Z | 00676b81-cb5d-4847-b0de-328a3346c7e7 | HandlingRequest | |
2022-04-12T23:25:28.291Z | 00574df8-5c92-4667-8566-62dabf65208a | HandlingRequest | |
2022-04-12T23:48:28.306Z | 02d078c2-739b-460b-9fa9-776f7f97b863 | HandlingRequest | |
2022-04-12T23:50:18.577Z | 043117f6-c972-423a-8368-f0476e89ed9f | HandlingRequest | |
2022-04-12T23:53:36.762Z | 008cbb4c-21ca-421e-890f-335320d4e922 | HandlingRequest | |
2022-04-13T00:00:26.387Z | 005c4b88-7d14-48ba-b292-65e3a0971405 | HandlingRequest | |
2022-04-13T00:03:51.262Z | 02fd7cb9-0307-4eef-8d5c-dbd7f67199a7 | HandlingRequest | |
2022-04-13T00:04:37.902Z | 02a3fd47-e73e-4305-bcea-9b4ce3743cbb | HandlingRequest | |
2022-04-13T00:05:52.555Z | 03777fcd-c43b-41cf-969f-aad87f3a7318 | HandlingRequest | |
2022-04-13T00:12:13.579Z | 00159845-9089-4671-bb93-fdce974ce804 | HandlingRequest | |
2022-04-13T00:23:13.138Z | 005dab40-b601-4f5d-a983-8a92945af909 | RequestComplete | <-- 3b |
2022-04-13T08:09:14.458Z | 017fac2a-2d7b-496a-aed8-36265674c19a | RequestComplete | <-- 2b |
2022-04-13T13:02:08.395Z | 0142b2f2-032b-49d7-bcdf-fe0b1c32ef93 | HandlingRequest |
示例数据请参考附件图片table。我有 2 种类型的事件名称的相关 ID。并非所有关联 ID 都具有这两个事件名称。我需要计算相关 ID 的 Handling request 和 Request complete 之间的时间差。有没有办法只过滤具有这些事件名称的 ID 并计算时间差异。谢谢
检查这是否适合您:
datatable(Timestamp:datetime, CorrelationId:string, EventName:string)
[
datetime(2022-01-01), "a", "HandlingRequest",
datetime(2022-01-01), "b", "HandlingRequest",
datetime(2022-01-01), "c", "HandlingRequest",
datetime(2022-01-02), "c", "RequestComplete",
datetime(2022-01-01), "d", "HandlingRequest",
datetime(2022-01-01), "e", "HandlingRequest",
datetime(2022-01-01), "f", "HandlingRequest",
datetime(2022-01-03), "e", "RequestComplete",
datetime(2022-01-04), "b", "RequestComplete",
]
| order by CorrelationId asc , Timestamp asc
| extend Correlated = prev(CorrelationId) == CorrelationId and EventName == "RequestComplete" and prev(EventName) == "HandlingRequest"
| project CorrelationId, HandlingRequest = prev(Timestamp), RequestComplete = Timestamp, Correlated
| extend Diff = RequestComplete - HandlingRequest
| where Correlated | project-away Correlated
CorrelationId | HandlingRequest | RequestComplete | Diff |
---|---|---|---|
b | 2022-01-01 00:00:00.0000000 | 2022-01-04 00:00:00.0000000 | 3.00:00:00 |
c | 2022-01-01 00:00:00.0000000 | 2022-01-02 00:00:00.0000000 | 1.00:00:00 |
e | 2022-01-01 00:00:00.0000000 | 2022-01-03 00:00:00.0000000 | 2.00:00:00 |
我能想到的两个快速方法-
let t = datatable (Timestamp:datetime,Correlationld:string,EventName:string)
[
"2022-04-13 00:12:13.5790", "00159845-9089-4671-bb93-fdce974ce804", "HandlingRequest"
,"2022-04-12 23:25:28.2910", "00574df8-5c92-4667-8566-62dabf65208a", "HandlingRequest"
,"2022-04-13 00:00:26.3870", "005c4b88-7d14-48ba-b292-65e3a0971405", "HandlingRequest"
,"2022-04-12 21:30:22.9430", "005dab40-b601-4f5d-a983-8a92945af909", "HandlingRequest"
,"2022-04-13 00:23:13.1380", "005dab40-b601-4f5d-a983-8a92945af909", "RequestComplete"
,"2022-04-12 23:19:45.3200", "00676b81-cb5d-4847-b0de-328a3346c7e7", "HandlingRequest"
,"2022-04-12 23:53:36.7620", "008cbb4c-21ca-421e-890f-335320d4e922", "HandlingRequest"
,"2022-04-13 13:02:08.3950", "0142b2f2-032b-49d7-bcdf-fe0b1c32ef93", "HandlingRequest"
,"2022-04-12 16:09:09.0660", "017fac2a-2d7b-496a-aed8-36265674c19a", "HandlingRequest"
,"2022-04-13 08:09:14.4580", "017fac2a-2d7b-496a-aed8-36265674c19a", "RequestComplete"
,"2022-04-12 19:19:02.0760", "01aba138-470f-406f-927c-1055c3776231", "HandlingRequest"
,"2022-04-13 00:04:37.9020", "02a3fd47-e73e-4305-bcea-9b4ce3743cbb", "HandlingRequest"
,"2022-04-12 14:10:49.3870", "02a9407f-3e2a-448c-961a-67c83d63720a", "HandlingRequest"
,"2022-04-12 14:21:47.7970", "02a9407f-3e2a-448c-961a-67c83d63720a", "RequestComplete"
,"2022-04-12 23:48:28.3060", "02d078c2-739b-460b-9fa9-776f7f97b863", "HandlingRequest"
,"2022-04-13 00:03:51.2620", "02fd7cb9-0307-4eef-8d5c-dbd7f67199a7", "HandlingRequest"
,"2022-04-13 00:05:52.5550", "03777fcd-c43b-41cf-969f-aad87f3a7318", "HandlingRequest"
,"2022-04-12 23:50:18.5770", "043117f6-c972-423a-8368-f0476e89ed9f", "HandlingRequest"
,"2022-04-12 14:25:28.7480", "0455a17f-098a-4204-bf21-459280603f53", "HandlingRequest"
];
// Option 1
t
| summarize diff = anyif(Timestamp,EventName == "RequestComplete") - anyif(Timestamp,EventName == "HandlingRequest") by Correlationld
| where isnotnull(diff);
// Option 2
t
| partition hint.strategy=native by Correlationld
(
order by Timestamp asc
| project Correlationld, diff = Timestamp - prev(Timestamp)
| where isnotnull(diff)
)
Result set 1
Correlationld | diff |
---|---|
005dab40-b601-4f5d-a983-8a92945af909 | 02:52:50.1950000 |
017fac2a-2d7b-496a-aed8-36265674c19a | 16:00:05.3920000 |
02a9407f-3e2a-448c-961a-67c83d63720a | 00:10:58.4100000 |
Result set 2
Correlationld | diff |
---|---|
005dab40-b601-4f5d-a983-8a92945af909 | 02:52:50.1950000 |
02a9407f-3e2a-448c-961a-67c83d63720a | 00:10:58.4100000 |
017fac2a-2d7b-496a-aed8-36265674c19a | 16:00:05.3920000 |