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

DataWorks:Python ノード

最終更新日:Jun 26, 2026

Python ノードは Python 3 構文をサポートしますが、Python 2 構文はサポートしません。Python ノードを使用して Python コードを実行し、ジョブを定期的にスケジューリングできます。このトピックでは、DataWorks で Python タスクを設定およびスケジューリングする方法について説明します。

前提条件

  • 使用する RAM ユーザーがワークスペースに追加されていること。

    RAM ユーザーを使用してタスクを開発する場合、RAM ユーザーをメンバーとしてワークスペースに追加し、[開発] ロールまたは [ワークスペース管理者] ロールを RAM ユーザーに割り当てる必要があります。 ワークスペース管理者ロールには、必要以上の権限があります。 ワークスペース管理者ロールを割り当てる場合は注意してください。 メンバーを追加してロールを割り当てる方法の詳細については、「ワークスペースメンバーを追加してロールを割り当てる」をご参照ください。

  • サーバーレス リソースグループがワークスペースに関連付けられていること。 詳細については、「サーバーレス リソースグループを使用する」ディレクトリのトピックをご参照ください。

  • 開発を開始する前に Python ノードが作成されていること。詳細については、「スケジューリングワークフローのノードの作成」をご参照ください。

注意事項

  • サーバーレスリソースグループを使用してタスクを実行する場合、単一のタスクで最大 64 CU を使用できます。ただし、タスクの起動に影響するリソース不足を避けるため、16 CU を超えないようにしてください。

  • Python ノードは基本的な Python ランタイム環境のみを提供します。Python コードでサードパーティパッケージが必要な場合は、カスタムイメージを作成し、イメージに依存関係をインストールしてから、そのイメージを使用して Python ノードを実行する必要があります。

ステップ 1: Python ノードの開発

  1. Python ノードを開発します。

    • Python コードを編集します。

      以下のコードは、バブルソートアルゴリズムの簡単な例を示しています。

      def bubble_sort(arr):
          n = len(arr)
          # 外側のループは各パスを制御します。
          for i in range(n):
              # 内側のループは隣接する要素の比較と交換を実行します。
              for j in range(0, n-i-1):
                  # 現在の要素が次の要素より大きい場合、それらを交換します。
                  if arr[j] > arr[j+1]:
                      arr[j], arr[j+1] = arr[j+1], arr[j]
          return arr
      
      # コードをテストします。
      if __name__ == "__main__":
          example_list = [64, 34, 25, 12, 22, 11, 90]
          sorted_list = bubble_sort(example_list)
          print("Sorted list:", sorted_list)
  2. コードを開発した後、右側のパネルで [実行設定] をクリックします。リソースグループなどのテスト実行の設定を構成し、image Run ボタンをクリックしてコードをテストします。

    説明

    Python ノードのデバッグおよびスケジューリングは、サーバーレスリソースグループでのみ実行できます。現在のワークスペースにサーバーレスリソースグループが関連付けられていることを確認してください。詳細については、「サーバーレスリソースグループの使用」をご参照ください。

  3. Python ノードスクリプトを開発およびテストした後、ノードのスケジューリングプロパティを設定して、ノードが定期的に実行されるようにします。

  4. (オプション) スケジューリングパラメーターを設定します。

    Python ノードは、コマンドライン引数としてスケジューリングパラメータを受け取ります。 スケジューリングパラメータ設定セクションでは、パラメータ値を順番に追加できます。 複数の値は スペース で区切ります。 コードでは、sys.argv[1]sys.argv[2] などを使用して、インデックスによってパラメータ値にアクセスします。

    説明
    • PyODPS ノードとは異なり、Python ノードは $var1 のようにパラメーターを名前で直接参照できないため、sys.argv を使用して明示的に読み取る必要があります。

    • スケジューリングパラメーターがコマンドライン引数として渡されるのは、ノードがコミットおよびデプロイされ、定期スケジュールやデータバックフィルなどのスケジューリングインスタンスによって実行された後のみです。これらのパラメーターは sys.argv を使用して読み取ることができます。デバッグのために DataStudio でノードを直接実行する場合、スケジューリングパラメーターは渡されません。この場合、sys.argv にはスクリプトパスのみが含まれ、パラメーター値にアクセスすることはできません。

    • パラメーター定義の例

      $[yyyymmdd] abc
    • パラメーター使用の例

      import sys
      
      # 受信したすべての引数を出力します。
      print("Current received arguments:", sys.argv)
      
      # 最初と 2 番目のパラメーターを取得します。
      param1 = sys.argv[1]
      param2 = sys.argv[2]
      print("Parameter 1:", param1)
      print("Parameter 2:", param2)

    スケジューリングパラメーターの設定方法の詳細については、「スケジューリングパラメーターのソースと式」をご参照ください。

  5. スケジューリング設定を完了したら、ノードを保存します。

ステップ 2: ノードのデプロイと保守

  1. スケジューリングを設定した後、Python ノードをコミットして本番環境にデプロイできます。

  2. デプロイ後、タスクはスケジューリング設定に基づいて定期的に実行されます。Operation and Maintenance Center > ノード O&M > Auto Triggered Task O&M > Auto Triggered Task に移動して、デプロイ済みの自動トリガータスクを表示および管理できます。詳細については、「運用保守の概要」をご参照ください。

個人開発環境でのタスクの開発

個人開発環境でも Python プログラミングをサポートしています。この環境を使用して Python ノードタスクを編集する方法については、「個人開発環境」をご参照ください。

関連付けられたロールを使用したノードの実行

RAM ロールを関連付けてノードを実行することで、特定の RAM ロールでノードタスクを実行し、詳細な権限制御とセキュリティ管理を実現できます。