如何在聚合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"]}
答案 0 :(得分:0)
在Siddhi中,有两种类型的功能。常规"function"和"aggregate-function"。由于str:concat()不是聚合函数,因此您不能使用它来获得所需的结果。
因此,您可能必须编写自己的custom:concat()
聚合函数才能获得预期的结果。请参考以下示例,以编写自定义聚合函数(samples)。要获得上述输出,您只需在自定义属性聚合器中保留一个全局字符串变量,然后将其追加到processAdd(Object data)
方法中即可(类似于this)。