すべてのプロダクト
Search
ドキュメントセンター

DataWorks:do-while ノードの設定

最終更新日:Mar 26, 2026

do-while ノードは、プログラミング言語における do-while 文と同様に動作します。つまり、内部ワークフローをループで実行し、各反復の終了時に終了条件を評価します。このループは、条件の評価前に最低でも 1 回は必ず実行されます。do-while ノードは単体で使用することもできますが、代入ノードと組み合わせて結果セットを反復処理することもできます。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

制限事項

制約事項詳細
エディションDataWorks Standard Edition 以上のみ
最大ループ回数ノードインスタンスあたり 1,024 回
並列実行非対応 — 各ループは前のループが終了した後にのみ開始されます

仕組み

do-while ノードには、以下の 3 つの組み込みコンポーネントがあります。

コンポーネント役割削除可能か
開始ノード各反復の開始を示すものであり、ビジネスロジックは実行しませんいいえ
Shell ノードDataWorks が提供するサンプルのビジネス処理ノードです。他のノードタイプに置き換えることができますいいえ(必要に応じて他のノードタイプに置き換えます)
終了ノード終了条件を評価します。True を返すとループを継続し、False を返すとループを停止しますいいえ

各反復における実行シーケンスは以下のとおりです。

  1. 開始ノードがループの開始を通知します。

  2. 内部ノードが依存関係に従って順次実行されます。

  3. 終了ノードが終了条件を評価します。

  4. 終了ノードが True を返す場合、次の反復が開始されます。一方、False を返す場合、ループは終了します。

すべての内部ノードで利用可能な組み込み変数は以下のとおりです。

変数説明初期値
${dag.loopTimes}現在の反復回数1
${dag.offset}現在の反復回数から 1 を引いた値(オフセット)0

内部ノードでは、do-while ノード上で設定した入出力パラメーターを、${dag.<parameter name>} の形式で参照できます。

do-while ノードの作成

  1. DataStudio ページに移動します。DataWorks コンソールにログインします。上部のナビゲーションバーから目的のリージョンを選択します。左側のナビゲーションウィンドウで、データ開発およびガバナンスデータ開発 を選択します。表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、データ開発へ移動 をクリックします。

  2. ノードを作成します。新建 アイコンにカーソルを合わせ、ノードの作成一般do-while の順に選択します。または、左側のペインで対象のワークフローを見つけ、ワークフロー名をクリックしてから、一般 を右クリックし、ノードの作成do-while を選択します。

  3. ノードの作成 ダイアログボックスで、名前 および パス パラメーターを設定し、確定 をクリックします。

例:5 回ループして反復回数を出力する

この例では、do-while ノードを正確に 5 回実行します。各反復において、Shell ノードが現在のループ番号を出力します。

Shell ノードの編集

  1. Shell ノードをダブルクリックして、その構成タブを開きます。

  2. コードエディタに以下のコードを入力します。

    echo ${dag.loopTimes} ----現在のループ回数を表示します。

    ${dag.loopTimes} は、現在の反復回数(初期値は 1)を保持する組み込みの予約変数です。do-while ノードのすべての内部ノードで参照できます。使用例については、「組み込み変数」および「変数値の例」をご参照ください。

  3. ノードを保存します。

    重要

    コードを変更するたびに保存してください。保存せずにコミットすると、コミットされたバージョンには最新の編集内容が反映されません。

終了ノードの設定

  1. 終了ノードをダブルクリックして、その構成タブを開きます。

  2. [言語] ドロップダウンリストから [Python] を選択します。

  3. 以下の終了条件を入力します。

    if ${dag.loopTimes}<5:
     print True;
    else:
     print False;

    この条件では、dag.loopTimes5 と比較しています。5 回目の反復では、dag.loopTimes5 に等しくなるため、${dag.loopTimes}<5False と評価され、ループは停止します。1~4 回目の反復では True が返され、ループは継続します。

do-while ノードのコミットおよびデプロイ

  1. 上部ツールバーの 保存 アイコンをクリックして、ノードを保存します。

  2. 上部ツールバーの 提交 アイコンをクリックして、ノードをコミットします。提出 ダイアログボックスで、変更内容の説明 を入力します。コミットする前に、再実行 および 親ノード パラメーターを プロパティ タブで設定します。

    デプロイ前にタスクコードを検証するために、コードレビューを有効化します。コミットされたノードは、コードレビューに合格した後でのみデプロイ可能になります。詳細については、「コードレビュー」をご参照ください。
  3. ワークスペースが標準モードの場合、ノード構成タブの右上隅にある デプロイ をクリックして、ノードを本番環境にデプロイします。詳細については、「タスクのデプロイ」をご参照ください。

ノードのテストおよび実行ログの確認

do-while ノードは DataStudio 内で直接テストすることはできません。ワークフローをオペレーションセンターにコミットおよびデプロイした後、そちらで実行および確認を行ってください。

do-while ノードが代入ノードの値を使用する場合、テスト時には代入ノードと do-while ノードの両方を実行してください。
  1. do-while ノードの構成タブで、上部ツールバーの オペレーションセンター をクリックします。

  2. 左側のナビゲーションウィンドウで、周期タスク保守周期タスク を選択します。

  3. do-while ノードを見つけ、操作 列の DAG をクリックします。

  4. 有向非循環グラフ (DAG) で、代入ノードを右クリックし、実行現在および子ノードを遡及的に実行 を選択します。データバックフィル ダイアログボックスでパラメーターを設定し、OK をクリックします。

  5. [パッチデータ] ページを更新します。データバックフィルインスタンスが正常に実行された後、do-while インスタンスの [アクション] 列の [DAG] をクリックします。

  6. 実行ログを確認します。

    1. do-while ノードを右クリックし、内部ノードの表示 を選択します。内部ノードビューには 3 つのペインがあります。

      ペイン内容
      再実行履歴 — do-while ノードインスタンスの実行ごとに 1 件のレコード
      中央ループ記録一覧 — 全ての反復およびそのステータス
      反復の詳細 — ループ記録をクリックすると、その中のノードインスタンスを表示できます
    2. 中央ペインで完了したループをクリックします。右ペインで目的のノードを右クリックし、実行時ログの表示 を選択します。

    3. 中央ペインで ループ 5 をクリックして、5 回目のループにおける Shell ノードの実行ログを表示します。

次のステップ

  • 外部ワークフローと内部ノード間でデータを渡すには、do-while ノード上で入出力パラメーターを設定します。内部ノードでは、${dag.<parameter name>} を使用してそれらを参照できます。

  • 結果セットを反復処理するには、do-while ノードと代入ノードを組み合わせます。${dag.offset}(初期値は 0)を使用して各行をインデックス指定します。

  • do-while ノードは、終了条件の評価前に必ず最低 1 回は実行されるため、do-while 文の動作と一致します。while ループのような事前チェックはサポートされていません。for-each の動作を実現するには、${dag.offset} を使用し、適切に入出力パラメーターを設定します。