grasys blog

DuckDBでデータをParquet形式に出力する方法 🦆

こんにちはkyuitaです。

皆様は業務でBigQueryなどのデータ分析用にParquet形式でのデータを求められることはないでしょうか。
今回はDuckDBをデータフォーマット変換のツールとして利用してみます。

Parquet形式とは

大規模なデータ分析で広く使われるカラムナ型(列指向)データストレージフォーマットです。
Google CloudではBigQueryのデータ読み込みに対応しているフォーマットの一つです。

DuckDB CLIでParquetファイルを作成する

DuckDB CLIのインストールについては前回記事を参照してください。

扱うデータも前回同様 気象庁 最新のCSVデータ pre1h00_rct.csvを使用します。

観測所番号,都道府県,地点,国際地点番号,現在時刻(年),現在時刻(月),現在時刻(日),現在時刻(時),現在時刻(分),現在値(mm),現在値の品質情報,26日の最大値(mm),26日の最大値の品質情報,26日の最大値起時(時)(まで),26日の最大値起時(分)(まで),26日の最大値起時(まで)の品質情報,極値更新,10年未満での極値更新,25日までの観測史上1位の値(mm),25日までの観測史上1位の値の品質情報,25日までの観測史上1位の値の年,25日までの観測史上1位の値の月,25日までの観測史上1位の値の日,25日までの8月の1位の値(mm),25日までの8月の1位の値の品質情報,25日までの8月の1位の値の年,25日までの8月の1位の値の月,25日までの8月の1位の値の日,統計開始年
11001,北海道 宗谷地方,宗谷岬(ソウヤミサキ),,2025,08,26,09,20,5.0,8,5.0,4,09,20,4,,,45,8,1996,08,18,45,8,1996,08,18,1978
...

DuckDBに接続する

[kyuita@Local]$ duckdb
v1.2.1 8e52ec4395
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
D

データ(CSVファイル)を読み込んで、テーブルにインポートする

weatherと言うテーブルにデータをインポートします

CREATE OR REPLACE TABLE weather AS SELECT * FROM 'pre1h00_rct.csv';

COPYコマンドでParquetファイルを出力する

COPY weather TO 'weather.parquet' (FORMAT PARQUET);

このコマンドを実行するとweather.parquetが作成されます。

parquetファイルをviewerで確認するとちゃんと変換されていることがわかります。

{"観測所番号":11001,"都道府県":"北海道 宗谷地方","地点":"宗谷岬(ソウヤミサキ)","国際地点番号":null,"現在時刻(年)":2025,"現在時刻(月)":"08","現在時刻(日)":26,"現在時刻(時)":"09","現在時刻(分)":20,"現在値(mm)":5,"現在値の品質情報":8,"26日の最大値(mm)":5,"26日の最大値の品質情報":4,"26日の最大値起時(時)(まで)":"09","26日の最大値起時(分)(まで)":"20","26日の最大値起時(まで)の品質情報":4,"極値更新":null,"10年未満での極値更新":null,"25日までの観測史上1位の値(mm)":45,"25日までの観測史上1位の値の品質情報":8,"25日までの観測史上1位の値の年":1996,"25日までの観測史上1位の値の月":"08","25日までの観測史上1位の値の日":"18","25日までの8月の1位の値(mm)":45,"25日までの8月の1位の値の品質情報":8,"25日までの8月の1位の値の年":1996,"25日までの8月の1位の値の月":"08","25日までの8月の1位の値の日":"18","統計開始年":1978}
...

まとめ

DuckDB CLIを使えばコマンドラインから直接SQLでデータを操作してParquet形式にファイルを変換できます。

DuckDBはCSV以外にも以下のデータソースに対応していますのでファイルのフォーマット変換ツールとしても使うことができるのではないでしょうか。

  • AWS S3 buckets and storage with S3-compatible API
  • Azure Blob Storage
  • Blob files
  • Cloudflare R2
  • CSV
  • Delta Lake
  • Excel
  • httpfs
  • Iceberg
  • JSON
  • MySQL
  • Parquet
  • PostgreSQL
  • SQLite
  • Text files

非常に簡単にインストールして使用することができますので皆様も一度使ってみてはいかがでしょうか。

次回は前回触れたGrafanaとの連携を試してみたいと思います。


採用情報
お問い合わせ