如何确定Kusto表中列的子集的每个平均值而不通过名称指定每个列

时间:2019-07-18 21:01:54

标签: kusto azure-data-explorer

我有一个Kusto表,其中包含100个“ duration”列。我想计算每个列的平均持续时间。由于列的数量如此之多且千变万化,所以我想在不对列名进行硬编码的情况下创建查询。

创建了一个查询,该查询打印出代表我的查询的硬编码版本的字符串

SomeTable
| getschema 
| where ColumnName endswith '_duration'
| summarize  Columns = make_list(ColumnName)
// Make the query
| project strcat('SomeTable | summarize avg(', array_strcat(Columns, '), avg('), ') by Day = startofday(Event_ReceivedTime)')

我的目标是要有一个查询,该查询不需要表中每一列的列表。

1 个答案:

答案 0 :(得分:0)

我假设您想一次完成所有操作,而不是生成查询字符串然后执行该查询字符串?如果是这样,请签出evaluate narrow()。如果您的数据集不太大,则可能会完成工作。这是一个例子。

datatable(id:int, timestamp:datetime, x_duration:timespan, y_duration:timespan, z_duration:timespan)
[1, datetime(2019-07-19 17:51), time(01:00:00), time(02:00:00), time(03:00:00),
 2, datetime(2019-07-19 17:52), time(01:10:00), time(02:10:00), time(03:10:00),
 3, datetime(2019-07-19 17:53), time(01:10:10), time(02:10:10), time(03:10:10)]
| evaluate narrow()
| where Column endswith('_duration')
| extend Value = totimespan(Value)
| summarize avg(Value) by Column


Column      avg_Value
x_duration  01:06:43.3333333
y_duration  02:06:43.3333333
z_duration  03:06:43.3333333