你能在同一个查询中有 2 个不同的时间范围吗?
Can you have 2 different time ranges in the same query?
我想运行以下查询:
( requests
| where timestamp > ago(-24h)
| summarize day = avg(duration)
)
| union ( requests
| where timestamp > ago(-10m)
| summarize now = avg(duration)
)
我想获取最后一天和最后 10 分钟的平均请求持续时间。
我现在在 2 个不同的查询中执行此操作,但我喜欢将它们放在 1 个查询中以提高性能。
当我 运行 这个查询时,我没有得到任何回应,我看到了日期和现在列,但它没有任何价值。
从查询语言的角度来看,您所做的是有效的并且应该有效。
您应该验证您是否真的打算在调用 ago()
函数时使用减号 (-
)。
如果你想要单行的结果,你也可以使用 join
而不是 union
print ago(24h), ago(-24h)
将输出:
| print_0 | print_1 |
|-----------------------------|-----------------------------|
| 2019-04-03 15:04:24.0178923 | 2019-04-05 15:04:24.0178923 |
和:
let requests = datatable(timestamp:datetime, duration:timespan)
[
datetime(2019-03-03 14:00), 123s,
datetime(2019-03-03 15:00), 12s,
datetime(2019-04-03 16:00), 13s,
datetime(2019-04-03 17:00), 456s,
datetime(2019-04-03 18:00), 56s,
datetime(2019-04-03 19:00), 45s,
datetime(2019-04-03 20:00), 43s,
datetime(2019-04-04 16:55), 77s,
]
;
requests
| where timestamp > ago(24h)
| summarize day = avg(duration)
| union (
requests
| where timestamp > ago(10m)
| summarize now = avg(duration)
)
将输出:
| day | now |
|----------|----------|
| 00:01:55 | |
| | 00:01:17 |
和:
let requests = datatable(timestamp:datetime, duration:timespan)
[
datetime(2019-03-03 14:00), 123s,
datetime(2019-03-03 15:00), 12s,
datetime(2019-04-03 16:00), 13s,
datetime(2019-04-03 17:00), 456s,
datetime(2019-04-03 18:00), 56s,
datetime(2019-04-03 19:00), 45s,
datetime(2019-04-03 20:00), 43s,
datetime(2019-04-04 16:55), 77s,
]
;
requests
| where timestamp > ago(24h)
| summarize day = avg(duration) by dummy = 1
| join kind=inner
(
requests
| where timestamp > ago(10m)
| summarize now = avg(duration) by dummy = 1
) on dummy
| project day, now
将输出:
| day | now |
|----------|----------|
| 00:01:55 | 00:01:17 |
我想运行以下查询:
( requests
| where timestamp > ago(-24h)
| summarize day = avg(duration)
)
| union ( requests
| where timestamp > ago(-10m)
| summarize now = avg(duration)
)
我想获取最后一天和最后 10 分钟的平均请求持续时间。 我现在在 2 个不同的查询中执行此操作,但我喜欢将它们放在 1 个查询中以提高性能。
当我 运行 这个查询时,我没有得到任何回应,我看到了日期和现在列,但它没有任何价值。
从查询语言的角度来看,您所做的是有效的并且应该有效。
您应该验证您是否真的打算在调用 ago()
函数时使用减号 (-
)。
如果你想要单行的结果,你也可以使用 join
而不是 union
print ago(24h), ago(-24h)
将输出:
| print_0 | print_1 |
|-----------------------------|-----------------------------|
| 2019-04-03 15:04:24.0178923 | 2019-04-05 15:04:24.0178923 |
和:
let requests = datatable(timestamp:datetime, duration:timespan)
[
datetime(2019-03-03 14:00), 123s,
datetime(2019-03-03 15:00), 12s,
datetime(2019-04-03 16:00), 13s,
datetime(2019-04-03 17:00), 456s,
datetime(2019-04-03 18:00), 56s,
datetime(2019-04-03 19:00), 45s,
datetime(2019-04-03 20:00), 43s,
datetime(2019-04-04 16:55), 77s,
]
;
requests
| where timestamp > ago(24h)
| summarize day = avg(duration)
| union (
requests
| where timestamp > ago(10m)
| summarize now = avg(duration)
)
将输出:
| day | now |
|----------|----------|
| 00:01:55 | |
| | 00:01:17 |
和:
let requests = datatable(timestamp:datetime, duration:timespan)
[
datetime(2019-03-03 14:00), 123s,
datetime(2019-03-03 15:00), 12s,
datetime(2019-04-03 16:00), 13s,
datetime(2019-04-03 17:00), 456s,
datetime(2019-04-03 18:00), 56s,
datetime(2019-04-03 19:00), 45s,
datetime(2019-04-03 20:00), 43s,
datetime(2019-04-04 16:55), 77s,
]
;
requests
| where timestamp > ago(24h)
| summarize day = avg(duration) by dummy = 1
| join kind=inner
(
requests
| where timestamp > ago(10m)
| summarize now = avg(duration) by dummy = 1
) on dummy
| project day, now
将输出:
| day | now |
|----------|----------|
| 00:01:55 | 00:01:17 |