2017-11-02 16 views
0

私はPrestoとZeppelinを使用しています。生データがたくさんあります。 私はこれらのデータを要約する必要があります。Prestoを使用して時間列を5秒間隔でグループ化し、列をカウントするにはどうすればよいですか?

私は5秒ごとに時間をグループ化したいと思っています。

serviceType  logType  date 
------------------------------------------------------ 
service1   log1  2017-10-24 23:00:23.206 
service1   log1  2017-10-24 23:00:23.207 
service1   log1  2017-10-24 23:00:25.206 
service2   log1  2017-10-24 23:00:24.206 
service1   log2  2017-10-24 23:00:27.206 
service1   log2  2017-10-24 23:00:29.302 

その結果

serviceType  logType  date      cnt 
-------------------------------------------------------------- 
service1   log1  2017-10-24 23:00:20   2 
service2   log1  2017-10-24 23:00:20   1 
service1   log1  2017-10-24 23:00:25   1 
service1   log2  2017-10-24 23:00:25   2 

最初、私は新しいテーブルに保存された件のデータを移行する必要があります。

2番目に、データをグループ化して新しいテーブルにリアルタイムで保存する必要があります。

sqlスクリプトを書くのは難しいです。

私を助けてください。

私はPythonインタープリタを使用する必要がありますか?

答えて

0

あなたはこれを一緒に入れてts - interval '1' second * (second(ts) % 5)

例で5秒にミリ秒の部分なしでtimestampを丸めることができdate_trunc

  • timestamp

    1. 廃棄ミリ秒の部分ができ:

      presto> SELECT ts_rounded, count(*) 
          -> FROM (
          ->  SELECT date_trunc('second', ts) - interval '1' second * (second(ts) % 5) AS ts_rounded 
          ->  FROM (VALUES timestamp '2017-10-24 23:01:20.206', 
          ->   timestamp '2017-10-24 23:01:23.206', 
          ->   timestamp '2017-10-24 23:01:23.207', 
          ->   timestamp '2017-10-24 23:01:26.206') AS t(ts) 
          ->) 
          -> GROUP BY ts_rounded ORDER BY ts_rounded; 
           ts_rounded  | _col1 
      -------------------------+------- 
      2017-10-24 23:01:20.000 |  3 
      2017-10-24 23:01:25.000 |  1 
      (2 rows) 
      
  • 関連する問題