目前我有一个流与几个传感器数据,发送他们的状态码一次当他们更新自己。
这是一个一次性值,然后传感器值再次为零,直到再次发生变化。所以在我的表中,最后一个值应该取代零值,直到一个新值被传递。目前我创建的表是这样的:
CREATE TABLE LRS WITH
(KAFKA_TOPIC='lrs', KEY_FORMAT='DELIMITED', PARTITIONS=6, REPLICAS=3)
AS SELECT
Device,
LATEST_BY_OFFSET(CAST(Sensor1 AS DOUBLE)),
LATEST_BY_OFFSET(CAST(Sensor2 AS DOUBLE))
FROM RELEVANT_VALUES RELEVANT_VALUES
WINDOW TUMBLING ( SIZE 10 SECONDS )
GROUP BY Device
所以不像这样:
Device | Sensor1 | Sensor2 | Timestamp
1 | null | null | 05:00am
1 | 3 | 2 | 05:01am
1 | null | null | 05:02am
1 | null | null | 05:03am
1 | 2 | 1 | 05:04am
1 | null | null | 05:05am
在更新值时应该是这样的:
Device | Sensor1 | Sensor2 | window
1 | null | null | 05:00-01
1 | 3 | 2 | 05:01-02
1 | 3 | 2 | 05:02-03
1 | 3 | 2 | 05:03-04
1 | 2 | 1 | 05:04-05
1 | 2 | 1 | 05:05-06
我基本上想创建一个表,总是显示最新发送的值,这是不空
是否有一种方法来实现这个使用KSQL ?
你总是可以添加一个过滤器如果你使用流或ksql你可以做WHERE Sensor1 IS NOT NULL