Important
このシステム テーブルは パブリック プレビュー にあります。
このページにはアラートシステムテーブルに関する情報が含まれており、各テーブルのスキーマの概要も含まれています。 これらのテーブルを使って、ワークスペース のアラート や評価履歴をSQLで直接照会し、アラート定義の監査、評価傾向の分析、大規模なアラートワークロードの監視が可能です。
system.alertスキーマには2つのテーブルが含まれています:
-
system.alert.alerts: すべてのアラートの設定、定義、スケジュール、評価閾値、加入者、ライフサイクルタイムスタンプなどが含まれます。 -
system.alert.alert_evaluation_history:アラート評価ごとに1行で、評価された状態、結果値、通知の配信状況、エラーの詳細を記録します。
Requirements
デフォルトでは、アカウント管理者とメタストア管理者の両方の役割を持つユーザーのみがアラートシステムテーブルにアクセスできます。 テーブルのデータをユーザーやグループと共有するために、Databricksは各ユーザーまたはグループごとに動的ビューを作成することを推奨しています。 「動的ビューを作成する」を参照してください。
アラート構成テーブルスキーマ
system.alert.alerts表はゆっくりと変化する次元表です。 各行はある時点でのアラートの設定を捉えるため、設定変更時に単一のアラートは複数の行を持ちます。
テーブル パス: このシステム テーブルは、 system.alert.alertsにあります。
system.alert.alerts テーブルでは、次のスキーマを使用します。
| 列名 | データの種類 | 説明 | Example |
|---|---|---|---|
account_id |
文字列 | アカウントの ID。 | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
文字列 | アラートが定義されているワークスペースのID。 | 1234567890123456 |
alert_id |
文字列 | アラートの ID。 | 2762099691916865 |
display_name |
文字列 | アラートの表示名。 | Test Alert |
owned_by |
文字列 | アラートの所有者のユーザー名です。 ユーザーが削除された場合は Unavailable に設定します。 |
example@databricks.com |
compute |
構造体 | アラートに付随する計算リソースを表す構造体です。
type値はWAREHOUSEかSERVERLESS_COMPUTEのいずれかです。 |
{type: WAREHOUSE,cluster_id: NULL,warehouse_id: 802f6d5283291c0d} |
run_as |
文字列 | アラートを実行するために認証情報を使用するユーザーまたはサービスプリンシパルのIDです。 | 2967555311742259 |
schedule |
構造体 | アラートのスケジュールを表す構造体で、一時停止の状態、クロンのスケジュール、タイムゾーンが含まれます。 | {pause_status: UNPAUSED,quartz_cron_schedule: 0 0 10 * * ?,timezone_id: UTC} |
evaluation_source |
構造体 | クエリ結果のソースカラムを表す構造体で、アラートを評価するために使われ、そこに適用される集約も含まれます。 | {aggregation: SUM,display: x,name: x} |
evaluation_comparison_operator |
文字列 | 演算子は評価時にソース値を閾値と比較していました。 例: GREATER_THAN、LESS_THAN、EQUAL。 |
LESS_THAN |
evaluation_threshold |
構造体 | ソース値が比較される閾値を表す構造体です。 閾値は静的値か別の列のいずれかです。 | {value: { double_value: 1.25}} |
evaluation_empty_result_state |
文字列 | クエリが空の結果を返したときにアラートが報告する状態。 指定できる値は、OK、TRIGGERED、ERROR です。 |
OK |
notify_on_ok |
boolean | アラートが州に戻ったときに加入者に通知するかどうか OK 。 |
true |
retrigger_seconds |
int | アラートが作動してから再び作動するまでの待機秒数です。
0した場合、アラートは再び作動しません。 |
0 |
subscriptions |
アレイ | アラート通知を受け取る加入者の配列です。 各加入者はユーザーのメールアドレスまたは通知宛先IDで識別されます。 | [{ user_email: example@databricks.com, destination_id: null}] |
change_time |
timestamp | 構成が最後に変更された時刻。 タイムゾーン情報は、値の最後に記録され、 +00:00 はUTCを表します。 |
2023-01-01T01:01:01.123+00:00 |
create_time |
timestamp | アラートが作成された時間。 タイムゾーン情報は、値の最後に記録され、 +00:00 はUTCを表します。 |
2023-01-01T01:01:01.123+00:00 |
delete_time |
timestamp | アラートが永久に削除された時間。 ゴミ箱に移されたアラートは記録されません。 タイムゾーン情報は、値の最後に記録され、 +00:00 はUTCを表します。 |
2023-01-01T01:01:01.123+00:00 |
アラート評価履歴テーブルスキーマ
system.alert.alert_evaluation_historyテーブルは各アラート評価に対して1行を記録し、評価された状態と関連する統計を記録します。
テーブル パス: このシステム テーブルは、 system.alert.alert_evaluation_historyにあります。
system.alert.alert_evaluation_history テーブルでは、次のスキーマを使用します。
| 列名 | データの種類 | 説明 | Example |
|---|---|---|---|
account_id |
文字列 | アカウントの ID。 | 23e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
文字列 | アラートが定義されているワークスペースのID。 | 1234567890123456 |
alert_id |
文字列 | 評価されたアラートのIDです。
system.alert.alerts
alert_idに加わる。 |
2762099691916865 |
job_id |
文字列 | アラートを実行した仕事のIDです。
system.lakeflow.jobs
job_idに加わる。
NULL アラートがジョブの一部ではなく、独自のスケジュールで実行される場合です。
system.lakeflow.jobsに問い合わせるときはLEFT JOINを使いましょう。 |
906851285941474 |
task_key |
文字列 | 仕事内のタスクの参照キー。
system.lakeflow.job_tasks
task_keyに加わる。
NULL アラートがジョブの一部ではなく、独自のスケジュールで実行される場合です。
system.lakeflow.job_tasksに問い合わせるときはLEFT JOINを使いましょう。 |
evaluate_alert |
alert_run_id |
文字列 | アラート評価のID。 | 4104302562320643 |
evaluated_state |
文字列 | アラートの評価状態。 指定できる値は、OK、TRIGGERED、ERROR です。 |
TRIGGERED |
evaluated_source_result |
構造体 | 評価によって生成されるソース値を表す構造体です。 | {double_value: 1.25} |
evaluated_threshold_result |
構造体 | 評価の閾値を表す構造体、またはアラート構成で設定された静的値です。 | {double_value: 1.25} |
error_code |
文字列 | エラーコードは、エラーで評価が失敗した場合です。 | INTERNAL_ERROR |
error_message |
文字列 | 評価がエラーで失敗した場合のユーザーに表示されるエラーメッセージ。 | Query execution failed |
notified_subscriptions |
アレイ | 通知が成功した加入者の配列。 各加入者はユーザーのメールアドレスまたは通知宛先IDで識別されます。 | [{ user_email: example@databricks.com, destination_id: null}] |
failed_subscriptions |
アレイ | 通知が送信されなかった加入者の配列です。 各加入者はユーザーのメールアドレスまたは通知宛先IDで識別されます。 | [{ user_email: example@databricks.com, destination_id: null}] |
start_time |
timestamp | 評価が始まった時間。 タイムゾーン情報は、値の最後に記録され、 +00:00 はUTCを表します。 |
2023-01-01T01:01:01.123+00:00 |
end_time |
timestamp | 評価が終わった時間。 タイムゾーン情報は、値の最後に記録され、 +00:00 はUTCを表します。 |
2023-01-01T01:01:01.123+00:00 |
サンプル クエリ
以下のサンプルクエリは、アラートの設定および評価履歴を分析する一般的な方法を示しています。 各クエリはアラートとワークスペースIDに 名前付きパラメータマーカー を使用しているため、クエリを実行する際に値の入力が求められます。
アラートの最新評価を確認してください
このクエリは、特定のアラートの最新の構成と最新の評価結果を返します。
SELECT
c.alert_id,
c.display_name,
c.compute,
c.schedule.quartz_cron_schedule AS schedule,
c.evaluation_comparison_operator AS operator,
c.evaluation_threshold.value.double_value AS threshold,
c.change_time AS config_last_updated,
e.evaluated_state,
e.start_time AS evaluation_time,
e.end_time,
TIMESTAMPDIFF(SECOND, e.start_time, e.end_time) AS eval_duration_seconds
FROM (
SELECT *
FROM system.alert.alerts
WHERE alert_id = :your_alert_id
AND delete_time IS NULL
ORDER BY change_time DESC
LIMIT 1
) c
LEFT JOIN (
SELECT *
FROM system.alert.alert_evaluation_history
WHERE alert_id = :your_alert_id
ORDER BY start_time DESC
LIMIT 1
) e ON TRUE;
過去7日間で最も多く発生したアラートを見つけてください
このクエリは、過去7日間にワークスペースで各アラートが何回トリガーされたかをカウントします。
SELECT
alert_id,
COUNT(*) AS trigger_count_7d
FROM system.alert.alert_evaluation_history
WHERE workspace_id = :your_workspace_id
AND start_time >= CURRENT_DATE() - INTERVAL 7 DAY
AND evaluated_state = 'TRIGGERED'
GROUP BY alert_id
ORDER BY trigger_count_7d DESC;
アラートの状態が時間とともにどのように変化したかを追跡する
このクエリは、過去30日間に特定のアラートに対して評価された各状態の日々のカウントをまとめます。 アラートの信頼性を監視するダッシュボードを作るために使う。
SELECT
DATE_TRUNC('day', start_time) AS eval_day,
COUNT_IF(evaluated_state = 'OK') AS ok_count,
COUNT_IF(evaluated_state = 'TRIGGERED') AS triggered_count,
COUNT_IF(evaluated_state = 'ERROR') AS error_count
FROM system.alert.alert_evaluation_history
WHERE alert_id = :your_alert_id
AND start_time >= CURRENT_DATE() - INTERVAL 30 DAY
GROUP BY 1
ORDER BY eval_day ASC;
ワークスペース内のアクティブなアラートを一覧表示する
このクエリは、ワークスペースで削除されておらず一時停止されていない各アラートの最新の構成を返します。
WITH latest AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY alert_id ORDER BY change_time DESC) AS rn
FROM system.alert.alerts
WHERE workspace_id = :your_workspace_id
AND delete_time IS NULL
)
SELECT
alert_id,
display_name,
compute,
schedule.quartz_cron_schedule AS cron_schedule,
schedule.pause_status
FROM latest
WHERE rn = 1
AND schedule.pause_status != 'PAUSED';