アラートシステム表参照

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値はWAREHOUSESERVERLESS_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_THANLESS_THANEQUAL LESS_THAN
evaluation_threshold 構造体 ソース値が比較される閾値を表す構造体です。 閾値は静的値か別の列のいずれかです。 {
value: {
double_value: 1.25
}
}
evaluation_empty_result_state 文字列 クエリが空の結果を返したときにアラートが報告する状態。 指定できる値は、OKTRIGGEREDERROR です。 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 文字列 アラートの評価状態。 指定できる値は、OKTRIGGEREDERROR です。 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';