Databricks SQL アラートとは
Databricks SQL アラートは、クエリを定期的に実行し、定義された条件を評価し、条件が満たされた場合は通知を送信します。 アラートを設定してビジネスを監視し、報告されたデータが予想される制限を超えた場合に通知を送信できます。 アラートをスケジュールすると、基になるクエリが実行され、アラート条件がチェックされます。 これは、基になるクエリに存在する可能性のあるスケジュールとは無関係です。
- アラート [パラメーターを指定したクエリを利用する] では、各パラメーターのSQL エディターで指定されたデフォルト値を使用します。
アラートの表示と整理
次のいずれかのオプションを使用してアラートにアクセスします。
- サイドバーの
ワークスペース をクリックすると、 アラートがデフォルトで 保存されているホームフォルダに表示されます。ユーザーは、アラートをワークスペース ブラウザー内のフォルダーに、他の Databricks オブジェクトと共に整理できます。
- サイドバーの
アラート をクリックして、アラートリストページを表示します。
デフォルトでは、オブジェクトは時系列の逆順にソートされます。 リストを並べ替えるには、列見出しをクリックします。 画面の上部付近にある [すべてのアラート ] タブをクリックして、ワークスペース内のすべてのアラートを表示します。 [ マイアラート ]タブをクリックして、自分が所有者であるアラートを表示します。
- [名前 ] には、各アラートの文字列名が表示されます。
- [状態 ] は、アラート ステータスが [
TRIGGERED
]、[OK
] 、または [UNKNOWN
] のいずれであるかを示します。 - [最終更新日 ] には、最終更新日時または日付が表示されます。
- [作成日] には、アラートが作成された日時が表示されます。
TRIGGERED
は、最新の実行で、ターゲット クエリの Value 列が、設定した Condition と Threshold を満たしたことを意味します。 アラートで「cats」が1500を超えているかどうかを確認した場合、「cats」が1500を超えている限り、アラートがトリガーされます。OK
は、最新のクエリ実行で、[値] 列が構成した [条件] と [しきい値] を満たしていなかったことを意味します。 これは、アラートが以前にトリガーされていなかったという意味ではありません。 「cats」の値が 1470 の場合、アラートはOK
と表示されます。UNKNOWN
は、Databricks SQL にアラートを評価するための十分なデータがないことを意味します 条件。 このステータスは、アラートを作成した直後とクエリが実行されるまで表示されます。 このステータスは、クエリ結果にデータがない場合、または最新のクエリ結果に設定した 値列 が含まれていない場合にも表示されます。
アラートを作成する
クエリの 1 つの列にアラートを作成するには、次の手順に従います。
-
以下のいずれかを実行します。
サイドバーの「 新規 」をクリックし、「 アラート 」を選択します。
- サイドバー
アラート をクリックし、[ +新しいアラート ]ボタンをクリックします。
- サイドバーの
ワークスペース をクリックし、 + アラートを作成 をクリックします。
-
[クエリ ] フィールドで、ターゲット クエリを検索します。
複数の列でアラートを生成するには、クエリを変更する必要があります。 「アラート集計」を参照してください。
-
[トリガー条件 ] フィールドで、アラートを構成します。
-
[値列 ] ドロップダウンは、クエリ結果のどのフィールドが評価されるかを制御します。アラート条件は、クエリ結果の列の最初の値に設定することも、SUM や AVERAGE など、1 つの列のすべての行に集計を設定することもできます。
-
[演算子] ドロップダウンは、適用する論理演算を制御します。
-
しきい値 のテキスト入力は、指定した条件を使用して [値] 列と比較されます。
-
-
[ アラートのプレビュー ] をクリックしてアラートをプレビューし、アラートが現在のデータでトリガーされるかどうかをテストします。
-
[ アラートがトリガーされたとき、通知を送信する ] フィールドで、アラートがトリガーされたときに送信される通知の数を選択します。
- 1 回だけ : アラートのステータス が
OK
からTRIGGERED
に変わったときに通知を送信します。 - アラートが評価されるたびに : アラートの状態が
TRIGGERED
になるたびに、前回の評価での状態に関係なく通知を送信します。 - At most every : アラートのステータスが特定の間隔で
TRIGGERED
されるたびに通知を送信します。 この選択により、頻繁にトリガーされるアラートの通知スパムを回避できます。
選択した通知設定に関係なく、ステータスが
OK
からTRIGGERED
に、またはTRIGGERED
からOK
に変わるたびに通知を受け取ります。 スケジュール設定は、ステータスが 1 回の実行から次の実行までTRIGGERED
のままである場合に受け取る通知の数に影響します。 詳細については、「 通知の頻度」を参照してください。 - 1 回だけ : アラートのステータス が
-
[テンプレート ] ドロップダウンで、テンプレートを選択します。
-
デフォルトのテンプレートを使用する : アラート通知は、アラート設定画面とクエリ画面へのリンクを含むメッセージです。
-
カスタム テンプレートを使用する : アラート通知には、アラートに関するより具体的な情報が含まれます。
-
件名と本文の入力フィールドで構成されるボックスが表示されます。 静的コンテンツはどれでも有効であり、組み込みのテンプレート変数を組み込むことができます。
ALERT_STATUS
: 評価されたアラート ステータス (文字列)。ALERT_CONDITION
: アラート条件演算子 (文字列)。ALERT_THRESHOLD
: アラートのしきい値 (文字列または数値)。ALERT_COLUMN
: アラート列の名前 (文字列)。ALERT_NAME
: アラート名 (文字列)。ALERT_URL
: アラート ページの URL (文字列)。QUERY_NAME
: 関連付けられたクエリ名 (文字列)。QUERY_URL
: 関連付けられたクエリ ページの URL (文字列)。QUERY_RESULT_TABLE
: クエリ結果の HTML テーブル (文字列)。 結果は最初の 100 行に制限されます。 Eメール 通知先のみがHTMLをレンダリングできます。QUERY_RESULT_VALUE
: クエリ結果の値 (文字列または数値)。QUERY_RESULT_ROWS
: クエリ結果の行 (値の配列)。QUERY_RESULT_COLS
: クエリ結果の列 (文字列配列)。
たとえば、件名の例としては、
Alert "{{ALERT_NAME}}" changed status to {{ALERT_STATUS}}
. 2. HTML を使用して、カスタム テンプレート内のメッセージを書式設定できます。 Eメール 通知先のみがHTMLをレンダリングできます。 テンプレートでは、次のタグと属性を使用できます。-
タグ:
<a>
、<abbr>
、<acronym>
、<b>
、<blockquote>
、<body>
、<br>
、<code>
、<div>
、<em>
、<h1>
、<h2>
、<h3>
、<h4>
、<h5
> 、<h6
> 、<head
> 、<hr>
、<html>
,<i>
,<li>
,<ol>
,<p>
, ``,<strong>
,<table>
,<tbody>
,<td>
,<th>
,<tr>
,<ul>
-
属性:href (
<a>
用)、タイトル (<a>
、<abbr>
、<acronym>
用)
- [プレビュー ] 切り替えボタンをクリックして、レンダリングされた結果をプレビューします。
-
-
プレビューは、テンプレート変数が正しくレンダリングされていることを確認するのに役立ちます。 これは、通知先ごとに異なる方法で通知を表示する可能性があるため、最終的な通知内容を正確に表しているわけではありません。
-
「 Save Changes 」ボタンをクリックします。
-
[ アラートの作成] をクリックします。
-
「 スケジュールを追加」 をクリックします。
- ドロップダウンピッカーを使用して、頻度、期間、開始時間、タイムゾーンを指定します。 必要に応じて、[ Show cron syntax ] チェックボックスを選択して、 Quartz Cron Syntax でスケジュールを編集します。
- [ その他のオプション ] を選択して、オプション設定を表示します。 また、次のものも選択できます。
- スケジュールの名前。
- クエリを駆動するための SQLウェアハウス。 デフォルトでは、アドホッククエリの実行に使用される SQLウェアハウスは、スケジュールされたジョブにも使用されます。 このオプション設定を使用して、スケジュールされたクエリを実行する別のウェアハウスを選択します。
-
[スケジュールの追加 ] ダイアログの [目的地 ] タブをクリックします。
- ドロップダウンを使用して、使用可能な 通知先を選択します。 または、ユーザー名の入力を開始して、個人を追加します。
この手順をスキップすると、アラートがトリガーされたときに通知 されません 。
-
「作成 」をクリックします。保存したアラートと通知の詳細が画面に表示されます。
-
スケジュールを共有します。
- 一覧表示されたスケジュールの右側にある [
ケバブ] メニューを選択し、[ スケジュールのアクセス許可の編集 ] を選択します。
- ダイアログのドロップダウンメニューからユーザーまたはグループを選択します。
- 次のスケジュール権限から選択します。
-
NO PERMISSIONS: 権限が付与されていません。 権限のないユーザーは、サブスクライバーであったり、リストされた通知先に含まれている場合でも、スケジュールが存在することを確認できません。
-
CAN VIEW: スケジュールされた実行結果を表示する権限を付与します。
-
CAN MANAGE RUN: スケジュールされた実行結果を表示する権限を付与します。
-
CAN MANAGE: スケジュールを表示、変更、および削除する権限を付与します。 この権限は、実行間隔の変更、サブスクライバー リストの更新、およびスケジュールの停止または一時停止解除を行うために必要です。
-
IS OWNER: CAN MANAGE のすべての権限を付与します。 さらに、スケジュール所有者の資格情報は、ダッシュボード クエリの実行に使用されます。 所有者を変更できるのはワークスペース管理者のみです。
-
- 一覧表示されたスケジュールの右側にある [
アラートとスケジュールの権限は別々です。 通知先リスト内のユーザーとグループにアクセス権を付与して、スケジュールされた実行結果を表示できるようにします。
-
アラートを共有します。
- ページの右上にある
をクリックします。
- アラートへのアクセス権を付与するユーザーまたはグループを追加します。
- 適切な権限レベルを選択し、「 追加 」をクリックします。
- ページの右上にある
CAN MANAGE は、スケジュールを表示、変更、および削除する権限を付与します。 この権限は、実行間隔の変更、通知先リストの更新、スケジュールの停止または一時停止解除を行うために必要です。
アラートのアクセス許可レベルの詳細については、「 アラート ACL」を参照してください。
アラートの集計
アラートの集計は、アラートにアタッチされた Databricks SQL クエリの元の SQL を変更することで機能します。 アラートは、元のクエリ テキストを共通テーブル式 (CTE) でラップし、それに対してラッピング集計クエリを実行してクエリ結果を集計します。
たとえば、テキスト SELECT 1 AS column_name
を使用してクエリにアタッチされたアラートの SUM
集計は、アラートが更新されるたびに、実行される変更された SQL が WITH q AS (SELECT 1 AS column_name) SELECT SUM(column_name) FROM q
になることを意味します。
つまり、アラートに集計があるたびに、元のクエリ結果 (事前に集計された結果) をアラートのカスタム本文 ( QUERY_RESULT_ROWS
や QUERY_RESULT_COLS
などのパラメーターを使用) に表示することはできません。 代わりに、これらの変数には、集計後の最終的なクエリ結果のみが表示されます。
集計に関連するすべてのトリガー条件は、API ではサポートされていません。
複数の列に対するアラート
クエリの複数の列に基づいてアラートを設定するには、クエリでアラート ロジックと トリガーするアラートのブール値を返します。 例えば:
SELECT CASE WHEN drafts_count > 10000 AND archived_count > 5000 THEN 1 ELSE 0 END
FROM (
SELECT sum(CASE WHEN is_archived THEN 1 ELSE 0 END) AS archived_count,
sum(CASE WHEN is_draft THEN 1 ELSE 0 END) AS drafts_count
FROM queries) data
このクエリは、drafts_count > 10000 and archived_count > 5000
の場合に 1
を返します。その後、値が 1
になったときにアラートがトリガーされるようにアラートを構成できます。
通知の頻度
Databricks SQL は、検出されるたびに、選択した通知先に通知を送信します
アラートのステータスが OK
から TRIGGERED
に、またはその逆に変更されたこと。この例では、スケジュールされたクエリでアラートが構成されています
1日1回実行します。 アラートの日次ステータスを次の表に示します。月曜日より前は、アラートステータスは OK
でした。
日 | アラートステータス |
---|---|
月曜日 | OK |
火曜日 | OK |
水曜日 | TRIGGERED |
木曜日 | TRIGGERED |
金曜日 | TRIGGERED |
土曜日 | TRIGGERED |
日曜日 | OK |
通知頻度が Just Once
に設定されている場合、Databricks SQL は
ステータスが OK
から TRIGGERED
に変更された水曜日の通知
日曜日に再び切り替わります。 木曜日にはアラートを送信しませんが、
金曜日、または土曜日 (ただし、特に設定しない限り)
これらの日の実行間でアラートの状態は変化しませんでした。
アラートのアクセス許可を構成し、アラートの所有権を譲渡する
クエリを共有するには、少なくともクエリに対する CAN MANAGE 権限が必要です。 アラートのアクセス許可レベルについては、「 アラート ACL」を参照してください。
-
サイドバーで、「 アラート」 をクリックします。
-
アラートをクリックします。
-
右上の
ボタンをクリックして、[ 共有 ]ダイアログを開きます。
-
グループとユーザーを検索して選択し、権限レベルを割り当てます。
-
[ 追加 ] をクリックします。
アラートの所有権を譲渡する
アラートを保存すると、アラートの所有者になります。 アラートの所有者がワークスペースから削除されると、アラートの所有者は存在しなくなります。 ワークスペース管理者ユーザーは、アラートの所有権を別のユーザーに譲渡できます。 サービスプリンシパルとグループにアラートの所有権を割り当てることはできません。 Permissions API を使用して所有権を譲渡することもできます。
-
ワークスペース管理者として、Databrickワークスペースにログインします。
-
サイドバーで、「 アラート」 をクリックします。
-
アラートをクリックします。
-
右上の「 共有 」ボタンをクリックして、 共有ダイアログを開きます 。
-
右上の歯車アイコンをクリックし、「 新規所有者を割り当て 」をクリックします。
-
所有権を割り当てるユーザーを選択してください。
-
確認 をクリックします。