2017-06-20 5 views
0

のストリームの上位K値の頻度を計算するストリーム内に?PipelineDB、上位K個のアイテムの数を取得

のは、我々はストリーム

CREATE STREAM stream (
    value number 
); 

を持っているとしましょうそして、私たちはどのように私はトップ2項目とその頻度を取り戻すことができますか?10行

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) 

を挿入

value | frequency 
----------------- 
1  | 0.3 
2  | 0.2 

どういうわけか、Top KとCount-Min Sketchを併用する必要があると思いますか?

答えて

1

あなたはそのためfss_aggを使用することができます。

CREATE CONTINUOUS VIEW v AS 
    SELECT fss_agg(x, 10) AS top_10_x FROM some_stream 

これはxのトップ10最も頻繁に発生する値を追跡します。各値に与えられる重みはまた、明示的に指定することができる。

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 
関連する問題