1

如何在聚合 siddhi 查询中获取一列的所有数据。例如,我的数据为:

column1 column2 column_uuid
1       a       uuid1
2       a       uuid1
3       a       uuid3
4       b       uuid4

我想将 siddhi 查询用作:

define stream Input (column1 int, column2 string, column_uuid string);

define stream Output (column2 string, amount long, uuid string);

@info(name='query')
from Input#window.time(30 sec)
select column2, count() as amount, concat(column_uuid) as uuid
group by column2
having amount > 2
insert into Output;

我想得到结果:

Event{timestamp=xxx, data=[a, 3, "uuid1,uuid2,uuid3"]}
4

1 回答 1

0

在 Siddhi 中,有两种类型的功能。常规的"function""aggregate-function"。由于str:concat()不是聚合函数,因此您不能使用它来获得所需的结果。

因此,您可能必须编写自己的custom:concat()聚合函数才能获得预期的结果。请参考以下关于编写自定义聚合函数的示例(示例)。要获得上述输出,您可以简单地在自定义属性聚合器中保留一个全局字符串变量,并将其附加到processAdd(Object data)方法中(类似于this)。

于 2018-06-21T03:21:47.750 回答