Docker | Dockerコンテナを作成しよう(TimescaleDB)
- 2023.09.10
- Docker
みなさん、こんにちは!
今回はIoTデータの蓄積で注目されている「TimescaleDB」のコンテナを取り扱ってみます。
Dockerコンテナ生成までの流れ
以下に手順を整理します。
1)Docker HubからDocker ImageをPullする
DockerHubからDocker ImageをPullします。
→ TimescaleDBのページはこちら
※公式ドキュメントでもやり方が公開されています。
docker pull timescale/timescaledb-ha:pg14-latest
2)Docker Imageを起動する
コンテナをまだ作成していない場合は、以下のコマンドです。
※ 今回はルートパスワードを「passw0rd 」としています。
docker run -d --name miseruIT_timescaledb -p 5432:5432 -e POSTGRES_PASSWORD=passw0rd timescale/timescaledb-ha:pg14-latest
3)接続確認
デフォルトユーザは「postgres」です。
試しに使ってみる
以下のサンプルデータを取り込んで、いろいろと触ってみます。
気象庁:羽田(東京都) 2023年1月1日(10分ごとの値)
1)時間と温度データの作成
以下のようにデータを作成しました。
2)取り込み用のテーブル作成
以下のクエリを実行し、データ取り込み用のテーブルを作成します。
create table temp( time timestamp,temp float )
3)CSVデータの取り込み
以下の記事に基づいてCSVデータを取り込みます。(A5SQLを用いてインポートするのが楽です)
4)集計クエリを実行してみる
データが準備できましたので、集計を行ってみます。
① 1時間毎に気温データをまるめる
現在10分毎のデータとなっているので、1時間毎にまるめてみます。
time_bucket関数を用いることで、簡単にまるめ処理が行えます。
SELECT
time_bucket ('1 hour', time) AS bucket,
avg(temp) as avg_temp
FROM temp
Group by bucket
ORDER BY bucket ASC ;
2時間毎でもまるめることができます。
SELECT
time_bucket ('2 hour', time) AS bucket,
avg(temp) as avg_temp
FROM temp
Group by bucket
ORDER BY bucket ASC ;
ちなみに、PostgreSQLには date_trunc関数がありますが、こちらは「1時間」や「1日」など固定時間のみ丸めが可能で、2時間とかは設定できません。
TimescaleDBを用いる場合は「time_bucket」を用いることを覚えておくと良いですね。
②値を補完する
例えば、8時~9時30分のデータをDeleteしてみます。
delete from temp where time between '2023/01/01 08:00' and '2023/01/01 09:30'
この状態で1時間ごとにデータをまるめると、以下のように8時のデータが無くなってしまいます。
間が抜けてしまったデータを、NULLで補完するには、「time_bucket_gapfill」関数を用いて以下のように記載します。
SELECT
time_bucket_gapfill('1 hour', time) AS bucket,
avg(temp) as avg_temp
FROM temp
WHERE time >= '2023-01-01 00:00:00' AND time < '2023-01-01 23:59:59'
Group by bucket
ORDER BY bucket ASC ;
今回は以上です。
ではまた!
エラー: データの取得に失敗しました。
-
前の記事
Docker | Dockerコンテナを作成しよう(Microsoft SQL Server) 2023.09.08
-
次の記事
記事がありません