Azure &引用;未能解决';顶部';“关键栏”;Application Insights Analytics自定义维度中出错

Azure &引用;未能解决';顶部';“关键栏”;Application Insights Analytics自定义维度中出错,azure,azure-application-insights,ms-app-analytics,Azure,Azure Application Insights,Ms App Analytics,我在Application Insights中有一些数据,我正在使用Analytics视图编写针对这些数据的查询 我可以看到我有一个跟踪,其CustomDimensions包含一个名为ActivityID的属性,它是一个guid: 我现在要做的是运行另一个查询,以返回包含该ActivityId的所有跟踪 作为指南,我目前拥有以下内容: union (traces | extend ActivityId = tostring(customDimensions.ActivityId) | proj

我在Application Insights中有一些数据,我正在使用Analytics视图编写针对这些数据的查询

我可以看到我有一个跟踪,其CustomDimensions包含一个名为ActivityID的属性,它是一个guid:

我现在要做的是运行另一个查询,以返回包含该ActivityId的所有跟踪

作为指南,我目前拥有以下内容:

union (traces
| extend ActivityId = tostring(customDimensions.ActivityId)
| project ActivityId
| where ActivityId  == "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
| top 101 by timestamp desc
但是,这将返回以下语法错误消息:

Failed to resolve 'top' key column

我做错了什么?如果可能的话,我也将感谢您提供错误消息的详细信息和解释。

除非您在投影中实际包含时间戳列,否则您不能在投影中执行
top

我做到了:

union (traces)
| top 101 by timestamp desc
| project session_Id
所以这应该行得通

union (traces
| extend ActivityId = tostring(customDimensions.ActivityId)
| where ActivityId  == "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
| top 101 by timestamp desc
| project ActivityId

然后它就起作用了。您的完整查询是什么(我想由于您使用的是
union
?),因此可能会有更多查询)

如果您想在顶部使用“timestamp”列,则必须将其投影到顶部

traces
| extend ActivityId = tostring(customDimensions.ActivityId)
| project ActivityId, timestamp
| where ActivityId  == "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
| top 101 by timestamp desc

*请注意,您也不需要使用修复错误的联合

,谢谢。我最初使用union的原因是,我刚刚修改了在打开analytics视图(使用union)后自动填充的查询。还有一个问题,错误已经消失了,但现在我得到了“没有发现结果”。我需要强制转换为toguid而不是tostring吗?嗯,我自己总是使用
tostring
,即使是可以解析为guid的值。注意区分大小写!更奇怪的是,只有
==
是。将其更改为
contains
,这样它将比较不区分大小写。@彼得伯恩斯的“看起来你不能做顶部投影”是不正确的。你可以做一个顶级项目,但你需要先做一个项目:)@yonisha那么,我的答案确实有效,但谢谢你的更正和更新我答案的机会。不过,我不确定是否有理由投反对票。特别是因为我没有把它说成是事实,所以我说它(对我来说)似乎是这样的。被接受的答案实际上是有效的,但会产生误导。见下面我的答案。