esperjavaepl模式
我想处理以下JSON对象:esperjavaepl模式,java,json,esper,epl,Java,Json,Esper,Epl,我想处理以下JSON对象: [ { id: "38485ndndndn4848", value : 120, // kw ts: 1456983266, sensor_id: 20 }, { id: "48485ndndndn4848", value : 189, //kw ts: 1456984286, sensor_id: 20 }, {
[
{
id: "38485ndndndn4848",
value : 120, // kw
ts: 1456983266,
sensor_id: 20
},
{
id: "48485ndndndn4848",
value : 189, //kw
ts: 1456984286,
sensor_id: 20
},
{
id: "98485ndndndn4848",
value : 99, // kw
ts: 1457984286,
sensor_id: 21
},
{
id: "64640485ndndndn4848",
value : 56, // kw
ts: 1458984286,
sensor_id: 21
}
.
.
.
]
以获取每个传感器的每日消耗量(kWh)。
到目前为止,我已经创建了以下Java类:
public class Tick {
String id;
Integer sensorId;
Double value;
Date ts;
public Tick(JSONObject obj) {
this.id = (String) obj.get('id');
long timestamp = (Long) obj.get("ts");
this.ts = new Date(timestamp * 1000);
this.value = (Double)message.get("value");
}
使用此epl查询:
EPStatement cepStatement = cepAdm.createEPL("select max(ts) as date, sensorId from " +
"StockTick() group by deviceId ");
EPStatement cepStatement3 = cepAdm.createEPL("insert into Consumption" +
"select t0.ts, sum(t0.value*(t1.ts-t0.ts)/3600) as val , sensorId from StockTick() as t0 join StockTick() as t1 on t0.sensorId=t1.sensorId group by ts.getYear(), ts.getMonthOfYear(), ts.getDayOfMonth() , sensorId ");
---更新--------------
它会产生以下错误:
Incorrect syntax near 'by' (a reserved keyword) at line 1 column 261 [insert into DailyConsumption select
我不理解“如何在消费视图中处理数据”这个问题。“插入消费”表示消费是一个流(而不是一个视图)。您可以通过将侦听器或订阅服务器附加到语句来处理该流。@goodie请检查更新的问题。。。问题在于group by…这可能是因为“t0.tsgroup by”没有空格字符,应该是“t0.ts group”。
错误开始语句:未能验证group by子句表达式“sync”:名为“sync”的属性不明确,因为它对多个流有效。
我已经在Java类中有了getter:(这是一个连接,“sync”是两个流中的一个字段。因此,请使用“t0.sync.getYear()”或“t1.sync.getYear()”代替“sync.getYear()”
Incorrect syntax near 'by' (a reserved keyword) at line 1 column 261 [insert into DailyConsumption select