5.6 KiB
5.6 KiB
データ収集
コンポーネントについて
| コンポ―ネント | 内容 |
|---|---|
| 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や外部ファイルを直接クエリも可能です 基本は直接で速い・型が保てる・圧縮効率がよく・読み取りコスト低い