gpt4 book ai didi

azure - 是否可以在 App Insights 内联函数中获取查询结果?

转载 作者:行者123 更新时间:2023-12-03 02:51:50 25 4
gpt4 key购买 nike

我正在尝试编写一个 App Insights 查询,该查询将报告两个已知事件(特别是断路器打开和关闭事件)之间的时间跨度。假设这些事件总是成对发生,因此我们需要知道一段时间内每次发生的两次事件之间的时间间隔。

我的第一次尝试是使用内联函数。下面是简化版本。

let timeOpened = (timeClosed:datetime)
{
let result = customEvents
| where name == 'CircuitBreakerStatusChange'
| where customDimensions['State'] == 'Open'
| where timestamp < timeClosed
| order by timestamp desc
| take 1
| project timestamp;
let scalar = toscalar(result);
scalar
};
customEvents
| where timestamp > ago(4h)
| where name == 'CircuitBreakerStatusChange'
| where customDimensions['State'] == 'Closed'
| extend timeOpen = timestamp - timeOpened(timestamp)

可能有更好的方法来做到这一点。如果是这样,欢迎您的想法!但在这次特殊的尝试中,运行此程序时我从 Azure 获得的唯一反馈是“语法错误”。但是,我不认为这里存在语法错误,因为如果我只是将函数的返回值从 scalar 更改为 now() ,它就会成功运行。我也可以成功地单独运行函数体。知道这里出了什么问题吗?

最佳答案

我认为您遇到语法错误,因为查询语言不允许可能的递归构造。 Now() 之所以有效,是因为它是在查询时静态(而非动态)检索的。

我认为您可以通过 serialize 达到预期的结果和 prev()运算符:

Table | order by timestamp asc | serialize
| extend previousTime = prev(timestamp,1)
| extend Diff = iff(customDimensions['State'] == 'Closed', timestamp - previousTime, 0)
| where Diff > 0

注意:我还没有测试上面的示例,它可能需要一些额外的考虑才能使其工作(例如,在进行 previousTime 计算之前确保上一条记录实际上是“打开”)。

关于azure - 是否可以在 App Insights 内联函数中获取查询结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55575283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com