このトピックでは、スケジューリングパラメータに関するよくある質問への回答を提供します。
スケジューリングパラメータの一般的な使用シナリオ
スケジューリングパラメータのテスト
スケジューリングパラメータの値割り当てロジックの違い
実行、パラメータ付き実行、開発環境でのスモークテストの実行モード間で、スケジューリングパラメータの値割り当てロジックの違いは何ですか。
スケジューリングパラメータの O&M とスケジューリングパラメータの構成の確認
当日の 00:00 にノードのインスタンスを実行して、前日の 23:00 に対応するパーティションのデータを分析します。ただし、当日の 23:00 に対応するパーティションのデータが分析されます。どうすればよいですか。
問題の説明
テーブルパーティションの形式は day=yyyymmdd,hour=hh24 です。$[yyyymmdd] $[hh24-1/24] 変数は、パーティションの日付と時刻を指定するために使用されます。 00:00 にインスタンスを実行すると、カスタム変数 datetime=$[yyyymmdd] は前日ではなく当日を指定します。結果として、当日の 23:00 に対応するパーティションのデータが分析されます。
解決策
datetime の値を $[yyyymmdd-1/24] に変更し、$[hh24-1/24]hour には の値を保持します。
構成
コード内:
day=datetime, hour={hour},ノードに構成されているスケジューリングパラメータ:
datetime=[yyyymmdd-1/24],hour=[hh24-1/24]
シナリオ
2021-07-21 00:00:00 に実行するようにスケジュールされているインスタンスの場合、$[yyyymmdd-1/24] の値は 20210720 であり、$[hh24-1/24] の値は 23 です。これは、2021-07-21 00:00:00 の 1 時間前は前日の時点だからです。
2021-07-21 01:00:00 に実行するようにスケジュールされているインスタンスの場合、$[yyyymmdd-1/24] の値は 20210721 であり、$[hh24-1/24] の値は 00 です。これは、2021-07-21 01:00:00 の 1 時間前は依然として当日の時点だからです。
pt=yyyy-mm-dd hh24:mi:ss などのスペースを含む形式でテーブルパーティションを指定するにはどうすればよいですか。
スケジューリングパラメータではスペースは使用できません。
次のカスタム変数を使用して日付と時刻を取得します:
日付の取得: datetime=$[yyyy-mm-dd] カスタム変数を使用します。
時刻の取得: hour=$[hh24:mi:ss] カスタム変数を使用します。
次に、変数をスペースで連結して pt=${datetime} ${hour} を形成します。
ノードは、$cyctime 変数または $[yyyymmddhh24miss] 変数で指定された時刻に実行するようにスケジュールされています。ノードは毎日 20:00 に実行するようにスケジュールされていますが、ノードの祖先ノードはスケジュールどおりに実行されません。結果として、ノードは遅延し、翌日の 00:00 に実行されます。この場合、$cyctime 変数または $[yyyymmddhh24miss] 変数の値は 20:00 ですか、それとも 00:00 ですか。
インスタンスのスケジューリング時間は、インスタンスが実行されるようにスケジュールされている時間です。リソースが不足している場合、インスタンスが実際に実行される時間は、インスタンスが実行されるようにスケジュールされている時間と異なる場合があります。インスタンスのスケジューリング時間は、インスタンスが生成された時点で固定され、インスタンスが実行される時間が変更されても変更されません。
スケジューリングパラメータの値は、インスタンスのスケジューリング時間に基づいて決定され、インスタンスが生成されるときに置き換えられます。
ODPS Spark ノードの時間プロパティを構成するにはどうすればよいですか。
ODPS Spark ノードを作成するときは、ノード構成タブでノードの変数を構成する必要があります。
変数を構成した後、ノード構成タブの右側ナビゲーションペインにある [プロパティ] タブをクリックします。[プロパティ] タブで、変数にスケジューリングパラメータを値として割り当てます。システムは、スケジューリングパラメータとノードパラメータを順番に実行します。スケジューリングパラメータの値割り当て形式については、「サポートされているスケジューリングパラメータの形式」をご参照ください。
ノードがスケジューリングパラメータの戻り値を処理できない場合、ノードのスケジューリングパラメータの戻り値を再処理するにはどうすればよいですか。
バッチ同期ノードなど、一部のノードのスケジューリングパラメータを構成した後、戻り値を再処理しない限り、ノードはスケジューリングパラメータの戻り値を処理できません。割り当てノードをこれらのノードの祖先ノードとして構成できます。このようにして、割り当てノードを使用してスケジューリングパラメータを参照し、スケジューリングパラメータの戻り値を再処理できます。次に、コンテキストベースのパラメータを使用して、再処理された値を必要な子孫ノードに渡すことができます。
割り当てノードの詳細については、「割り当てノードの構成」をご参照ください。
入力パラメータと出力パラメータの構成方法の詳細については、「入力パラメータと出力パラメータの構成」をご参照ください。
MaxCompute の日付関数の戻り値とスケジューリングパラメータの戻り値の違いは何ですか。
MaxCompute の日付関数を使用する場合、戻り値はインスタンスが実行されたときのシステム時刻です。インスタンスが異なる時刻に実行された場合、戻り値は異なります。
スケジューリングパラメータを使用する場合、戻り値はスケジューリング時間の計算結果です。インスタンスが異なる時刻に実行された場合でも、戻り値は同じままです。
DataStudio ページでスケジューリングパラメータの構成をテストするにはどうすればよいですか。
スケジューリングパラメータの値は、本番環境にスケジューリングパラメータをデプロイした後にのみ、スケジューリングシステムで自動的に置き換えられます。 DataStudio ページでスケジューリングパラメータの値が有効かどうかを確認するには、ノード構成タブの上部ツールバーにある [開発環境でのスモークテストの実行] アイコンをクリックします。
Data Integration のデータ同期ノードの場合、開発環境でスケジューリングパラメータの値が有効かどうかを確認することはできません。このようなテストを実行するには、SQL ノードを作成し、[開発環境でのスモークテストの実行] アイコンをクリックしてスケジューリングパラメータの構成をテストする必要があります。スケジューリングパラメータがテストに合格した場合は、これらのパラメータの構成をデータ同期ノードで使用できます。
リアルタイム同期ノードで FAILED: ODPS-0130161:[1,84] Parse exception - invalid token '$' エラーメッセージが報告された場合はどうすればよいですか。
原因: スケジューリングパラメータに値が割り当てられていないか、スケジューリングパラメータに割り当てられている値が無効です。
解決策:
スケジューリングパラメータに値が割り当てられているかどうかを確認します。
スケジューリングパラメータに割り当てられている値が有効かどうかを確認します。詳細については、「サポートされているスケジューリングパラメータの形式」をご参照ください。
ノードのスケジューリングパラメータを変更した後、ノードをコミットおよびデプロイする必要があります。ノードがデプロイされた後、オペレーションセンターの [サイクルタスク] ページに移動し、ノードの [全般] タブでスケジューリングパラメータの値が更新されているかどうかを確認します。

params format error, please check your params(key=values) エラーが報告された場合はどうすればよいですか。
解決策:
変数に値が割り当てられているかどうかを確認します。
スケジューリングパラメータにスペースが使用されているかどうかを確認します。
ノード名にピリオド(.) と漢字が同時に含まれているかどうかを確認します。
例: time①=②$[yyyymmdd③hh24:mi:ss]time1=$[yyyymmdd]④time2=$[hh24:mi:ss]。記号 1、2、3、および 4 は、スペースを追加できる位置を表します。
スケジューリングパラメータの等号 (=) の前後にスペースを追加しないでください。この例では、記号 1 と 2 で指定された位置にスペースを追加しないでください。
スケジューリングパラメータの値にスペースを含めないでください。この例では、記号 3 で指定された位置にスペースを追加しないでください。
2 つのスケジューリングパラメータをスペースで区切ります。この場合、記号 4 で指定された位置にスペースを追加します。
実行、パラメータ付き実行、開発環境でのスモークテストの実行モード間で、スケジューリングパラメータの値割り当てロジックの違いは何ですか。
モード | 説明 |
実行 | [実行] アイコンを初めてクリックするときは、コード内の変数に定数を手動で割り当てる必要があります。定数は DataWorks によって記録されます。コードを変更しても、変数は割り当てた定数を引き続き使用します。 |
パラメータ付き実行 | [パラメータ付き実行] モードを使用する場合は、コード内の変数に定数を手動で割り当てる必要があります。コード内の変数を変更する場合は、[パラメータ付き実行] モードを使用して変数に定数を再割り当てする必要があります。 説明 ノードで使用されるリソースグループを変更するには、[パラメータ付き実行] アイコンをクリックします。 |
開発環境でのスモークテストの実行 | データタイムスタンプを入力して、ノードの自動スケジューリングをシミュレートし、指定されたデータタイムスタンプで置き換えられたスケジューリングパラメータの値を取得できます。 |
本番環境でスケジューリングパラメータの値の有効性を確認するにはどうすればよいですか。
DataStudio ページでノードのスケジューリングパラメータを変更し、ノードをコミットおよびデプロイした後、本番環境のオペレーションセンターの [サイクルタスク] ページの [全般] タブで、スケジューリングパラメータの値がビジネス要件を満たしているかどうかを確認できます。値がビジネス要件を満たしていない場合は、デプロイページでノードのデプロイパッケージが想定どおりに生成されているかどうかを確認します。自動トリガーインスタンスのスケジューリングパラメータの値がビジネス要件を満たしているかどうかは、オペレーションセンターの [サイクルインスタンス] ページの [全般] タブで確認できます。
自動トリガーノードのスケジューリングパラメータを変更すると、ノードに対して生成されたインスタンスのスケジューリングパラメータの構成がリアルタイムで更新されます。リアルタイム更新は、インスタンスが実行されているかどうかに関係なく実行されます。

シナリオ:
たとえば、ノード A のインスタンス A1 の time1 スケジューリングパラメータに $bizdate を割り当てます。インスタンス A1 が当日正常に実行された場合、time1 スケジューリングパラメータは、コードで bizdate によって指定されたデータタイムスタンプに設定されます。
当日のある時点で time1 スケジューリングパラメータの値を $bizdate から $cyctime に変更すると、インスタンス A1 は、当日の cyctime によって指定されたスケジューリング時間で実行されます。
インスタンス A1 を再実行すると、time1 の最新の構成が使用されます。この例では、time1=$cyctime が使用されます。
値が変更される前のインスタンスのスケジューリングパラメータの値は、インスタンスに対して生成されたログで確認できます。ログを表示してインスタンスのスケジューリングパラメータの値が有効かどうかを確認する方法の詳細については、「ログを表示して、インスタンスのスケジューリングパラメータの値が有効かどうかを確認するにはどうすればよいですか。」をご参照ください。
ログを表示して、インスタンスのスケジューリングパラメータの値が有効かどうかを確認するにはどうすればよいですか。
コードで SKYNET_PARAVALUE を探します。
夏時間が開始および終了する日にインスタンスはどのように生成されますか。
DataWorks は、即時インスタンス生成と夏時間ベースのパラメータ計算機能をサポートしています。このようにして、夏時間が開始または終了したときにノードを想定どおりに実行できます。たとえば、タイムゾーンは UTC-8 です。
夏時間が開始すると、03:00 の 10 分前は 01:50 であり、その日に 23 個のインスタンスが生成されます。システムは、その日の 02:00 に実行するようにスケジュールされているインスタンスを実行しません。
夏時間が終了すると、03:00 の 10 分前は 02:50 であり、その日に 24 個のインスタンスが生成されます。
日、週、または月でスケジュールされたノードが、夏時間の開始時にスキップされる期間内に実行するようにスケジュールされている場合、インスタンスは生成され、その日の 00:00 に実行されます。
ノードのスケジューリングパラメータを構成して、ノードをコミットおよびデプロイしますが、スケジューリングパラメータの戻り値は変更されません。どうすればよいですか。
スケジューリングパラメータが、同じ名前のワークフローパラメータによって上書きされているかどうかを確認します。詳細については、「ワークフローパラメータの使用」をご参照ください。
同じ名前のワークフローパラメータが存在する場合は、ビジネス要件に基づいてワークフローパラメータを削除できます。ワークフローパラメータを保持する場合は、ノードのスケジューリングパラメータの名前を変更する必要があります。