如何在流中计算
我们说我们有一个流
CREATE STREAM stream (
value number
);
我们插入了十行
INSERT INTO stream (value) VALUES (1)
INSERT INTO stream (value) VALUES (1)
INSERT INTO stream (value) VALUES (1)
INSERT INTO stream (value) VALUES (2)
INSERT INTO stream (value) VALUES (2)
INSERT INTO stream (value) VALUES (3)
INSERT INTO stream (value) VALUES (4)
INSERT INTO stream (value) VALUES (5)
INSERT INTO stream (value) VALUES (6)
INSERT INTO stream (value) VALUES (7)
如何取回前2项及其频率?
value | frequency
-----------------
1 | 0.3
2 | 0.2
我想它应该以某种方式同时使用Top K和Count-min Sketch?
答案 0 :(得分:1)
您可以使用fss_agg:
CREATE CONTINUOUS VIEW v AS
SELECT fss_agg(x, 10) AS top_10_x FROM some_stream
这将跟踪10
最常出现的x
个最高值。每个值的权重也可以明确给出:
CREATE CONTINUOUS VIEW v AS
SELECT fss_agg_weighted(x, 10, y) AS top_10_x FROM some_stream
第一个版本隐含使用权重1
。
您可以使用各种functions来读取前K值及其相关频率。例如,以下内容将返回以下形式的元组:(value, frequency)
:
SELECT fss_topk(top_10_x) FROM v