我有像;
这样的数据 [
{"deviceid":"d1","parameter"="p1" value="1" timestamp="2018-03-22T12:33:00"},
{"deviceid":"d1","parameter"="p2" value="2" timestamp="2018-03-22T12:34:00"},
{"deviceid":"d1","parameter"="p2" value="3" timestamp="2018-03-22T12:35:00"},
{"deviceid":"d2","parameter"="p1" value="4" timestamp="2018-03-22T12:36:00"},
{"deviceid":"d2","parameter"="p2" value="5" timestamp="2018-03-22T12:37:00"},
{"deviceid":"d2","parameter"="p2" value="6" timestamp="2018-03-22T12:38:00"},
{"deviceid":"d2","parameter"="p1" value="7" timestamp="2018-03-22T12:43:00"},
{"deviceid":"d2","parameter"="p1" value="8" timestamp="2018-03-22T12:44:00"},
{"deviceid":"d2","parameter"="p2" value="9" timestamp="2018-03-22T12:45:00"},
{"deviceid":"d1","parameter"="p1" value="10" timestamp="2018-03-22T12:46:00"},
{"deviceid":"d1","parameter"="p1" value="11" timestamp="2018-03-22T12:47:00"},
{"deviceid":"d1","parameter"="p2" value="12" timestamp="2018-03-22T12:49:00"}
]
我想调整参数值(每10分钟窗口)并显示每个deviceid的每个参数的最后收到的值,并且像这样编辑*(参数将是动态的,而不仅仅是p1和p2)
------------------------------------------------------------
| deviceid| windowtime | p1 | p2 |
------------------------------------------------------------
| d1 | 2018-03-22 12:40 | 1 | 3 |
------------------------------------------------------------
| d2 | 2018-03-22 12:40 | 4 | 6 |
------------------------------------------------------------
| d2 | 2018-03-22 12:50 | 8 | 9 |
------------------------------------------------------------
| d1 | 2018-03-22 12:50 | 11 | 12 |
------------------------------------------------------------
谢谢。
答案 0 :(得分:0)
您可以尝试以下脚本:
integration
答案 1 :(得分:0)
另一种更明确的方法是使用UDA:
SELECT
deviceid, system.Timestamp as windowtime, uda.P1UDA(test) AS P1, uda.P2UDA(test) AS P2
FROM
test TIMESTAMP BY timestamp
GROUP BY
deviceid,
TumblingWindow(minute, 10)
JavaScript UDA:
function P1UDA() {
this.init = function ()
{
this.state = 0;
}
this.accumulate = function (value, timestamp) {
if (value.parameter == 'p1') {
if (value.value > this.state) {
this.state = value.value;
}
}
}
this.computeResult = function () {
return this.state;
}
}
function P2UDA() {
this.init = function () {
this.state = 0;
}
this.accumulate = function (value, timestamp) {
if (value.parameter == 'p2') {
if (value.value > this.state) {
this.state = value.value;
}
}
}
this.computeResult = function () {
return this.state;
}
}