2

我是 Kusto 的新手,我正在尝试使用summarize可以指定其他列以显示我正在分组的值的位置进行分组。

这就是我想要做的,在标准 SQL 中提到:

select UserId, LocationId, COUNT(*) as ErrorCount from SampleTable where ResultType != 'Success'
group by UserId
order by ErrorCount desc

我正在分组UserId,但随后我也在分组结果中显示LocationIdUserId

将上述转换为 Kusto,我正在写这个:

SampleTable
| where ResultType != "Success"
| summarize ErrorCount=count() by UserId
| project UserId, LocationId, ErrorCount
| sort by ErrorCount desc

但它不起作用。Kusto 抱怨说它无法确定LocationId是在第 4 行。我使用 Kusto 的explain关键字验证了我正在编写正确的 Kusto 查询。所以有什么问题 ?

4

2 回答 2

5

如果您想将其LocationId作为聚合键之一,则应将其包含在对 的调用中summarize,如下所示:| summarize ErrorCount = count() by UserId, LocationId.

[否则,请澄清您期望的输出模式(理想情况下,除了提供示例输入数据集,使用datatable运算符:数据表运算

于 2019-11-11T21:12:54.693 回答
1

只是对您原始 SQL 代码的友好提醒

select UserId, LocationId, COUNT(*) as ErrorCount from SampleTable where ResultType != 
'Success'
group by UserId
order by ErrorCount desc

其中可能包含错误:

GROUP BY 子句中缺少LocationId

正确的 SQL 代码应该是:

select UserId, LocationId, COUNT(*) as ErrorCount from SampleTable where ResultType != 
'Success'
group by UserId, LocationId
order by ErrorCount desc

我认为这可能是您意外错过 Kusto 代码中的 summarise 子句中的 LocationId 的原因。

于 2020-01-08T23:38:34.503 回答