1

我正在使用一个简单的 SiddhiQL 查询来获取具有相同时间戳的记录数,直到分钟条目和这些时间戳。查询是:

from inputStream
select time:dateFormat(ts,'yyyy-MM-dd HH:mm') as formatedTs, count(formatedTs)
group by formatedTs
insert into outputStream;

它给了我错误mismatched input 'group' expecting {'*', '+', '-', '/', '%', '<', '<=', '>', '>=', '==', '!=', AS, OR, AND, IN}group by在这种情况下,从句有什么问题?

4

1 回答 1

0

错误原因:

这个特殊的错误是由于缺少AS,以下count(formatedTs)

(错误消息中也指出了这一点。 mismatched input 'group' expecting {'*', '+', '-', '/', '%', '<', '<=', '>', '>=', '==', '!=', AS, OR, AND, IN} 查询编译器认为group由于缺少 而位于错误的位置AS

需要更正:

因此,该select声明需要更正如下:

select time:dateFormat(ts,'yyyy-MM-dd HH:mm') as formatedTs, count(formatedTs) as tsCount

您可能需要的进一步更正:

另外,是否inputStream有一个名为的属性formatedTs?如果不是,则在修复该select语句后,您将收到另一个错误,如下所示:

找不到属性类型,因为“inputStream”中不存在“formatedTs”

因为您要计算的属性应该存在于inputStream

如果是这种情况,以下查询(应该可以成功编译)可能会对您有所帮助:

from inputStream
select time:dateFormat(ts,'yyyy-MM-dd HH:mm') as formatedTs, count(ts) as countTs
group by ts
insert into outputStream;

更新

更新查询,因为您的要求是按格式化的时间戳分组:

from inputStream
select time:dateFormat(ts,'yyyy-MM-dd HH:mm') as formatedTs
insert into innerStream;

from innerStream
select formatedTs, count(formatedTs) as countTs
group by formatedTs
insert into outStream;
于 2016-06-18T16:15:19.660 回答