2016-12-07 6 views
1

私はRiakにTS内で最近追加されたグループを把握しようとしています。RiakにTSで分単位でカウント

私は、例えば、分単位でグループ化する方法に私の結果を見つけることができませんよカウント。以下に例を示します。

CREATE TABLE Results 
(
    result  VARCHAR NOT NULL, 
    time  TIMESTAMP NOT NULL, 
    PRIMARY KEY (
     (QUANTUM(time, 1, 'm')), 
     time 
    ) 
) 

挿入

INSERT INTO FreightMinuteResult VALUES ('Novo', '2017-12-07 12:03:45Z'); 
INSERT INTO FreightMinuteResult VALUES ('Novo', '2017-12-07 12:04:45Z'); 
INSERT INTO FreightMinuteResult VALUES ('Novo', '2017-12-07 12:05:45Z'); 
INSERT INTO FreightMinuteResult VALUES ('Novo', '2017-12-07 12:05:46Z'); 

クエリ

select count(*) from FreightMinuteResult where time > '2017-12-07 12:01:00Z' and time < '2017-12-07 12:06:00Z' group by time; 

結果はRiakにを使用して、1分間あたりの発生回数をカウントする方法

+--------+--------------------+ |COUNT(*)| time | +--------+--------------------+ | 1 |2017-12-07T12:04:45Z| | 1 |2017-12-07T12:03:45Z| | 1 |2017-12-07T12:05:45Z| | 1 |2017-12-07T12:05:46Z| +--------+--------------------+

ですTS?

ありがとうございました。グループが指定されたフィールドの正確な値を使用しながら

答えて

2

量子は、クエリ操作を合理化するためにバックエンドでデータを整理するために使用されます。タイムスタンプ2017-12-07T12:05:45Z2017-12-07T12:05:46Zは同じ分内に起こり、したがって、ディスク上の同じ場所に格納されますが、それらは依然として別々にグループ化される別個の第解像度タイムスタンプ値として記憶されます。

あなたが分単位でグループにできるようにしたい場合は、挿入時にタイムスタンプのいずれかに丸める必要がある、またはグループ化できる分のフィールドを含めるために、あなたのテーブルを変更します。

+0

ありがとう、ジョー!私はドキュメントがこの機能に関して誤解を招くと思います。たとえば、「GROUP BYは、一定期間に渡ってデバイスの属性を集計する場合に便利です(たとえば、過去24時間に30分ごとに平均値を取得できます)。あなたの応答からは、30分ごとに表示するフィールドを作成しなければならないことを意味します。後で、15分ごとにグループ化して別のフィールドを作成する場合は、それは厄介です。 –

+0

リカルドは、私はあなたの混乱を理解し、あなたが上でグループ化されているフィールドが同じ値を保持しなければならないという点で、TSでGROUP BYは、標準的なRDBMS年代にGROUP BYと同じように動作することに注意することが重要です。あなたの例のタイムスタンプは一意の '時刻'の値とそれぞれ一致しないので、結果セットに独自の行が作成されます。 – Craig

+1

こんにちはクレイグ!コメントありがとう!私はポイントを持っていますが、IMOは時系列DBとして、Riak TSはネイティブな方法で時間操作を処理できます。それがロードマップにあることを願っています。次を参照してください: https://kairosdb.github.io/docs/build/html/restapi/TimeGrouping.html https://docs.influxdata.com/influxdb/v1.1/query_language/data_exploration/#group-by-時間間隔 –

関連する問題