Databricks

Databricks SQL Alertsで実現する監視・ダッシュボード運用

2026-03-26
更新: 2026-03-27
NicheeLab編集部

「売上が前日比20%以上下がったら即座に知りたい」「ETLの取込件数がゼロだったらアラートを出したい」 ——こうしたビジネスメトリクスの異常検知は、Databricks SQL Alertsで実現できます。 SQLクエリの実行結果に条件を設定し、条件を満たしたときにEmail・Slack・Webhook等に自動通知する仕組みです。 この記事では、Alertの作成手順、クエリ設計、通知先の構成、そしてJobs Notificationとの使い分けを整理します。

SQL Alertの概要

SQL Alertは以下の3つの要素で構成されます。

  1. クエリ: 評価対象となるSQLクエリ(数値カラムを返す)
  2. 条件: クエリ結果に対する閾値判定(例: value > 100, value == 0)
  3. 通知先: 条件が満たされたときの通知送信先(Email, Slack, Webhook等)

Alertはスケジュールに基づいて定期的にクエリを実行し、条件を評価します。 条件を満たした場合に通知を送信し、満たさなくなったら通知を停止します。

Alert作成手順

ステップ1: 監視用クエリの作成

Databricks SQL Editorで、監視したいメトリクスを返すクエリを作成します。 Alertの条件評価では、クエリ結果の最初の行・最初のカラムの値が使われます。 したがって、クエリは数値1つを返すように設計します。

-- 例1: 直近1時間のエラー件数を監視
SELECT COUNT(*) AS error_count
FROM catalog.schema.application_logs
WHERE log_level = 'ERROR'
  AND event_time > CURRENT_TIMESTAMP() - INTERVAL 1 HOUR;

-- 例2: 日次ETLの取込件数がゼロかを監視
SELECT COUNT(*) AS ingested_rows
FROM catalog.schema.daily_ingestion_log
WHERE ingestion_date = CURRENT_DATE();

-- 例3: 売上の前日比を監視
SELECT
  (today.total_sales - yesterday.total_sales) / yesterday.total_sales * 100
    AS daily_change_pct
FROM (
  SELECT SUM(amount) AS total_sales
  FROM catalog.schema.sales
  WHERE order_date = CURRENT_DATE()
) today
CROSS JOIN (
  SELECT SUM(amount) AS total_sales
  FROM catalog.schema.sales
  WHERE order_date = CURRENT_DATE() - INTERVAL 1 DAY
) yesterday;

ステップ2: Alertの条件設定

Databricks SQL UIの「Alerts」セクションから新規Alertを作成し、以下を設定します。

設定項目説明設定例
Query評価対象のクエリを選択daily_error_count
Trigger when条件の種類(above / below / equals)above(〜を超えたとき)
Threshold閾値100
Column評価するカラムerror_count
Refresh評価間隔Every 15 minutes
Notification frequency通知の送信頻度Just once(初回のみ)/ Every time(毎回)

Notification frequencyが重要です。「Just once」に設定すると、条件が最初に満たされたときのみ 通知が送信され、条件が継続している間は再通知されません。条件が一度解除されてから再度満たされると再通知されます。 「Every time」に設定すると、条件が満たされるたびに毎回通知が送信されます。

ステップ3: 通知先の設定

Alertがトリガーされたときの通知送信先を設定します。

通知先設定方法適用シナリオ
Emailワークスペースユーザーのメールアドレスを指定少人数チームへの基本的な通知
SlackAlert Destination でSlack Webhookを登録チーム共有チャンネルへのリアルタイム通知
Webhook(汎用)Alert Destination でHTTPSエンドポイントを登録カスタム自動化(Lambda / Cloud Functions等)
PagerDutyAlert Destination でPagerDuty Integration Keyを登録オンコール対応が必要なクリティカルアラート

Alert Destinationの設定

EmailはDatabricksユーザーに直接送信できますが、Slack・Webhook・PagerDutyは 事前に「Alert Destination」を管理者が設定する必要があります。

Slack連携の設定手順

  1. Slack側でIncoming Webhook URLを発行する
  2. Databricks SQL → SQL Admin Console → Alert Destinationsを開く
  3. 「New Alert Destination」→ Slackを選択
  4. Webhook URLを入力し、通知先の名前を設定
  5. Alertの通知先に作成したDestinationを選択

Webhook連携のペイロード

Webhookに送信されるJSONペイロードには以下の情報が含まれます。

{
  "alert_id": "abc-123",
  "alert_name": "daily_error_count_high",
  "alert_state": "triggered",
  "alert_url": "https://workspace.databricks.com/sql/alerts/abc-123",
  "query_name": "daily_error_count",
  "query_url": "https://workspace.databricks.com/sql/queries/xyz-456",
  "column": "error_count",
  "value": 152,
  "threshold": 100,
  "condition": "above"
}

実務で使えるAlert設計パターン

パターン1: データ鮮度の監視

-- テーブルの最終更新からの経過時間(時間単位)
SELECT
  TIMESTAMPDIFF(HOUR, MAX(updated_at), CURRENT_TIMESTAMP()) AS hours_since_update
FROM catalog.schema.fact_orders;
-- Alertの条件: hours_since_update > 4(4時間以上未更新で通知)

パターン2: データ品質の監視

-- NULL率が閾値を超えたら通知
SELECT
  COUNT(CASE WHEN customer_id IS NULL THEN 1 END) * 100.0 / COUNT(*)
    AS null_rate_pct
FROM catalog.schema.transactions
WHERE transaction_date = CURRENT_DATE();
-- Alertの条件: null_rate_pct > 5(NULL率5%超で通知)

パターン3: コスト異常の監視

-- 日次DBU消費量が直近7日平均の1.5倍を超えたら通知
WITH daily AS (
  SELECT usage_date, SUM(usage_quantity) AS daily_dbu
  FROM system.billing.usage
  WHERE usage_date >= CURRENT_DATE() - INTERVAL 8 DAY
  GROUP BY usage_date
)
SELECT
  MAX(CASE WHEN usage_date = CURRENT_DATE() THEN daily_dbu END)
    / AVG(CASE WHEN usage_date < CURRENT_DATE() THEN daily_dbu END) AS ratio
FROM daily;
-- Alertの条件: ratio > 1.5

Alert vs Job Notification 比較表

観点SQL AlertJob Notification(email_notifications)
トリガー条件クエリ結果が閾値条件を満たしたときジョブの実行状態が変わったとき(成功/失敗/開始)
主な用途ビジネスメトリクスの異常検知パイプラインの運用監視
評価タイミングスケジュール実行(1分〜数時間間隔)ジョブ実行ごと(リアルタイム)
カスタムロジックSQL で自由に記述可能固定パターン(on_start / on_success / on_failure)
通知先Email / Slack / Webhook / PagerDutyEmail(API定義)/ Webhook(タスク定義)
コンピュートSQL Warehouse(Alert実行時に起動)ジョブのコンピュートに依存
設定者アナリスト / BIチームデータエンジニア

試験で問われるポイント

  • 「クエリ結果が特定の条件を満たしたときに通知する方法」→ SQL Alert
  • 「Alertの評価対象はクエリ結果のどの値か」→ 最初の行の指定カラム
  • 「Alert Destinationとは何か」→ Slack / Webhook / PagerDuty等の外部通知先の登録
  • 「AlertとJob Notificationの違い」→ Alertはクエリ結果ベースの条件通知、Job Notificationはジョブ状態ベースの通知

問題で確認

Data Analyst Associate

問題 1

データアナリストが、日次ETLパイプラインの取込件数を監視し、取込件数がゼロの場合にチームのSlackチャンネルに自動通知する仕組みを構築したい。Databricks SQLの機能のみを使用する場合、最も適切な方法はどれか。

  1. ダッシュボードに取込件数のグラフを追加し、チームに毎朝目視確認を依頼する
  2. 取込件数を返すSQLクエリを作成し、SQL Alertで「値がゼロに等しい」条件を設定、通知先にSlack Alert Destinationを指定する
  3. Databricks Jobのemail_notificationsにSlackのメールアドレスを設定する
  4. Notebookにクエリとslack通知用のPythonコードを書き、定期実行する

正解: B

SQL Alertは、SQLクエリの結果に条件(この場合 = 0)を設定し、条件が満たされたときにAlert Destination(Slack)に自動通知する仕組みです。ダッシュボードの目視確認は自動化ではなく、Job Notificationはジョブ状態の通知であり取込件数の判定はできません。Notebookによる実装は可能ですが「Databricks SQLの機能のみ」という条件に合致しません。

よくある質問

SQL AlertはWarehouseが停止していても評価されますか?

いいえ。SQL Alertはスケジュール実行時にSQL Warehouseを起動してクエリを実行し、結果を評価します。Warehouseが停止中の場合は自動的に起動されますが、Auto Stopが短すぎるとAlert評価のたびに起動コストが発生します。Alertの評価頻度とWarehouseのAuto Stop設定を合わせて最適化することが重要です。

SQL AlertでSlack通知を送る場合、Slack側の設定は何が必要ですか?

Slack側ではIncoming Webhookまたは Slack Appの設定が必要です。Databricks側では通知先(Alert Destination)としてSlackを追加し、WebhookのURLを登録します。通知メッセージにはAlertの名前、トリガーされた値、評価時刻が自動的に含まれます。カスタムメッセージテンプレートの利用も可能です。

SQL AlertとDatabricks Jobs APIの通知(email_notifications)はどう使い分けますか?

SQL Alertは「クエリ結果が特定の条件を満たしたとき」に通知します(例: 売上が閾値を下回った、エラー件数が増加した)。Jobs APIのemail_notificationsは「ジョブの実行状態が変わったとき」に通知します(例: ジョブが失敗した、タイムアウトした)。前者はビジネスメトリクスの監視、後者はパイプラインの運用監視と使い分けます。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全7試験・難易度・勉強法

Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...

Databricks

Databricks試験の難易度ランキング|全7資格を徹底比較

Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...

Databricksの記事一覧 (105件)
© 2026 NicheeLab All rights reserved.