在 Kusto 查询中将列名称作为参数传递

Raz*_*azi 2 azure azure-monitoring kql azure-data-explorer

我需要将列名动态传递到查询中。虽然以下在语法上是正确的,但它并没有真正执行特定列上的条件。

这在 Kusto 中可能吗?

let foo = (duration: timespan, column:string) {
    SigninLogs
    | where TimeGenerated >= ago(duration) 
    | summarize totalPerCol = count() by ['column']
};
//foo('requests')<-- does not work
//foo('user') <-- does not work
//foo('ip')<-- does not work
Run Code Online (Sandbox Code Playgroud)

Yon*_*i L 5

您可以尝试使用该column_ifexists()功能:https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/columnifexists

例如:

let foo = (column_name:string) {
    datatable(col_a:string)["hello","world"]
    | summarize totalPerCol = count() by column_ifexists(column_name, "")
};
foo('col_a')
Run Code Online (Sandbox Code Playgroud)
可乐 总每列
你好 1
世界 1