WSO2 Streaming Integrator - Siddhi.io 将多个事件聚合为一个事件
WSO2 Streaming Integrator - Siddhi.io Aggregate multiple events into one event
我需要将多个事件收集到一个事件中,并将其视为一个事件。输出流应包括输入事件列表。
基本上,当以下事件通过时
{InvoiceNumber:1, LineItem: 1, Value: 100}
{InvoiceNumber:1, LineItem: 2, Value: 200}
{InvoiceNumber:1, LineItem: 3, Value: 300}
我需要输出如下所示
[InvoiceNumber:1, lineItems: [{LineItem: 1, Value: 100}, {LineItem: 2, Value: 200}, {LineItem: 3, Value: 300}]
如何使用 WSO2 Streaming Integrator 实现这一点?或者 Siddhi.io.
我尝试了以下操作,但它仍然将每个流插入到输出流中
partition with (InvoiceNo of CSVInputStream)
begin
from every e1=CSVInputStream
within 1 min
select e1.InvoiceNo, list:collect(e1.LineItem) as lineItems
group by e1.InvoiceNo
insert into AggregatedStream;
end;
不要使用分区,因为这是一个简单的用例,请尝试 windows。在您的情况下,时间批次 windows,https://siddhi.io/en/v5.1/docs/api/latest/#timebatch-window
from CSVInputStream#window.timeBatch(1 min)
select e1.InvoiceNo, list:collect(e1.LineItem) as lineItems
group by e1.InvoiceNo
insert into AggregatedStream;
我需要将多个事件收集到一个事件中,并将其视为一个事件。输出流应包括输入事件列表。
基本上,当以下事件通过时
{InvoiceNumber:1, LineItem: 1, Value: 100}
{InvoiceNumber:1, LineItem: 2, Value: 200}
{InvoiceNumber:1, LineItem: 3, Value: 300}
我需要输出如下所示
[InvoiceNumber:1, lineItems: [{LineItem: 1, Value: 100}, {LineItem: 2, Value: 200}, {LineItem: 3, Value: 300}]
如何使用 WSO2 Streaming Integrator 实现这一点?或者 Siddhi.io.
我尝试了以下操作,但它仍然将每个流插入到输出流中
partition with (InvoiceNo of CSVInputStream)
begin
from every e1=CSVInputStream
within 1 min
select e1.InvoiceNo, list:collect(e1.LineItem) as lineItems
group by e1.InvoiceNo
insert into AggregatedStream;
end;
不要使用分区,因为这是一个简单的用例,请尝试 windows。在您的情况下,时间批次 windows,https://siddhi.io/en/v5.1/docs/api/latest/#timebatch-window
from CSVInputStream#window.timeBatch(1 min)
select e1.InvoiceNo, list:collect(e1.LineItem) as lineItems
group by e1.InvoiceNo
insert into AggregatedStream;