di-agent-flow-datastage について
di-agent-flow-datastageは、DataStage SDKでバッチフローを作成・編集するスキルで、エンジンステージを細かく制御する場面に適しています。ステージやプロパティの参照方法と、完全なフローコードを安全に編集・送信する手順を示します。
主な機能
- 01SDKによるフローの作成と更新
- 02ステージ候補とプロパティの参照
- 03取得した完全なコードの編集
- 04既存フロー上でのコンパイルエラー修正
- 05パラメーター付きフローのバインディング確認
活用シーン
- 01既存フローの式やステージプロパティを変更
- 02SDKやpyflowだけでは表現できない詳細を追加
- 03ステージのプロパティと許容値を確認
- 04コンパイルエラーが返されたフローを修復
MCP 対応
このスキルでは、`update_datastage_flow`や`create_datastage_flow`などのツールでフローを送信し、ステージ推奨やプロパティ参照のツールで情報を得る方法を説明しています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ibm/ ibm-watsonx-data-integration-skills --skill di-agent-flow-datastageインストール後、Claude Code で/di-agent-flow-datastageを入力して読み込まれたか確認します。
同梱ファイルreferences/sdk-conventions.md
詳細
SDK を使用した DataStage フローの作成と編集
ルーティングは別の場所で行います。 リクエストをここで作成するか pyflow で作成するか、また新規作成か編集かは、
di-agent-flow-lifecycleスキル(AUTHOR 状態)で決定します。このファイルは SDK のリファレンスであり、SDK の使用方法を説明しています。フローを扱う前に、di-agent-flow-lifecycleスキルを完全に理解する必要があります。ライフサイクルスキルを読み込む前に、SDK コードを書かないでください。
DataStage のバッチフローは SDK スタイルの Python コードで記述し、update_datastage_flow(既存のフローをその場で編集)または create_datastage_flow(新しいフローを作成)を使って送信します。認証、プロジェクトコンテキスト、永続化は自動的に処理されます。
SDK からは、pyflow ではフォームが用意されていないものも含め、エンジンの全体ステージカタログにアクセスできます。その代償として、ステージのタイプ、プロパティ名、列挙値を正確に指定する必要があります。そのため、ルーターではこれを既定の方法ではなく、最終手段として扱います。
どちらのツールも、呼び出しの一部としてフローをコンパイルします。 コンパイルに失敗すると、結果には status: "compile_error" と flow_id、flow_link、ステージごとの compile_errors リストが含まれます。フローは保存されたままです。同じ flow_id に対して update_datastage_flow を使って修正してください。新しいフローを作成したり、問題のあるフローを削除したりしないでください。編集対象を指定するために、その ID が必要です。
参照先
- SDK の規約(メソッドシグネチャ、ステージ設定、リンクスキーマ、列タイプ、接続のバインド、キーのルール、完全な例)→ references/sdk-conventions.md
- ステージの選択 →
recommend_datastage_stages(subutterances=[...]) - ステージのプロパティ名と使用可能な値 →
datastage_property_lookup(requests=[{"stage": "..."}]) - ステージごとの詳細 →
di-agent-knowledge-engine-datastageスキル stages/ - フローの最適化 →
di-agent-knowledge-engine-datastageスキル optimization/overview.md - カスタムステージ(C/C++、Java) → BuildopStage.md、JavaIntegrationStage.md
- Transformer ステージの式 →
di-agent-knowledge-engine-datastageスキルのリソースstages/TransformerStageFunctions/TransformerStageFunctionsOverview.md
編集
既存のフローの編集: 変更が、既存の構造上の式やステージプロパティに限定される場合は、インプレースの SDK 編集が適切です。retrieve_datastage_flow_code でフローを取得し、その SDK を変更して、update_datastage_flow で再送信します。検証済みで、すでに配線済みのコードに変更を加えるため、信頼性が高く、損失がなく、コストも低く抑えられます。
取得したコードを編集し、断片を手作業で作成しないでください。
update_datastage_flowの送信内容は、単独のスニペットではなく、retrieve_datastage_flow_codeが返した完全な SDK に変更を組み込んだものでなければなりません。参照するステージ、リンク、スキーマはすべて、同じ送信内容内で先に変数として定義してください(取得したコードではderive_seg、veh_in、fpなどがすでに定義されているため、それらの変数名を再利用します)。フラット化された SDK 文法には、既存の要素を取得する方法がありません。flow.links["x"]、flow.stages["y"]、link.schemaはすべて「Unsupported statement type」/「variable does not exist」として拒否されます。既存のリンクに列を追加するには、取得したコード内にある、そのリンクの既存のcreate_schema()/add_field(...)の行を編集してください。構造を追加するには、すでに定義済みの変数を参照するflow.add_stage(...)/stage.connect_output_to(...)/link.create_schema()ステートメントを追加してください。送信内容の検証に失敗した場合は、再送信するコード全体を修正してください。要素を再取得したり、最初から作り直したりしないでください。
変更によって構造(新しいソース、結合、異なる形状など)を追加または変更する場合は、ここで一から手作業で作成しないでください。これは SDK で最も信頼性の低い方法です。まず pyflow(di-agent-flow-pyflow)で新しい構造を作成し、次にここで生成された SDK を精密に編集して、pyflow では表現できないものを追加してください。中心となる形状を pyflow で忠実に表現できない場合は、pyflow で作成可能な最も近い形状を用意し、update_datastage_flow でここで目的の形状に変更してください。
バージョン管理とバックアップは、ライフサイクルルーターの RECOVER 状態(di-agent-flow-lifecycle/references/recover.md)が担当します。要点:update_datastage_flow はフローを上書きする前に自動でスナップショットを作成するため、事前に duplicate_asset を呼び出す必要はありません。呼び出すと不要なコピーが残るだけです。各フローにつき最大 5 個のスナップショットが保持され(最も古いものは削除されません)、デフォルトでは list_datastage_flows に表示されず、フローとともに削除されます。
ガードレール
- フローは
flow_idで取得してください —retrieve_datastage_flow_codeはflow_nameも受け付けますが、その方法では名前検索で最初に一致したフローを一意性の確認なしに取得するため、名前が曖昧だと、別のフローのコードが気付かれないまま返されます - ステージタイプ、プロパティ名、列挙値を推測しないでください —
recommend_datastage_stages/datastage_property_lookupを使用してください - 変更はすべて1回の送信にまとめてください — 連続して送信すると、互いの内容が上書きされます
update_datastage_flowでフローが新規作成されることはありません — 指定したフローが存在しない場合はエラーになります。list_datastage_flowsで名前を確認してください。作成にはcreate_datastage_flow(または pyflow)を使用してください。どちらを使うかについては、ライフサイクルルーターを参照してください- 更新に成功したら、ツールの結果で返された
flow_linkを、ユーザーが UI でフローを開けるクリック可能なリンクとして提示してください - 文章で示すステージプロパティ名 — 内部識別子(
nrecs)ではなく、datastage_property_lookupのUser friendly name(例:「行数(パーティションごと)」)を使用してください。内部名を示すのは、コードブロック内か、ユーザーが SDK プロパティを求めた場合に限ります - パラメーター化されたフロー:
update_datastage_flowは再構築前に既存のフローを読み込むため、SDK 編集を行っても、パラメーターセットの登録とローカルパラメーターは保持されます。編集後にジョブから予期せずパラメーターのバインドが失われた場合は、get_flow_parameter_referencesを呼び出して登録内容を監査し、attach_parameter_set_to_flow/add_local_parameterを使って不足しているエントリーを復元してください