【发布时间】:2020-09-17 12:54:27
【问题描述】:
我想创建一个命名窗口,它需要最后 20 秒的速度设置 (1-10) 和功率输出 (float)。然后我想查询这个以获得每个速度设置的平均功率(从 1-10)。对于每个速度设置,我需要指定一个特定的输出 ID。我尝试使用表达式将速度转换为此输出 id 来执行此操作,但无论我采用哪种方式,我都会收到错误“表达式需要流名称作为参数”。
谁能指出正确的表达式+如何使用表达式以获得我想要的输出?
如果你能指出一个更好的方法来做到这一点,那也很好。我是一个 esper 新手 + 不懂 Java,我在带有 CEP 堆栈的服务器上运行这些脚本,我不知道引擎盖下发生了什么,所以我发现很难排除故障!
CREATE expression getOutput {
speed =>
when speed = 1 then 4000
when speed = 2 then 5000
....
};
CREATE window Power.win:time(20 sec) as (power double, speed int);
INSERT into PortPower
SELECT
powerEvent.value as power,
cast(speedSetting.value, int) as speed
FROM
Event(id = 1000).std:lastevent() as powerEvent,
Event(id = 2000).std:lastevent() as speedEvent;
INSERT into Event
SELECT
getOutput(powerEvent.speed) as id,
avg(PowerEvent.power) as value
FROM
Power as PowerEvent
GROUP BY
PowerEvent.speed
HAVING
count(PowerEvent.speed) > 0;
【问题讨论】:
标签: sql influxdb complex-event-processing esper