Kusto查询语言:通过求值表达式设置汇总的列名

问题描述

我再次问另一个与Kusto相关的问题(我真的希望在某个地方有完整的视频教程)。

我有一个summarize语句,该语句为y轴生成两列,为x轴生成一列。 现在,我想重新标记x轴的列以显示一个字符串,该字符串也是我从数据库中获得的,并且已经放入let变量中。

这基本上是这样的:

let android_col = strcat("Android: ",toscalar(customEvents
| where application_Version contains secondLatestVersionAndroid));
let iOS_col = strcat("iOS: ",toscalar(customEvents
| where application_Version contains secondLatestVersionIOS));

... some Kusto magic ...

| summarize
    Android = 100 - (round((countif(hasUnhandledErrorAndroid == 1 ) * 100.0 ) / countif(isAndroid == 1),2)),iOS = 100 - (round((countif(hasUnhandledErroriOS == 1) * 100.0 ) / countif(isIOS == 1),2))
    by Time
|render timechart with (ytitle="crashfree users in %",xtitle="date",legend=visible )

现在,我希望摘要显示不是Android和iOS,而是android_col和iOS_col的值。

有可能吗?

最好的问候 小牛

解决方法

通常,建议使用预定义的列名,否则各种功能将不起作用。例如,IntelliSense将不知道列的名称,因为它们只能在运行时确定。另外,如果您创建一个返回动态模式的函数,则将无法从其他群集中运行该函数。

但是,如果您确实想更改列名,则肯定可以使用各种插件来完成。例如bag_unpackpivot等。

关于Kusto的课程,实际上有几本关于Pluralsight的优秀课程(全部都是免费的):

,

此查询中“ toscalar”的用法看起来是错误的,在我看来,您应该使用具有相同逻辑的“ extend”运算符来创建其他列。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...