Kinesis Analytics SQL:每N分钟仅打1行

时间:2016-09-20 17:02:24

标签: amazon-kinesis

我正在编写一个在有特定条件时输出一行的SQL。这连接到一个流,然后调用一个Lambda。当这种情况在短时间内多次断言时,就会出现问题。我想每N分钟只触发一次我的Lambda。

我的解决方案从DESTINATION_SQL_STREAM读取,滑动窗口为N分钟,如果count(*)== 0则发送新行,但我收到错误Object definition contains recursive cycle

有没有办法做到这一点?

1 个答案:

答案 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分钟发送一次。