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

MaxCompute:定期タスク(招待プレビュー)

最終更新日:Mar 07, 2026

MaxCompute の定期タスク機能では、SQL を使用してスケジューリングおよび計算ロジックをカスタマイズできます。これにより、タスクの管理をより効率的かつ柔軟に、またコスト効率よく行えるようになり、スケジューリングサイクルも短縮されます。

説明

本機能は招待プレビュー段階です。招待プレビュー機能の利用方法については、「手順」をご参照ください。

特徴

MaxCompute の定期タスクでは、タスクのスケジューリングポリシーを柔軟にカスタマイズし、対応する SQL 計算ロジックを実行してデータパイプラインを自動構築でき、抽出・変換・書き出し(ETL)プロセスを簡素化できます。さらに、テーブルのデータ変更やストリーム読み取りとタスクを連携させることで、最新のデータ変更を継続的に処理する ETL ワークフローを作成することも可能です。本機能には以下の属性があります:

  • SQL 対応:定期タスクのすべての管理操作は、シンプルな SQL 文で実行できます。

  • フルライフサイクル管理対応:タスクの作成、変更、削除、表示、およびタスク一覧・タスク実行インスタンス一覧の表示が可能です。

  • 第2レベルの定期実行スケジュール: 時間指定スケジューリングをサポートし、最小間隔は 10 秒です。

  • 効率性の向上とコスト削減のため、組み込みの MaxCompute スケジューリングサービスを提供します。

  • インスタンス起動条件を設定する WHEN 式をサポートしており、複雑な条件判断が可能です。

  • Delta Table の変更データキャプチャ(CDC)やオブジェクトテーブルなど、定期的なリフレッシュが必要なプラットフォームオブジェクトとのシームレスな統合を、効率的な組み込みスケジューリングサービスで実現します。

  • デフォルトでバックグラウンドで増分 CDC データを自動生成します。

注意事項

定期タスクを作成または削除する前に、セッションレベルで SET odps.sql.periodic.task.enabled=true; パラメーターを設定する必要があります。このパラメーターを設定しない場合、定期タスクの作成および削除はできません。

定期タスクの作成

構文

CREATE TASK [IF NOT EXISTS] <task_name>
    SCHEDULE = "<num> [minute|minutes] | [second|seconds]"
    [TASKPROPERTIES("schedule_strategy"="3",--スケジュールタスクの再試行回数を指定します。
               "odps.namespace.schema"="true" ....];
    [COMMENT task_comment]
    [WHEN <bool_expr>]
    AS <taskBody>;

パラメーター

設定項目

必須

説明

IF NOT EXISTS

いいえ

タスクを作成する際:

  • このオプションを指定した場合、同名のタスクが既に存在していても、そのスキーマが新規タスクと異なっていても操作は成功します。既存のタスクには影響しません。

  • このオプションを指定せず、同名のタスクが既に存在する場合、エラーが返されます。

task_name

はい

定期タスクの名前です。

SCHEDULE = "<num> [minute|minutes] | [second|seconds]"

はい

実行間隔です。サポートされる単位は分(minute/minutes)および秒(second/seconds)です。値の範囲は 10 秒~3540 秒です。

説明

秒単位の値は 10~59 の範囲である必要があります。60 秒を超える間隔の場合は、単位として分(minute/minutes)を使用してください。

TASKPROPERTIES("schedule_strategy"="3","odps.namespace.schema"="true" ....]

いいえ

スケジュールタスクが SQL 文を実行する際に指定するパラメーターです。ここで設定できます。schedule_strategy は代表的なパラメーターで、スケジュールタスクの再試行回数を指定します。以下に、スケジュールタスク実行用の SQL 文の例を示します:

  • taskproperties('odps.stage.reducer.num'='100'):自動起動されたタスクにおける Reduce Task インスタンス数は 100 です。

  • taskproperties('odps.sql.reducer.memory'='2048'):自動起動されたタスクにおける各 Reduce Task インスタンスのメモリサイズは 2048 MB です。

COMMENT task_comment

いいえ

定期タスクのコメントです。コメントは有効な文字列で、最大 1024 バイトまでとする必要があります。それ以外の場合、エラーが報告されます。

WHEN

いいえ

ブール値式を指定します。後続の SQL 文は、この式が TRUE を返す場合にのみトリガーされます。設定しない場合、デフォルト値は TRUE です。サポートされる条件付きステートメントには制約が適用され、一部の関数のみが使用可能です。

説明
  • ブール値式では、一般的なスカラ関数がサポートされています。ウィンドウ関数、集計関数、ネストされたサブクエリはサポートされていません。

  • スカラ関数では、日付取得に CURRENT_TIMESTAMP、GETDATE、WEEKDAY などの関数が使用可能です。値の変換・計算・置き換えには、TO_DATE、CONCAT、LENGTH、REGEXP_REPLACE、UPPER、SPLIT などが使用可能です。テーブルおよびパーティション情報の取得には、MAX_PT、TABLE_EXISTS、PARTITION_EXISTS、STREAM_HAS_DATA、TABLE_NEED_CDC_BUILD などが使用可能です。サポートされる関数の一覧については、「関数ホワイトリスト」をご参照ください。

AS <taskBody>

はい

実行する SQL タスクです。コードエディタ内で実行される SQL 文はサポートされていません。一般的なデータ操作言語(DML)およびデータ照会言語(DQL)の構文はサポートされていますが、データ定義言語(DDL)はサポートされていません。

5 分ごとに実行され、スケジューリング失敗時に最大 3 回再試行するスケジューリングタスク periodic_task1 を作成できます。SQL タスク INSERT INTO acid2_table_dest SELECT pk, val FROM acid_stream は、条件 stream_has_data('delta_table_stream') が TRUE を返す場合にのみ実行されます。

  1. 増分 Delta Table を作成します。

    CREATE TABLE acid2_table_dest (
      pk BIGINT NOT NULL PRIMARY KEY, 
      val BIGINT
    ) tblproperties ("transactional"="true");
  2. ソース Delta Table を作成し、その後、その Delta Table に関連付けられたストリームを作成します。

    -- ソース Delta Table を作成します。
    CREATE TABLE delta_table_src (
      pk bigint NOT NULL PRIMARY KEY,
      val bigint
    ) tblproperties ("transactional"="true");
    
    -- Delta Table に関連付けられたストリームを作成します。
    CREATE STREAM delta_table_stream 
    ON TABLE delta_table_src version as of 1 
    strmproperties('read_mode'='append') 
    comment 'stream demo';
  3. periodic_task1 という名前の定期タスクを作成します。

    -- タスクの自動増分更新を有効化します。
    SET odps.sql.periodic.task.enabled=true; 
    CREATE TASK IF NOT EXISTS periodic_task1  
      schedule = '5 minutes' 
      TASKPROPERTIES('schedule_strategy'='3')
      comment 'task_comment'
      WHEN stream_has_data('delta_table_stream') 
      AS INSERT INTO acid2_table_dest SELECT pk, val FROM delta_table_stream;
    説明

    条件式 stream_has_data('delta_table_stream') は、MaxCompute で SELECT stream_has_data('delta_table_stream'); コマンドを実行することと等価です。

  4. ソース Delta Table にデータを挿入し、スケジューリングの完了を待ってから、宛先テーブルのデータを確認します。

    -- ソース Delta Table にデータを挿入します。
    INSERT INTO delta_table_src VALUES (1, 1), (2, 2);
    
    -- スケジューリングの完了を待ってから、宛先テーブルのデータを確認します。
    SELECT * FROM acid2_table_dest;

    以下のような結果が返され、データが正常に acid2_table_dest テーブルに書き込まれたことが確認できます。

    -- 2 件のレコードが見つかりました。
    +------------+------------+
    | pk         | val        |
    +------------+------------+
    | 1          | 1          |
    | 2          | 2          |
    +------------+------------+

定期タスクの変更

構文

  • 定期タスクのスケジュール時間(実行間隔)、SQL パラメーター(例:再試行回数)、コメントを変更します。

    ALTER TASK [IF EXISTS] <task_name>
        SET SCHEDULE = "<num> [minute|minutes] | [second|seconds]"
        [TASKPROPERTIES("schedule_strategy"="3",--スケジュールタスクの再試行回数を指定します。
                   "odps.namespace.schema"="true" ....];
        [COMMENT task_comment];
  • 定期タスクを再開または一時停止します。

    説明

    定期タスクは作成後に自動的に開始されます。タスクに問題が発生した場合や一時停止した場合、タスクを再開できます。再開後、タスクのステータスは ACTIVE になります。DESC コマンドを使用してステータスを確認できます。

    ALTER TASK [IF EXISTS] task_name resume | suspend;
  • 再帰スケジュールタスクのトリガー条件を定義する WHEN 式を変更します。この構文はタスク作成後に使用できます。

    ALTER TASK [IF EXISTS] task_name MODIFY WHEN <boolean_expr>;

パラメーター

設定項目

必須

説明

IF EXISTS

いいえ

定期タスクを変更する際:

  • このオプションを指定し、指定されたタスクが存在しない場合、操作はスキップされ、成功メッセージが返されます。指定されたタスクが存在する場合は、変更されます。

  • このオプションを指定しない場合、指定された時間指定スケジュールタスクが存在しないとエラーが報告されます。

boolean_expr

はい

定期タスクのトリガー条件を定義する WHEN 式です。

その他のパラメーターについては、「パラメーター」をご参照ください。

  • 例 1:定期タスクを再開する

    ALTER TASK periodic_task1 resume; 
  • 例 2:定期タスクを一時停止する

    ALTER TASK periodic_task1 suspend; 
  • 例 3:スケジューリング間隔を 6 分に変更する

    ALTER TASK IF EXISTS periodic_task1 SET schedule = '6 minute';
  • 例 4:コメントを追加する

    ALTER TASK IF EXISTS periodic_task1 SET comment 'comment2';
  • 例 5:定期タスクの再試行回数を 5 回に指定する

    ALTER TASK IF EXISTS periodic_task1 SET taskproperties('schedule_strategy'='5');
  • 例 6:WHEN 式によるタスクトリガー条件を変更する

    ALTER TASK IF EXISTS periodic_task1 MODIFY WHEN 1=1;

定期タスクの情報の表示

方法 1:コマンドを使用

構文

  • 定期タスクの情報を表示する

    DESC task <task_name>;
  • 定期タスクの情報および拡張情報を表示する

    DESC extended task <task_name>;

パラメーター

task_name:定期タスクの名前です。

periodic_task1 タスクの情報を表示します。

DESC task periodic_task1;

以下はサンプル出力結果です:

+------------------------------------------------------------------------------------+
| Owner:                    ALIYUN$odps****@aliyun.com                              |
| Project:                  sql_odps2                                          |
| Schema:                                                                            |
| Task:                     periodic_task1                                           |
+------------------------------------------------------------------------------------+
| CreateTime:               2024-08-23 11:05:46                                      |
| LastModifiedTime:         2024-08-23 11:05:46                                      |
+------------------------------------------------------------------------------------+
| ScheduleText:             '5 minute'                                               |
| TaskType:                 SQL                                                      |
| Query:                    insert into acid2_table_dest select pk, val from acid_stream;                                                |
| Condition:                stream_has_data('acid_stream')                           |
| Status:                   ACTIVE                                                   |
| Comment:                                                                           |
+------------------------------------------------------------------------------------+

方法 2:コンソールを使用

RAM ユーザーが定期タスクの情報を表示するには、AliyunMaxComputeReadOnlyAccess システムポリシーを RAM ユーザーに付与する必要があります。詳細については、「RAM 権限」をご参照ください。

  1. MaxCompute コンソール にログインし、左上隅でリージョンを選択します。

  2. 左側のナビゲーションウィンドウで、構成の管理 > プロジェクト管理 を選択します。

  3. プロジェクト管理 ページで、対象のプロジェクトを見つけ、管理 をクリックします(操作 列)。

  4. プロジェクト設定 ページで、定期タスク タブを選択します。

    プロジェクト内の定期タスク一覧を表示できます。

定期タスクの削除

構文

DROP TASK [IF EXISTS] <task_name>; 

パラメーター

設定項目

必須

説明

IF EXISTS

いいえ

定期タスクを削除する際:

  • このオプションを指定し、指定されたタスクが存在しない場合、操作はスキップされ、成功メッセージが返されます。指定されたタスクが存在する場合は、削除されます。

  • このオプションを指定しない場合、指定されたタスクが存在しないと、削除時にエラーが報告されます。

task_name

はい

削除する定期タスクの名前です。

periodic_task1 タスクを削除します。コマンドは以下のとおりです:

DROP TASK periodic_task1;

すべての定期タスクの一覧表示

現在の MaxCompute プロジェクトに存在するすべての定期タスクを表示するには、以下の SQL 文を使用します。

構文

SHOW TASKS; 

作成済みの定期タスクを表示します。

SHOW TASKS; 

以下はサンプル出力結果です:

+--------------------------------------------------------------------------------------------------------------------------------+
| Project:                  openmronlot_daily_arm_src3_xr                                                                        |
| Schema:                                                                                                                        |
+--------------------------------------------------------------------------------------------------------------------------------+
| Tasks:                                                                                                                         |
+--------------------------------------------------------------------------------------------------------------------------------+
| Name                      | Owner                             | CreateTime             | LastModifiedTime       | Status       |
+--------------------------------------------------------------------------------------------------------------------------------+
| periodic_task1            | ALIYUN$odpst****@aliyun.com       | 2024-07-26 16:19:06    | 2024-07-26 16:19:06    | ACTIVE       |
| periodic_task2            | ALIYUN$odpst****@aliyun.com       | 2024-07-26 16:19:28    | 2024-07-26 16:19:28    | ACTIVE       |
| periodic_task3            | ALIYUN$odpst****@aliyun.com       | 2024-07-26 16:20:45    | 2024-07-26 16:20:45    | ACTIVE       |
| periodic_task6            | ALIYUN$odpst****@aliyun.com       | 2024-08-15 11:09:55    | 2024-08-15 11:09:55    | ACTIVE       |
| periodic_task_alter1      | ALIYUN$odpst****@aliyun.com       | 2024-07-26 16:17:40    | 2024-07-26 16:17:40    | ACTIVE       |
+--------------------------------------------------------------------------------------------------------------------------------+

定期タスクの自動スケジュールインスタンス履歴一覧の表示

定期タスクの自動スケジュールインスタンスについて、InstanceId、CreateTime、EndTime、Status を表示できます。

説明

自動スケジュールインスタンスの詳細ログを表示するには、WAIT <InstanceId>; コマンドを実行します。たとえば、WAIT 2024082309000177gq71ut9****; コマンドを実行すると、MaxCompute Logview URL が取得できます。Logview URL をブラウザにコピーして、詳細ログを表示できます。

構文

SHOW HISTORY FOR TASK <task_name> [[LIMIT <limit_value>] OFFSET <offset_value>]; 

パラメーター

パラメーター

必須

説明

task_name

はい

定期タスクの名前です。

limit_value

いいえ

表示するレコード数です。たとえば、LIMIT 50 とすると、50 件のレコードのみが表示されます。

limit_value の値は 0 より大きい必要があります。それ以外の場合、エラーが報告されます。このパラメーターを指定しない場合、可能な限り多くのレコードが表示されます。

offset_value

いいえ

開始位置です。指定した数のレコードをスキップします。値が 0 の場合、最新のタスクレコードが開始位置となります。

  • 例 1:periodic_task1 タスクの自動スケジュールインスタンス履歴一覧を表示します。コマンドは以下のとおりです:

    SHOW HISTORY FOR TASK periodic_task1;

    以下のような結果が返されます:

    +---------------------------------------------------------------------------------------------------+
    | Project:                  muze_demo                                                               |
    | Schema:                                                                                           |
    | Task:                     periodic_task1                                                          |
    +---------------------------------------------------------------------------------------------------+
    | History:                                                                                          |
    +---------------------------------------------------------------------------------------------------+
    | InstanceId                       | CreateTime             | EndTime                | Status       |
    +---------------------------------------------------------------------------------------------------+
    | 202506130710002599mhgq4****      | 2025-06-13 15:10:00    | 2025-06-13 15:10:00    | Terminated   |
    | 2025061307050039g47jzzs1****     | 2025-06-13 15:05:00    | 2025-06-13 15:05:00    | Terminated   |
    | 2025061307000030o9vh1l1****      | 2025-06-13 15:00:00    | 2025-06-13 15:00:00    | Terminated   |
    | 2025061306550032l84ahcr4****     | 2025-06-13 14:55:00    | 2025-06-13 14:55:00    | Terminated   |
    | 2025061306500043cthoc62****      | 2025-06-13 14:50:00    | 2025-06-13 14:50:00    | Terminated   |
    | 20250613064500324fkhaz1****      | 2025-06-13 14:45:00    | 2025-06-13 14:45:00    | Terminated   |
    | 2025061306400048194cx8g****      | 2025-06-13 14:40:00    | 2025-06-13 14:40:00    | Terminated   |
    | 20250613063500351g99kf2****      | 2025-06-13 14:35:00    | 2025-06-13 14:35:00    | Terminated   |
    | 2025061306300084qkbtk9****       | 2025-06-13 14:30:00    | 2025-06-13 14:30:00    | Terminated   |
    | 20250613062501711nswoio****      | 2025-06-13 14:25:01    | 2025-06-13 14:25:01    | Terminated   |
    | 2025061306200129vln5ncr4****     | 2025-06-13 14:20:01    | 2025-06-13 14:20:01    | Terminated   |
    | 2025061306150119yhlkmbo****      | 2025-06-13 14:15:00    | 2025-06-13 14:15:01    | Terminated   |
    | 2025061306100139uemvy7r6****     | 2025-06-13 14:10:00    | 2025-06-13 14:10:01    | Terminated   |
    +---------------------------------------------------------------------------------------------------+
  • 例 2:periodic_task1 タスクの自動スケジュールインスタンス履歴一覧を表示します。開始位置を最新のレコードに設定し、6 件のレコードを表示します。

    SHOW HISTORY FOR TASK periodic_task1 LIMIT 6 OFFSET 0;

    以下のような結果が返されます:

    +---------------------------------------------------------------------------------------------------+
    | Project:                  muze_demo                                                              |
    | Schema:                                                                                           |
    | Task:                     periodic_task1                                                          |
    +---------------------------------------------------------------------------------------------------+
    | History:                                                                                          |
    +---------------------------------------------------------------------------------------------------+
    | InstanceId                       | CreateTime             | EndTime                | Status       |
    +---------------------------------------------------------------------------------------------------+
    | 202506130710002599mhgq4****      | 2025-06-13 15:10:00    | 2025-06-13 15:10:00    | Terminated   |
    | 2025061307050039g47jzzs1****     | 2025-06-13 15:05:00    | 2025-06-13 15:05:00    | Terminated   |
    | 2025061307000030o9vh1l1****      | 2025-06-13 15:00:00    | 2025-06-13 15:00:00    | Terminated   |
    | 2025061306550032l84ahcr4****     | 2025-06-13 14:55:00    | 2025-06-13 14:55:00    | Terminated   |
    | 2025061306500043ethoc62****      | 2025-06-13 14:50:00    | 2025-06-13 14:50:00    | Terminated   |
    | 20250613064500324fkhaz1****      | 2025-06-13 14:45:00    | 2025-06-13 14:45:00    | Terminated   |
    +---------------------------------------------------------------------------------------------------+
  • 例 3:periodic_task1 タスクの自動スケジュールインスタンス履歴一覧を表示します。5 件のレコードをスキップします(つまり、開始位置は 6 件目のレコードです)。

    SHOW HISTORY FOR TASK periodic_task1 OFFSET 5;

    以下のような結果が返されます:

    +---------------------------------------------------------------------------------------------------+
    | Project:                  muze_demo                                                              |
    | Schema:                                                                                           |
    | Task:                     periodic_task1                                                          |
    +---------------------------------------------------------------------------------------------------+
    | History:                                                                                          |
    +---------------------------------------------------------------------------------------------------+
    | InstanceId                       | CreateTime             | EndTime                | Status       |
    +---------------------------------------------------------------------------------------------------+
    | 20250613064500324fkhaz1****      | 2025-06-13 14:45:00    | 2025-06-13 14:45:00    | Terminated   |
    | 2025061306400048194cx8g****      | 2025-06-13 14:40:00    | 2025-06-13 14:40:00    | Terminated   |
    | 20250613063500351g99kf2****      | 2025-06-13 14:35:00    | 2025-06-13 14:35:00    | Terminated   |
    | 2025061306300084qkbtk9****       | 2025-06-13 14:30:00    | 2025-06-13 14:30:00    | Terminated   |
    | 20250613062501711nswoio****      | 2025-06-13 14:25:01    | 2025-06-13 14:25:01    | Terminated   |
    | 2025061306200129vln5ncr4****     | 2025-06-13 14:20:01    | 2025-06-13 14:20:01    | Terminated   |
    | 2025061306150119yhlkmbo****      | 2025-06-13 14:15:00    | 2025-06-13 14:15:01    | Terminated   |
    | 2025061306100139uemvy7r6****     | 2025-06-13 14:10:00    | 2025-06-13 14:10:01    | Terminated   |
    +---------------------------------------------------------------------------------------------------+

関数ホワイトリスト

定期タスクを作成する際、ブール値式を設定できます。サポートされる条件付きステートメントには制約があり、以下の関数のみが使用可能です。各関数の詳細については、「組み込み関数(アルファベット順)」をご参照ください。

  • DATEADD

  • DATEDIFF

  • DATEPART

  • DATETRUNC

  • DATE_FORMAT

  • FROM_UNIXTIME

  • GETDATE

  • ISDATE

  • 最終日

  • LAST_DAY

  • UNIX_TIMESTAMP

  • 平日

  • WEEKDAY

  • WEEKOFYEAR

  • TO_DATE

  • TO_CHAR

  • YEAR

  • QUARTER

  • MONTH

  • DAY

  • DAYOFMONTH

  • HOUR

  • MINUTE

  • SECOND

  • CURRENT_TIMESTAMP

  • FROM_UTC_TIMESTAMP

  • ADD_MONTHS

  • NEXT_DAY

  • MONTHS_BETWEEN

  • TO_MILLIS

  • ABS

  • ROUND

  • CONCAT

  • CONCAT_WS

  • GET_JSON_OBJECT

  • INSTR

  • LENGTH

  • LENGTHB

  • REGEXP_EXTRACT

  • REGEXP_REPLACE

  • REGEXP_INSTR

  • REGEXP_SUBSTR

  • REGEXP_COUNT

  • REVERSE

  • SUBSTR

  • TOLOWER

  • TOUPPER

  • TRIM

  • LTRIM

  • RTRIM

  • REPLACE

  • SIZE

  • FIELD

  • COALESCE

  • IF

  • SPLIT

  • SPLIT_PART

  • FROM_JSON

  • MAX_PT

  • TABLE_EXISTS

  • PARTITION_EXISTS

  • GET_LATEST_VERSION

  • GET_LATEST_TIMESTAMP