2025-09-15 13:11:45 +09:00

5.6 KiB
Raw Blame History

データ収集

コンポーネントについて

コンポ―ネント 内容
Parquet 列指向のバイナリ形式のデータファイル
DuckDB 手元で動く小さなDWH / Parquet/CSVに強い(ローカル向け)
BigQuery マネージド型の DWHデータウェアハウス
ClickHouse 列指向DBの代表格超高速集計、リアルタイム分析
Apache Druid 時系列分析やダッシュボード用途に強い / Supersetと相性がよい
Apache Pinot Druidに似ていて、リアルタイム分析に特化広告配信やA/Bテスト分析など
Jupyter Notebook
Metabase
Superset

DuckDB(クエリエンジン)

軽量・組み込み型の分析データベース SQLiteが「小さなトランザクションDB」なら、DuckDBは「小さなOLAPエンジン」。

イメージとしては以下の通りです。

SQLite小さなアプリ用に最適化されたトランザクションDB DuckDBデータ分析のために最適化された組み込みエンジン

  • サーバ不要
    • 1つのライブラリプロセスで動く。インストールもシンプルPython, CLI, R, C/C++など)
  • 列指向ストレージ:大量データのスキャンや集計に強い。
  • 外部ファイルを直接クエリできるのが大きな特徴。

ユースケース

  • 毎月の CSVやParquetを置くだけで分析
  • Jupyter NotebookやPythonスクリプトの中で 即席SQLエンジンとして活用
  • BIツールMetabase / Superset / Tableauに接続して レポート化

Parquet

Parquetパーケイ は列指向のバイナリ形式のデータファイル です。 Apache が開発したオープンフォーマットで、ビッグデータ処理や分析用に広く使われています。

  • Parquet のファイル拡張子は .parquet(例: logs_2025_09.parquet)
  • 列指向フォーマット
  • 圧縮効率が高い
    • 列ごとに同じ型・似た値が並ぶため、圧縮Snappy/Zstd/Gzipなどが効きやすい
  • CSVは全部テキスト扱いだが、Parquetはカラムごとに「整数」「浮動小数」「日付」などの型を保持
  • park / Hive / Presto / BigQuery / Snowflake / DuckDB / Pandas など、ほとんどの分析基盤がネイティブ対応

CSV(行)

id,name,age
1,Alice,24
2,Bob,30
3,Charlie,28

Parquet (列指向・バイナリ)

id:  [1,2,3]
name:[Alice,Bob,Charlie]
age: [24,30,28]

BigQuery

マネージド型の DWHデータウェアハウスで 提供元はGoogle Cloudです

  • サーバ運用不要(完全マネージド)
  • データを GCS に置いて「外部テーブル」でクエリも可能
  • 料金は ストレージ+スキャンしたデータ量に応じて課金。
  • 同時接続や大規模並列処理が強く、Looker StudioなどBIツールと相性抜群。
  • 無料プラン
    • 毎月ストレージ部分で少量(例 10GB)まで無料の枠がある。
    • クエリ処理も、毎月一定量(例 1TB の処理量)まで無料。

ユースケース

  • 数百GB〜PB規模のデータをクラウドでガッツリ分析したいとき。
  • 運用を省きたいとき

ClickHouse

列指向DBの代表格超高速集計、リアルタイム分析 ログ分析、イベントデータ処理に強い。

システム構成

1. CSV

PoCならCSVのみで運用することも多々あります

運用ルールとしてよくあるのは以下のようなものです

  • ディレクトリは y=YYYY/m=MM[/d=DD] のHive風で粒度を切る
  • ファイル名は 日付+ソース+バージョン を含める 例: events_2025-09-13_sourceA_v1.csv
  • スキーマ/品質
    • スキーマ表用意(列名・型・必須/NULL・説明
    • 区切り・エンコーディング(UTF-8)・改行コード(LF) を固定
    • ヘッダ1行固定、列順は変えない変えるなら列マップを同梱
    • NULLは "" or 明示トークンNULLで統一
    • タイムスタンプは ISO 8601 (UTC推奨)2025-09-13T00:00:00Z

2. CSV + DuckDB + Parquet

運用する際にディレクトリ構成に設計が必要になります。

ディレクトリ設計例

data/
  raw_csv/
    y=2025/m=09/*.csv             # “年/月”で月次パーティション
  parquet/
    y=2025/m=09/*.parquet         # 変換先(後述のバッチで作る)
duckdb/
  lake.duckdb                      # メタ・ビュー定義だけを持つDBファイル

3. (列指向DWH) ClickHouse/Apache Druid/Apache Pinot

ClickHouse / Apache Druid / Apache Pinot は、CSV以外のフォーマットや ストリームからそのまま取り込みできますし、直接INSERTや外部ファイルを直接クエリも可能です 基本は直接で速い・型が保てる・圧縮効率がよく・読み取りコスト低い

4. GCSのCSV/Parquet + BigQuery