DataStage のパイプライン・フローのマイグレーションおよび構成
以下のステップと制限は、パイプライン・キャンバスを使用して直接構成される、マイグレーションされたシーケンス・ジョブとフローに適用されます。
マイグレーションされたフロー
各コンポーネントの詳細については、「 DataStage 」の「Pipeline components」 を参照してください。
- ファイルを待機
- ファイル・パスを手動で再選択または構成してください。 クロス・ループのヘルパー・ノードとして、デフォルトのタイムアウト値は 23:59:59 です。 手動で値を更新するか、タイムアウトなしの場合は 00:00:00 に設定してください。
- すべて待機
- シーケンサー (すべて) およびネストされた条件を置き換えます。
- いずれかを待機
- シーケンサー (任意) を置き換えます。
- パイプラインを終了する
- ターミネーターを置き換えます。
- シーケンス内のループ
- 開始/終了ループを置き換えます。
- DataStage ジョブの実行
- 並列ジョブのジョブ・アクティビティを置き換える。
- パイプライン・ジョブの実行
- シーケンス・ジョブのジョブ・アクティビティを置き換える。 詳細は、 ジョブ をご覧ください。
- Bash スクリプトを実行する
- 環境変数がストリング・リテラルとして扱われないように、環境変数を囲む単一引用符を二重引用符で置き換える必要があります。
- ユーザー変数を設定する
- ユーザー変数を置き換えます。 ユーザー変数はグローバル・レベルで定義される。 詳細は 、「オーケストレーションパイプラインのグローバルオブジェクトの設定 」を参照してください。
- エラー処理
- 例外ハンドラーを置き換えます。
- パイプラインの一般的な問題
- サポートされない関数は、「1」または「サポートされない」を返します。
- ループまたは例外ハンドラー内で外部ノードにアクセスすると、マイグレーションによって追加の Set ユーザー変数ノードが追加されます。
メイン・パイプラインに例外ハンドラー・ノードがある場合、またはループ・ノードにメイン・パイプラインを指すリンクがある場合、マイグレーションによって追加のノードとローカル・パラメーター
MigrationTempFolder
が作成されます。 Run Bash スクリプト・ノードは、ループ・ハンドラーまたは例外ハンドラー内に作成されます。 このノードは、MigrationTempFolder
で提供されるマウント・パスの下にリンケージ・ファイルを作成します。このパスの末尾には/
が含まれている必要があります。 ループ・ハンドラーまたは例外ハンドラーの外側に、リンケージ・ファイルが作成されるのを待機するファイル待機ノードが作成されます。 マウントされたパスが正しくない場合、ノードは24時間待機します。 別の Run Bash スクリプト・ノードがリンケージ・ファイルを後で削除します。- 「失敗したアクティビティーを自動的に処理する」 を選択すると、エラーがスローされたときのリンクに条件が定義されていない限り、マイグレーションされたすべての実行ノードが 「パイプライン・エラー時に失敗」に設定されます。 条件が定義されているか、 「失敗したアクティビティーを自動的に処理する」 が定義されていない場合、ノードは 「エラー発生時にパイプラインを続行」に設定されます。
- 移行の際には、すべての並列ジョブとシーケンスジョブ、およびそれらの依存関係をISXファイルに含める必要があります。 あるシーケンス・ジョブが別のシーケンス・ジョブに依存しているが、依存するシーケンス・ジョブがマイグレーションされたISXファイルに含まれていない場合、マイグレーションは依存するジョブをパイプラインジョブの実行ノードではなくDataStageジョブの実行ノードとしてマークします。 また、マイグレーションでは、不足しているパラメーターのために余分なノードが作成される。
- チェックポイントを追加し、シーケンスに失敗しても再開できるようにするオプションがシーケンスジョブレベルで設定されている場合、ジョブは 'ノード・プロパティ・パネルで特定のノードのキャッシュを有効にするキャッシュメソッドで移行します。 キャッシュの使用状況]セクションでは、[選択したすべての条件が満たされたときにキャッシュを使用する]がデフォルトオプションとして設定され、[前の失敗した実行から再試行する]と[パイプラインのバージョンが前の実行から変更されていない]の両方が設定されます。 ノードレベルでジョブのチェックポイント実行を有効にしない場合、マイグレーションは選択したノードにデータキャッシュを作成します。 ノード・キャッシュの詳細については、 デフォルト設定の管理を参照してください。
- 異なるサブパイプライン間でルーチン出力を共有するには、 ルーチンアクティビティノードを、 Bashスクリプトの実行ノードとユーザー変数の設定ノードとして移行します。 Run Bash ノードは、更新可能なプレースホルダスクリプトを生成します。
- フローに欠落しているパラメータまたはパラメータセットへの参照が含まれている場合、移行により、欠落しているパラメータを参照するノードの前に追加の Bash スクリプトノードが作成され、フローのインポートに
unbound_reference_warning
メッセージが表示されます。 挿入されたノードの名前は、node
で始まります。 Bash スクリプトノードは、プレースホルダースクリプトを生成し、ノードの出力として不足しているパラメータを追加します。 パラメータ参照が欠落しているノードは、Bash スクリプトノードの出力を呼び出すように更新されます。
ユーザー状況の設定および取得
DataStageジョブでユーザー・ステータスを設定するには、TransformerステージのExpressionビルダーから組み込み関数SetUserStatusを呼び出します。 トランスフォーマーのトリガーでSetUserStatusを呼び出すと、入力カラムの派生では使用できません。
Run DataStage ジョブノードで DataStage ジョブを呼び出すパイプラインでステータスを取得するには、組み込み関数 ds.GetUserStatus(tasks.<node name>)にRun DataStage ジョブ・ノードの名前を指定します。 また、 tasks. < node name> .user_statusを使用して、ジョブ結果でこれにアクセスすることもできます。 パイプラインでユーザー状況を設定するには、そのユーザー状況をユーザー変数の設定ノードで変数として追加し、 「ユーザー変数値をパイプライン結果として使用可能にする」を選択する必要があります。これにより、他のパイプラインがアクセスできる出力パラメーターになります。 別のパイプラインでは、実行パイプライン・ジョブ・ノードを使用して、ユーザー状況を設定するパイプラインを呼び出し、 tasks. < node name>.results.output_parameters. < user status parameter name>を使用してユーザー状況を取得することができます。
SetUserStatusが子パイプラインで呼び出された場合、マイグレーションはuser_status
というグローバルユーザー変数を作成し、ユーザー変数の値をパイプラインの結果として利用可能にするオプションを選択します。 また、親パイプラインでは、子パイプラインのステータスを取得する式.$UserStatus
をtasks.results.output_parameters.user_status
に置き換えます。
構成されたフロー
- DataStage ジョブの実行
DSJobRunEnvironmentName
環境変数は、ジョブの実行環境を指定します。 DataStage ジョブの実行環境を指定します。DSJobRunEnvironmentName
環境変数を DataStage ジョブを実行 ノードに追加すると、特定の実行に対してプロジェクトレベルまたはジョブで設定されたデフォルトの実行環境を上書きすることができます。- Bash スクリプトを実行する
- echo ステートメントでは、変数の値にアクセスするために二重引用符を使用する必要があります。 例えば、
echo "variablename"
は、「variablename」を変数の値に置き換えます。echo 'variablename'
は、変数の名前をエコー出力するだけです。