我有一个以page_views为名称的kafka主题,有一个以pageviews为名称的流。现在我想计算最近5分钟浏览的页面。我正在使用ksql。 尝试过
SELECT after->pageview_id FROM pageviews WHERE after->pageview_id >= NOW() - INTERVAL 10 MINUTE;
和
SELECT AFTER ->pageview_id FROM pageviews WHERE after->pageview_id >= sysdate - 5/(24*60);
但不起作用。这是嵌套的avro模式。
答案 0 :(得分:3)
您可以使用HOPPING
窗口在KSQL中模拟滑动窗口。对于跳跃窗口,您应该指定窗口大小(在这种情况下为5 minutes
)和一个提前值,该值指示窗口如何移动,即滑动(例如,每1秒滑动一次)。因此,您可以编写如下查询:
CREATE STREAM foo AS SELECT after->pageview_id AS pv_id FROM pageviews;
CREATE TABLE bar AS SELECT pv_id, COUNT(pv_id) FROM foo WINDOW HOPPING (SIZE 5 MINUTES, ADVANCE BY 1 SECOND) GROUP BY pv_id;
有关HOPPING WINDOW
的更多信息,请参见以下页面: