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

100 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## フォルダ設計
実用的な運用パターン
```sh
/data/<domain>/<layer>/y=<YYYY>/m=<MM>/d=<DD>/
# 例
/data/marketing/silver/y=2025/m=06/d=01/*.csv
/data/marketing/silver/y=2025/m=06/*.parquet
# サブドメインパターン /data/<domain/<subdomain>>/<layer>
/data/sales/orders/bronze/y=2025/m=06
```
### パーティションディレクトリ構造 (Hive partitioning)
* y=2025/m=06/d=01/ のように key=value で階層を切るのは、Hadoop/Hive 系からの習慣です。
* BigQuery、Athena、Spark、Trino、DuckDB などほとんどのエンジンが理解できます。
### レイヤ
* bronze/ = 生データ(取ってきたまま、CSVなど)
* silver/ = 整形済み(型そろえ、Parquet化、パーティション付与)
* gold/ = 集計/マート用(ダッシュボード直結)
“品質レベル”が一目でわかる。AWSやGCPでもよく使う。
### ファイル名などのイベント規則
フォルダで年月やドメインを切っているので、
ファイル名は中身や分割単位を表す情報を載せるのが一般的です。
* イベント種別 or データセット名
* `orders, clicks, refunds`など
* 日付/時間(分割単位)
* 2025-06-01, 2025-06-01-15h など
* バージョン or チャンク番号
* 再生成や分割を考慮して _v1, _part-0001
```sh
# サンプル
clicks_2025-06-01_v1.csv
impressions_2025-06-01_v1.csv
conversions_2025-06-01_v1.csv
# チャンク
clicks_2025-06-01_part-0001.csv
```
## パイプライン型パターン
* ELT型(データ)Extract(取得) → Land(保存) → Transform(SQL/dbt/duckdb)
* ML型データ準備 → 特徴量 → 学習 → 評価 → 登録(MLflow/Weights&Biases)
* イベント処理:ストリーム受信 → 変換 → 集計 → マート出力(Kafka→Druid/Pinot/ClickHouse
* バッチETL取り込み → 正規化 → 検証 → 出力(Airflow/Dagster/Luigi/Prefectでオーケストレーション)
* dbt型ソース → ステージング → マート(SQL中心・テストとドキュメント込み)
### ETL / ETL
#### ELTとは (Extract → Load → Transform)
`取得 → DBへロード → 変換`の流れで実行
変換は SQL や dbt など、DWH自体の計算能力を使う。
BigQuery / Snowflake / Redshift などのクラウドDWHの時代に主流になった。
**メリット**
* 生データを残せるLandに置くので後から再処理できる
#### ETLとは (Extract → Transform → Load)
`取得 → 変換 → DBへロード`の流れで実行
90年代〜2010年代前半までの「オンプレDWH」時代によく使われた。
変換はアプリケーションサーバーや専用ETLツールでやるイメージです
## 汎用性を高めるための設計原則
* I/Oはアダプタ分離FS/GCS/S3/DB接続は adapters/(同じ関数シグネチャで差し替え)
* 実行ドライバは3種
* CLI(ローカル/CI): `python -m app run --date 2025-09-13`
* HTTP(GCF/Cloud Run): main(request) → 同じ関数を呼ぶ
* スケジューラ(Cloud Scheduler / cron / GitHub Actions)
## 用語集
**ETL / ELT**
Extract, Transform, Load(または Load, Transform)
データパイプラインの基本パターン
**データレイク (Data Lake)**
生データをフォーマット問わず保存する場所。S3/GCS/HDFSなど
**データウェアハウス (DWH)**
整形済みデータを分析用に最適化して保存するDB(BigQuery, Snowflake, Redshift など)