我正在编写一个在有特定条件时输出一行的SQL。这连接到一个流,然后调用一个Lambda。当这种情况在短时间内多次断言时,就会出现问题。我想每N分钟只触发一次我的Lambda。
我的解决方案从DESTINATION_SQL_STREAM
读取,滑动窗口为N分钟,如果count(*)== 0则发送新行,但我收到错误Object definition contains recursive cycle
。
有没有办法做到这一点?
答案 0 :(得分:2)
我想我误解了有关流媒体的一些概念。如果您需要每隔N分钟发送一次活动,请使用以下内容:
CREATE OR REPLACE PUMP "STREAM_PUMP_PRE" AS INSERT INTO "PREDESTINATION_SQL_STREAM"
SELECT STREAM FID, COUNT(*) OVER SLIDING_WINDOW AS TOTAL
FROM "SQL_STREAM_BOTTLENECK"
WINDOW SLIDING_WINDOW AS (PARTITION BY FID RANGE INTERVAL '60' SECOND PRECEDING);
CREATE OR REPLACE PUMP "STREAM_PUMP_RESULT" AS INSERT INTO "DESTINATION_SQL_STREAM"
SELECT STREAM FID, COUNT(*) AS TOTAL
FROM "PREDESTINATION_SQL_STREAM"
GROUP BY FID, FLOOR(PREDESTINATION_SQL_STREAM.ROWTIME TO MINUTE);
您的数据来自SQL_STREAM_BOTTLENECK
,然后您按最后一分钟的所有事件进行分组,最后每1分钟发送一次。