统计 esper 接收到不同继承事件的次数。
Count how many times esper receives different inherit events.
我是 Esper 的新手,直到现在我都能应付自如。有些事情我找不到解决办法,我试过到处都没有成功。
我有三个 类 将一个扩展到另一个。
使用 Esper Online:
create schema A(symbol string, price double);
create schema B() inherits A;
create schema C() inherits B;
现在我想计算在 window 的 2 秒内收到的每个事件的数量,使用下一个 EPL 语句:
select COALESCE(a.symbol,b.symbol,c.symbol) as symbol, count(a) as total_a, count(b) as total_b, count(c) as total_c from pattern [every a=A or every b=B or every c=C]#time(2 seconds) group by COALESCE(a.symbol,b.symbol,c.symbol);
我运行接下来的活动:
A={symbol='X', price=1}
B={symbol='X', price=1}
C={symbol='X', price=1}
C={symbol='X', price=1}
问题是当我发送一个 B 事件时,由于继承,它会计算一个 B 事件和一个 A 事件,显然如果我发送一个 C 事件,它会计算一个 C 一个 B 和一个 A 事件。
我使用了模式级注释@SuppressOverlappingMatches,它适用于继承,但时间 Windows 不适用于它。
试试这个。
select count(*, typeof(a)='A') as cnt_a, count(*, typeof(a)='B') as cnt_b,
count(*, typeof(a)='C') as cnt_c from A#time(2 sec) as a
我是 Esper 的新手,直到现在我都能应付自如。有些事情我找不到解决办法,我试过到处都没有成功。
我有三个 类 将一个扩展到另一个。 使用 Esper Online:
create schema A(symbol string, price double);
create schema B() inherits A;
create schema C() inherits B;
现在我想计算在 window 的 2 秒内收到的每个事件的数量,使用下一个 EPL 语句:
select COALESCE(a.symbol,b.symbol,c.symbol) as symbol, count(a) as total_a, count(b) as total_b, count(c) as total_c from pattern [every a=A or every b=B or every c=C]#time(2 seconds) group by COALESCE(a.symbol,b.symbol,c.symbol);
我运行接下来的活动:
A={symbol='X', price=1}
B={symbol='X', price=1}
C={symbol='X', price=1}
C={symbol='X', price=1}
问题是当我发送一个 B 事件时,由于继承,它会计算一个 B 事件和一个 A 事件,显然如果我发送一个 C 事件,它会计算一个 C 一个 B 和一个 A 事件。
我使用了模式级注释@SuppressOverlappingMatches,它适用于继承,但时间 Windows 不适用于它。
试试这个。
select count(*, typeof(a)='A') as cnt_a, count(*, typeof(a)='B') as cnt_b,
count(*, typeof(a)='C') as cnt_c from A#time(2 sec) as a