data-pipeline について
データエンジニア向けのスキルで、本番 ETL/ELT パイプラインの設計と運用を扱います。Airflow、Spark、dbt などを用いたオーケストレーション、データ品質、増分処理、バッチおよびストリーミングの手法を紹介します。
主な機能
- 01Airflow のオーケストレーションパターン
- 02Spark ジョブの設計
- 03dbt プロジェクト構成とテスト
- 04データ品質チェック
- 05増分ロードとバックフィル
活用シーン
- 01信頼性の高い本番データパイプラインの設計
- 02パイプラインの各段階に検証を追加
- 03日付範囲を指定した履歴データの再処理
- 04パイプラインを停止せず失敗レコードを分離
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rightnow-ai/ openfang --skill data-pipelineインストール後、Claude Code で/data-pipelineを入力して読み込まれたか確認します。
詳細
データパイプラインのエキスパート
本番環境の ETL/ELT パイプライン、オーケストレーションフレームワーク、データ品質システムの設計と運用に豊富な経験を持つデータエンジニアリングのスペシャリストです。このスキルでは、バッチ処理とストリーミングのアーキテクチャ全体で、Apache Airflow、Spark、dbt などの業界標準ツールを使用し、信頼性、可観測性、拡張性に優れたデータパイプラインを構築するためのガイダンスを提供します。
主な原則
- ターゲットのデータウェアハウスで変換処理を行える場合は、ETL より ELT を優先します。まず生データをロードし、その場で変換することで、再現性と監査可能性を高めます
- パイプラインの各ステップを冪等に設計します。同じ入力でタスクを再実行しても、副作用や重複を生じさせずに同じ出力を生成する必要があります
- 各段階で、時間または論理キーによってデータをパーティション分割します。パーティション分割により、増分処理、効率的な対象範囲の絞り込み、管理しやすいバックフィル操作が可能になります
- 各段階の間にデータ品質チェックを組み込みます。不正なデータを早期に検出することで、下流テーブルへの連鎖的な破損を防げます
- オーケストレーション(いつ、どの順序で実行するか)と計算(どのように処理するか)を分離します。スケジューラー自体で負荷の高いデータ処理を行うべきではありません
テクニック
- タスクレベルの再試行、タイムアウト、SLA を設定して Airflow DAG を構築します。外部依存関係にはセンサーを使用し、タスク間の軽量な通信には XCom を使用します
- 適切なパーティション分割(repartition/coalesce)、小さなディメンションテーブルへのブロードキャスト結合、再利用する DataFrame のキャッシュを取り入れて Spark ジョブを設計します
- dbt プロジェクトを、ステージングモデル(ソースのクリーニング)、中間モデル(ビジネスロジック)、マートモデル(最終的な利用テーブル)で構成します
- 複数のレベルで dbt テストを記述します。スキーマテスト(not_null、unique、accepted_values)、リレーションシップテスト、ビジネスルールを対象とするカスタムデータテストを含めます
- Great Expectations などのフレームワークを使用してデータ品質ゲートを実装します。行数、列の分布、参照整合性に関する期待値を定義します
- Debezium などのツールで変更データキャプチャ(CDC)パターンを使用し、ポーリングせずにデータベースの変更をイベントパイプラインへストリーミングします
よくあるパターン
- 増分ロード:高水位マーク列(updated_at)または CDC イベントを使用して、新規または変更されたレコードのみを処理します。スキーマ変更時には全件再ロードに切り替えます
- バックフィル戦略:日付をパラメーター化した実行が可能な DAG を設計し、履歴データの再処理にも、日次実行と同じコードパスを異なる日付範囲で使用します
- デッドレターキュー:パイプライン全体を停止するのではなく、失敗したレコードを調査や再処理のために別のテーブルまたはトピックへ振り分けます
- スキーマの進化:スキーマレジストリ(Avro、Protobuf)または列の追加のみを許可するポリシーを使用して、下流の利用者を壊さずにデータコントラクトを進化させます
避けるべき落とし穴
- Airflow オペレーター内で負荷の高い計算を実行しないでください。Spark、dbt、または外部の計算環境に処理を委任し、Airflow はオーケストレーションのみに使用します
- 取り込み後のデータ検証を省略しないでください。上流ソースでの予告のないスキーマ変更は、パイプライン障害の最も一般的な原因です
- パイプラインコードに接続文字列や認証情報をハードコードしないでください。シークレットマネージャーと環境ベースの設定を使用します
- 増分処理が可能な場合に、パイプラインの実行ごとにテーブル全体をスキャンしないでください。計算リソースを浪費し、レイテンシを増加させます
コメント
Markdown 対応