タスク
説明
テーブル関数。タスクの一時テーブルを生成し、現在のDorisクラスター内のジョブによって生成されたタスクの情報を表示することができます。
構文
TASKS(
"type"="<type>"
)
パラメータ
| パラメータ | 説明 |
|---|---|
<type> | タスクのタイプ: insert: insert タイプタスク。mv: マテリアライズドビュータイプタスク。 |
戻り値
このテーブル関数は0行以上を返します。関数自体は NULL を返しません。対応するタスクメタデータが利用できない場合、個々のフィールドは空、NULL、または \N になることがあります。
-
tasks("type"="insert")insert タイプのタスクの戻り値フィールド名 説明 TaskId タスクID JobId ジョブID JobName ジョブ名 Label ラベル Status タスクステータス ErrorMsg タスク失敗情報 CreateTime タスク作成時刻 FinishTime タスク完了時刻 TrackingUrl 追跡URL LoadStatistic ロード統計 User ユーザー -
tasks("type"="mv")MV タイプのタスクの戻り値フィールド名 説明 TaskId リフレッシュタスクの一意のID。各マテリアライズドビューのリフレッシュは新しいタスクレコードを作成します。 JobId このタスクを生成したジョブのID。 jobs("type"="mv").Idに対応します。JobName このタスクを生成したジョブの名前。 mv_infos("database"="...").JobNameおよびjobs("type"="mv").Nameに対応します。MvId このタスクによってリフレッシュされるマテリアライズドビューのID。 MvName このタスクによってリフレッシュされるマテリアライズドビューの名前。 MvDatabaseId マテリアライズドビューを含むデータベースのID。 MvDatabaseName マテリアライズドビューを含むデータベースの名前。 Status タスクステータス。可能な値: PENDINGはタスクが実行待ちであることを意味します;RUNNINGはタスクが実行中であることを意味します;SUCCESSはタスクが正常に完了したことを意味します;FAILEDはタスクが失敗したことを意味します;CANCELEDはタスクがキャンセルされたことを意味します。ErrorMsg StatusがFAILEDまたはCANCELEDの場合のエラーメッセージ。タスクが成功した場合は空です。CreateTime タスクレコードが作成された時刻。 StartTime タスクの実行が開始された時刻。タスクが開始されていない場合は \Nになることがあります。FinishTime タスクが完了した時刻。タスクがまだ待機中または実行中の場合は \Nになることがあります。DurationMs FinishTime - StartTimeとして計算される実行時間(ミリ秒)。タスクが完了していない場合は\Nになることがあります。TaskContext タスクがどのようにトリガーされ、ユーザーが何を要求したかを記述するJSON文字列。一般的なフィールドには triggerMode、partitions、isCompleteがあります。triggerModeの値はMANUAL、COMMIT、SYSTEMです。RefreshMode このタスクによって決定された実際のリフレッシュ範囲。可能な値: COMPLETEはすべてのマテリアライズドビューパーティションがリフレッシュされたことを意味します;PARTIALは一部のパーティションのみがリフレッシュされたことを意味します;NOT_REFRESHはリフレッシュが必要なパーティションがなかったことを意味します。NeedRefreshPartitions このタスクでリフレッシュが必要だったマテリアライズドビューパーティションのJSON配列。空の配列はリフレッシュが必要なパーティションがなかったことを意味します。 CompletedPartitions 正常にリフレッシュされたパーティションのJSON配列。 NeedRefreshPartitionsと比較して、必要なすべてのパーティションが完了したかどうかを確認します。Progress percentage (completed/total)形式のリフレッシュ進捗、例えば100.00% (1/1)。リフレッシュするパーティションがない場合は\Nになることがあります。LastQueryId リフレッシュタスクによって実行されたSQL文のクエリID。タスクの失敗をトラブルシューティングする際に、このIDを使用してFEまたはBEログを検索します。リフレッシュSQLが実行されなかった場合は空になることがあります。このフィールドはDoris 3.0.0以降でサポートされています。
MV タスクのenum フィールド
マテリアライズドビューのリフレッシュタスクをチェックする際に一般的に使用される enum フィールドは以下の通りです:
Status: タスクのライフサイクル状態。PENDING: タスクは作成されましたが、実行を開始していません。スケジューリングまたはリソースを待機しています。RUNNING: タスクは現在実行中です。SUCCESS: タスクは正常に完了しました。FAILED: タスクが失敗しました。まずErrorMsgを確認し、空でない場合はLastQueryIdを使用してログを検索してください。CANCELED: タスクは完了前にキャンセルされました。
TaskContext.triggerMode: このタスクが作成された理由。MANUAL:REFRESH MATERIALIZED VIEWなどの手動リフレッシュコマンドによって作成されました。COMMIT: 関連するベーステーブルのデータ変更がリフレッシュをトリガーしたために作成されました。SYSTEM: 内部システムアクションによって作成されました。例えば、即座にビルドされるマテリアライズドビューの初期ビルドなど。
TaskContext.isComplete: リフレッシュリクエストが完全なリフレッシュを要求するかどうか。true: リクエストはDorisにすべてのマテリアライズドビューパーティションをリフレッシュするよう要求します。false: リクエストは完全なリフレッシュを強制しません。Dorisはパーティションの新しさに基づいて実際のリフレッシュ範囲を決定できます。
RefreshMode: パーティションをチェックした後にタスクによって選択された実際のリフレッシュ範囲。COMPLETE: MVに属するすべてのマテリアライズドビューパーティションがリフレッシュ対象として選択されました。PARTIAL: 一部のマテリアライズドビューパーティションのみがリフレッシュ対象として選択されました。NOT_REFRESH: リフレッシュが必要なパーティションがありませんでした。この場合、NeedRefreshPartitionsは通常空で、Progressは\Nになることがあります。
Version
LastQueryId はDoris 3.0.0以降でサポートされています。Doris 2.1.xでは利用できません。
例
マテリアライズドビューの最新のリフレッシュタスクを表示します。
select *
from tasks("type"="mv")
where MvDatabaseName = "test" and MvName = "mv1"
order by CreateTime desc
limit 1\G
*************************** 1. row ***************************
TaskId: 437156301250803
JobId: 19508
JobName: inner_mtmv_19494
MvId: 19494
MvName: mv1
MvDatabaseId: 16016
MvDatabaseName: test
Status: SUCCESS
ErrorMsg:
CreateTime: 2025-01-07 22:13:48
StartTime: 2025-01-07 22:13:48
FinishTime: 2025-01-07 22:17:45
DurationMs: 236985
TaskContext: {"triggerMode":"MANUAL","partitions":[],"isComplete":false}
RefreshMode: COMPLETE
NeedRefreshPartitions: ["p_20210101_MAXVALUE","p_20200101_20210101"]
CompletedPartitions: ["p_20210101_MAXVALUE","p_20200101_20210101"]
Progress: 100.00% (2/2)
LastQueryId: 7965b4ddce8a4480-8884e9701679c1c4
この結果では:
TaskIdはこのリフレッシュ実行を識別します。リフレッシュごとに異なります。JobIdとJobNameは MV リフレッシュジョブを識別します。このジョブはselect * from jobs("type"="mv") where Name = "inner_mtmv_19494";でクエリできます。MvId、MvName、MvDatabaseId、およびMvDatabaseNameはタスクによってリフレッシュされるマテリアライズドビューを識別します。StatusはSUCCESSなので、タスクは正常に完了しました。FAILEDの場合は、まずErrorMsgを確認してください。CreateTime、StartTime、FinishTime、およびDurationMsは、タスクがいつ作成され、いつ開始され、いつ完了したか、およびどのくらい実行されたかを示します。TaskContextはこのタスクが手動でトリガーされたことを示します。partitions: []は、ユーザーがリフレッシュコマンドでパーティションリストを指定しなかったことを意味します。RefreshModeはCOMPLETEなので、このタスクはマテリアライズドビューがリフレッシュする必要があるすべてのパーティションをリフレッシュしました。NeedRefreshPartitionsはリフレッシュが必要な2つのパーティションをリストし、CompletedPartitionsは同じ2つのパーティションをリストするので、必要なすべてのパーティションが完了しました。Progressは100.00% (2/2)で、これも必要な2つのパーティションのうち2つが完了したことを意味します。LastQueryIdはリフレッシュ SQL のクエリ ID です。タスクが失敗したり動作が遅い場合に Doris ログを検索するために使用します。
Note
保存および表示されるタスクレコードの数は、FE 設定項目 max_persistence_task_count によって制御されます。デフォルト値は 100 です。タスクレコードの数がこの制限を超えると、古いタスクレコードは破棄されます。値が 1 未満の場合、タスクレコードは永続化されません。この設定を変更した後は FE を再起動してください。
すべての insert タスクのタスクを表示
select * from tasks("type"="insert");
+----------------+----------------+----------------+-------------------------------+---------+----------+---------------------+---------------------+---------------------+-------------+---------------+------+
| TaskId | JobId | JobName | Label | Status | ErrorMsg | CreateTime | StartTime | FinishTime | TrackingUrl | LoadStatistic | User |
+----------------+----------------+----------------+-------------------------------+---------+----------+---------------------+---------------------+---------------------+-------------+---------------+------+
| 79133848479750 | 78533940810334 | insert_tab_job | 78533940810334_79133848479750 | SUCCESS | | 2025-01-17 14:42:54 | 2025-01-17 14:42:54 | 2025-01-17 14:42:54 | | | root |
+----------------+----------------+----------------+-------------------------------+---------+----------+---------------------+---------------------+---------------------+-------------+---------------+------+