etl-patterns について
etl-patternsは、データエンジニア向けにETLの実装パターン選びを案内するスキルです。信頼性やロード方式に応じて、リトライ、チェックポイント、増分ロード、パイプライン編成の指針を示します。
主な機能
- 01信頼性要件に応じたパターン選択
- 02増分ロード方式の案内
- 03チェックポイントとリトライの解説
- 04一般的なパイプライン構成の提示
活用シーン
- 01障害から再開できるETLフローの設計
- 02大規模テーブルの増分ロード方式の選定
- 03過去データのバックフィル計画
- 04複数段階のデータパイプライン編成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ majesticlabs-dev/ majestic-marketplace --skill etl-patternsインストール後、Claude Code で/etl-patternsを入力して読み込まれたか確認します。
詳細
ETL パターン
本番環境向けの Extract-Transform-Load パターンを実現するオーケストレーターです。
スキルの振り分け
| 必要な内容 | スキル | 内容 |
|---|---|---|
| 信頼性パターン | etl-core-patterns | 冪等性、チェックポイント、エラー処理、チャンク処理、リトライ、ロギング |
| ロード戦略 | etl-incremental-patterns | バックフィル、タイムスタンプベース、CDC、パイプラインのオーケストレーション |
パターン選択ガイド
信頼性のニーズ別
| 必要な内容 | パターン | スキル |
|---|---|---|
| 繰り返し実行 | 冪等性 | etl-core-patterns |
| 障害後の再開 | チェックポイント | etl-core-patterns |
| 不正なレコードへの対応 | エラー処理+DLQ | etl-core-patterns |
| メモリ管理 | チャンク処理 | etl-core-patterns |
| ネットワークの耐障害性 | バックオフ付きリトライ | etl-core-patterns |
| オブザーバビリティ | 構造化ログ | etl-core-patterns |
ロード戦略別
| シナリオ | パターン | スキル |
|---|---|---|
| 小規模テーブル(<100K) | 全件リフレッシュ | etl-incremental-patterns |
| 大規模テーブル | タイムスタンプによる増分処理 | etl-incremental-patterns |
| リアルタイム同期 | CDC イベント | etl-incremental-patterns |
| 履歴データの移行 | 並列バックフィル | etl-incremental-patterns |
| ダウンタイムなしのリフレッシュ | スワップパターン | etl-incremental-patterns |
| 複数ステップのパイプライン | パイプラインのオーケストレーション | etl-incremental-patterns |
クイックリファレンス
冪等性の選択肢
# Small datasets: Delete-then-insert
# Large datasets: UPSERT on conflict
# Change detection: Row hash comparison
ロード戦略の決定
Is table < 100K rows?
→ Full refresh
Has reliable timestamp column?
→ Timestamp incremental
Source supports CDC?
→ CDC event processing
Need zero downtime?
→ Swap pattern (temp table → rename)
One-time historical load?
→ Parallel backfill with date ranges
一般的なパイプライン構造
# 1. Setup
checkpoint = Checkpoint('.etl_checkpoint.json')
processor = ETLProcessor()
# 2. Extract (with incremental)
df = incremental_by_timestamp(source_table, 'updated_at')
# 3. Transform (with error handling)
transformed = processor.process_batch(df.to_dict('records'))
# 4. Load (with idempotency)
upsert_records(pd.DataFrame(transformed))
# 5. Checkpoint
checkpoint.set_last_processed('sync', df['updated_at'].max())
# 6. Handle failures
processor.save_failures('failures/')
関連スキル
data-validation- ETL 中にデータ品質を検証しますdata-quality- データ品質の指標を監視しますpandas-coder- DataFrame の変換
コメント
Markdown 対応