data-engineering-data-pipeline について
バッチ処理とストリーミングを扱うデータエンジニア向けの、データパイプライン設計スキルです。取り込みからオーケストレーション、変換、品質管理、監視、コスト管理までを支援します。
主な機能
- 01ETL、ELT、Lakehouse の設計
- 02バッチとストリーミングの取り込み計画
- 03Airflow または Prefect のオーケストレーション
- 04dbt と Spark によるデータ変換
- 05品質、監視、コストへの対応
活用シーン
- 01パイプライン構成と技術選定の評価
- 02増分ロードとストリーミング処理の計画
- 03品質チェックとアラートの設計
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill data-engineering-data-pipelineインストール後、Claude Code で/data-engineering-data-pipelineを入力して読み込まれたか確認します。
詳細
データパイプラインアーキテクチャ
バッチデータとストリーミングデータの処理に向けた、スケーラブルで信頼性が高く、コスト効率に優れたデータパイプラインを専門とする、データパイプラインアーキテクチャのエキスパートです。
このスキルを使用する場面
- データパイプラインアーキテクチャに関するタスクやワークフローに取り組む場合
- データパイプラインアーキテクチャに関するガイダンス、ベストプラクティス、チェックリストが必要な場合
このスキルを使用しない場面
- タスクがデータパイプラインアーキテクチャに関係しない場合
- この範囲外の別のドメインやツールが必要な場合
要件
$ARGUMENTS
主な機能
- ETL/ELT、Lambda、Kappa、Lakehouse アーキテクチャを設計する
- バッチおよびストリーミングのデータ取り込みを実装する
- Airflow/Prefect によるワークフローオーケストレーションを構築する
- dbt と Spark を使用してデータを変換する
- ACID トランザクションを使用して Delta Lake/Iceberg ストレージを管理する
- データ品質フレームワーク(Great Expectations、dbt tests)を実装する
- CloudWatch/Prometheus/Grafana でパイプラインを監視する
- パーティショニング、ライフサイクルポリシー、コンピューティングの最適化によりコストを最適化する
手順
1. アーキテクチャ設計
- 評価する項目:データソース、データ量、レイテンシ要件、ターゲット
- パターンを選択する:ETL(ロード前に変換)、ELT(ロード後に変換)、Lambda(バッチ層+スピード層)、Kappa(ストリーミングのみ)、Lakehouse(統合型)
- フローを設計する:データソース → 取り込み → 処理 → ストレージ → 提供
- 可観測性の確認ポイントを追加する
2. 取り込みの実装
バッチ
- ウォーターマーク列を使用した増分ロード
- 指数バックオフを使用した再試行ロジック
- 無効なレコードに対するスキーマ検証とデッドレターキュー
- メタデータの追跡(_extracted_at、_source)
ストリーミング
- 正確な配信境界を定義します。Kafka トランザクションによって、外部データベース/APIへの副作用が自動的に exactly-once になるわけではありません。トランザクション対応または冪等性のあるシンクを使用し、クラッシュ/再生テストを実施します。
- トランザクション内でオフセットを手動コミットする
- 時間ベースの集計にウィンドウ処理を使用する
- エラー処理と再生機能
3. オーケストレーション
Airflow
- 論理的な整理のためにタスクグループを使用する
- タスク間通信に XCom を使用する
- SLA 監視とメールアラート
- execution_date を使用した増分実行
- 指数バックオフによる再試行
Prefect
- 冪等性を確保するタスクキャッシュ
- .submit() による並列実行
- 可視性を高める Artifacts
- 遅延を設定可能な自動再試行
4. dbt による変換
- ステージング層:増分マテリアライゼーション、重複排除、遅れて到着するデータへの対応
- マート層:ディメンショナルモデル、集計、ビジネスロジック
- テスト:unique、not_null、relationships、accepted_values、カスタムデータ品質テスト
- ソース:鮮度チェック、loaded_at_field の追跡
- 増分戦略:merge または delete+insert
5. データ品質フレームワーク
Great Expectations
- テーブルレベル:行数、列数
- 列レベル:一意性、NULL 許容性、型の検証、値の集合、範囲
- 検証実行のためのチェックポイント
- ドキュメント作成のためのデータドキュメント
- 失敗通知
dbt Tests
- YAML によるスキーマテスト
- dbt-expectations によるカスタムデータ品質テスト
- メタデータでテスト結果を追跡する
6. ストレージ戦略
Delta Lake
- append/overwrite/merge モードによる ACID トランザクション
- 述語ベースのマッチングによる Upsert
- 履歴クエリのためのタイムトラベル
- 最適化:小さなファイルの圧縮、Z-order クラスタリング
- 古いファイルを削除するための Vacuum
Apache Iceberg
- パーティショニングとソート順序の最適化
- Upsert に MERGE INTO を使用する
- スナップショット分離とタイムトラベル
- binpack 戦略によるファイル圧縮
- クリーンアップのためのスナップショットの有効期限切れ
7. 監視とコスト最適化
監視
- 処理済み/失敗レコード数、データサイズ、実行時間、成功率/失敗率を追跡します
- CloudWatch メトリクスとカスタム名前空間
- 重大/警告/情報イベントに対する SNS アラート
- データの鮮度チェック
- パフォーマンス傾向の分析
コスト最適化
- パーティショニング:日付/エンティティベースとし、過剰なパーティショニングを避けます(1GB 超を維持)
- ファイルサイズ:Parquet の場合は 512MB~1GB
- ライフサイクルポリシー:ホット(Standard)→ ウォーム(IA)→ コールド(Glacier)
- コンピューティング:バッチにはスポットインスタンス、ストリーミングにはオンデマンド、アドホック処理にはサーバーレスを使用します
- クエリ最適化:パーティションプルーニング、クラスタリング、述語プッシュダウン
例:最小限のバッチパイプライン
疑似コードのみです。BatchDataIngester、DeltaLakeManager、DataQualityFramework は個別に実装するアプリケーションクラスであり、提供されるライブラリではありません。ウォーターマークと追加書き込みを組み合わせると、再実行された行が重複する場合があります。信頼性の高い増分読み込みを実現できると主張する前に、安定したキー、重複排除、遅延更新の処理、チェックポイントのアトミックな進行を定義してください。Vacuum/スナップショットの有効期限切れにより復旧履歴が失われる可能性があるため、保持計画が必要です。
# Batch ingestion with validation
from batch_ingestion import BatchDataIngester
from storage.delta_lake_manager import DeltaLakeManager
from data_quality.expectations_suite import DataQualityFramework
ingester = BatchDataIngester(config={})
# Extract with incremental loading
df = ingester.extract_from_database(
connection_string='postgresql://host:5432/db',
query='SELECT * FROM orders',
watermark_column='updated_at',
last_watermark=last_run_timestamp
)
# Validate
schema = {'required_fields': ['id', 'user_id'], 'dtypes': {'id': 'int64'}}
df = ingester.validate_and_clean(df, schema)
# Data quality checks
dq = DataQualityFramework()
result = dq.validate_dataframe(df, suite_name='orders_suite', data_asset_name='orders')
# Write to Delta Lake
delta_mgr = DeltaLakeManager(storage_path='s3://lake')
delta_mgr.create_or_update_table(
df=df,
table_name='orders',
partition_columns=['order_date'],
mode='append'
)
# Save failed records
ingester.save_dead_letter_queue('s3://lake/dlq/orders')
成果物
1. アーキテクチャドキュメント
- データフローを示すアーキテクチャ図
- 根拠を添えた技術スタック
- スケーラビリティ分析と成長パターン
- 障害モードと復旧戦略
2. 実装コード
- 取り込み:エラー処理を伴うバッチ/ストリーミング
- 変換:dbt モデル(ステージング → データマート)または Spark ジョブ
- オーケストレーション:依存関係を設定した Airflow/Prefect DAG
- ストレージ:Delta/Iceberg テーブル管理
- データ品質:Great Expectations スイートと dbt テスト
3. 設定ファイル
- オーケストレーション:DAG 定義、スケジュール、再試行ポリシー
- dbt:モデル、ソース、テスト、プロジェクト設定
- インフラストラクチャ:Docker Compose、K8s マニフェスト、Terraform
- 環境:dev/staging/prod の設定
4. 監視と可観測性
- メトリクス:実行時間、処理済みレコード数、品質スコア
- アラート:障害、パフォーマンス低下、データの鮮度
- ダッシュボード:パイプラインの健全性を確認する Grafana/CloudWatch
- ロギング:相関 ID を含む構造化ログ
5. 運用ガイド
- デプロイ手順とロールバック戦略
- よくある問題のトラブルシューティングガイド
- データ量増加時のスケーリングガイド
- コスト最適化戦略と削減額
- 災害復旧とバックアップの手順
成功基準
- パイプラインが定義済みの SLA(レイテンシー、スループット)を満たす
- データ品質チェックの成功率が 99% 超である
- 障害時に自動再試行とアラートを実行する
- 包括的な監視により健全性とパフォーマンスを確認できる
- ドキュメントによってチームが保守できる
- コストの変化は同等のワークロードを基準として測定し、一定の削減を保証しない
- ダウンタイムなしでスキーマを進化できる
- エンドツーエンドのデータリネージを追跡できる
制限事項
- 上記の説明にある範囲にタスクが明確に合致する場合にのみ、このスキルを使用してください。
- 出力を、環境固有の検証、テスト、専門家によるレビューの代替として扱わないでください。
- 必要な入力、権限、安全上の境界、成功基準が不足している場合は、作業を中止して確認を求めてください。
コメント
Markdown 対応