如何在Azure Log Analytics中将评估运算符与应用程序或工作空间范围功能一起使用?

时间:2018-03-06 23:11:45

标签: azure azure-log-analytics

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

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

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

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

这不起作用:

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

这两个都没有:

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

这有效:

Perf
| evaluate autocluster()

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

这有效:

table("Perf")
| evaluate autocluster()

我如何解决这个限制?这是一个错误吗?文档中没有提到这种限制。

1 个答案:

答案 0 :(得分: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();