首页 > 解决方案 > 如何找到 kusto 中所有列的基数?

问题描述

我正在尝试为某些查询查找所有列中不同值的数量。我发现dcount效果很好,但您必须提供特定的列。我想在所有列上执行此操作,其中列名和列数是动态的

标签: azure-data-explorerkql

解决方案


您必须明确包括所有感兴趣的列。

请注意,您添加到查询中的任何其他列都会增加查询的资源利用率,因此如果您对可能具有高基数的列有任何了解,请考虑仅包括那些。

FWIW:您可以动态生成查询(对于所有列,上面有警告),然后调用此结果

let tableName = "my_table";
let datetime_column_name = "my_datetime_column";
let lookback_period = 1h;
let column_names = toscalar(
    table(tableName)
    | getschema 
    | summarize make_set(ColumnName)
);
print query = strcat(
    tableName,
    "\n| where ",
    datetime_column_name,
    " > ago(timespan(",
    lookback_period,
    "))\n| summarize dcount(",
    strcat_array(column_names, "),\ndcount("),
    ")")

推荐阅读