1

在使用 Azure Log Analytics 进行查询时,我一直在查看评估运算符,特别是使用 autocluster 插件(但即使使用预览和差异模式,我似乎也遇到了同样的问题)。

如果我有一个直接访问资源的查询(包括所有表或仅一个表),它工作正常。但是,如果我跨多个应用程序或工作区执行相同的查询。我收到一条错误消息:

未声明一个或多个模式引用。检测到的模式参考:支持

使用 app() 或 workspace() 范围函数似乎是个问题 - 没有进行联合来查询多个资源。

这不起作用:

workspace("vmPROD").Perf
| evaluate autocluster()

这也不是:

app("someService").traces
| evaluate autocluster()

这有效:

Perf
| evaluate autocluster()

问题是我想跨资源进行评估。起初我认为这可能是一个范围函数限制,但 table() - 也是一个范围函数,可以工作。

这有效:

table("Perf")
| evaluate autocluster()

我该如何解决这个限制?这是一个错误吗?文档中没有任何内容提及此限制。

4

1 回答 1

0

在尝试了不同的方法来解决这个问题后,我遇到了materialize()函数。此函数允许您缓存子查询的结果,并且在使用 app() 或 workspace() 引用资源时,似乎可以针对缓存的结果使用机器学习函数。这在进行连接时也有效——这是我想要跨资源做的事情。有两个主要限制需要考虑,您最多可以缓存 5GB 的结果,并且您必须使用 let 运算符。

这是一个连接示例:

let joinResult = union app('Konstrukt.SL.CalculationEngine').requests,app('Konstrukt.SL.AggregationEngine').requests;
let cachedJoinResult = materialize(joinResult);
cachedJoinResult 
| where success == false
| project session_Id, user_Id, appName,operation_Id,itemCount 
| evaluate autocluster();
于 2018-03-09T17:24:57.643 回答