什麼是 Databricks SQL 警示?
Databricks SQL 警示會定期執行查詢、評估定義的條件,並在符合條件時傳送通知。 您可以設定警示來監視您的業務,並在報告的資料超出預期限制時傳送通知。 排程警示會執行其基礎查詢,並檢查警示準則。 這與基礎查詢上可能存在的任何排程無關。
重要
- 利用具有參數之查詢的警示會針對每個參數使用 SQL 編輯器中指定的預設值。
檢視及組織警示
使用下列其中一個選項來存取警示:
- 點選提要欄位中的 [工作區],以檢視預設儲存在 [首頁] 資料夾中的警示。 用戶可以將警示組織成工作區瀏覽器中的資料夾,以及其他 Databricks 物件。
- 按兩下提要欄位中的 [警示] 以檢視警示清單頁面。
根據預設,物件會以反向時間順序排序。 您可以按下資料列標題來重新排序列表。 按兩下畫面頂端附近的 [ 所有警示] 索引標籤,即可檢視工作區中的所有警示。 按兩下 [ 我的警示] 索引標籤,以檢視您是擁有者的警示。
- 名稱 會顯示每個警示的字串名稱。
- 狀態 會顯示警示狀態
TRIGGERED
為、OK
或UNKNOWN
。 - 上次更新 會顯示上次更新的時間或日期。
- 建立時間 會顯示警示建立的日期和時間。
TRIGGERED
表示在最近的執行中,目標查詢中的 [值] 資料行符合您所設定的條件和臨界值。 如果您的警示會檢查「貓」是否超過1500,只要「貓」超過1500,就會觸發警示。OK
表示在最近的查詢執行中,[值] 資料行不符合您設定的 [條件] 和 [閾值]。 這並不表示先前未觸發警示。 如果您的「貓」值現在是 1470,您的警示會顯示為OK
。UNKNOWN
表示 Databricks SQL 沒有足夠的數據來評估警示準則。 建立警示之後,您將會立即看到此狀態,直到查詢執行為止。 如果查詢結果中沒有數據,或最新的查詢結果不包含您設定的值數據行,您也會看到此狀態。
建立警示
請遵循下列步驟,在查詢的單一數據行上建立警示。
執行下列其中一項動作:
- 按兩下提要欄位中的 [新增],然後選取 [警示]。
- 按兩下提要欄位中的 [警示],然後按兩下 [+ 新增警示] 按鈕。
- 按兩下提要欄位中的 [工作區],然後按兩下 [+ 建立警示]。
- 單擊已儲存查詢右上角的 Kebab 功能表,然後按兩下 [+ 建立警示]。
在 [ 查詢] 欄位中,搜尋目標查詢。
若要對多個數據行發出警示,您必須修改查詢。 請參閱 警示匯總。
在 [ 觸發條件] 欄位中,設定警示。
[值] 資料 行 下拉式清單會控制要評估查詢結果的欄位。 警示條件可以在查詢結果中數據行的第一個值上設定,或者您可以選擇設定單一數據行所有數據列的匯總,例如 SUM 或 AVERAGE。
[ 運算子 ] 下拉式清單會控制要套用的邏輯作業。
[ 臨界值] 文字輸入會使用您指定的 [條件] 來比較 [值 ] 數據行。
按兩下 [預覽警示 ] 預覽警示,並測試警示是否會以目前數據觸發。
在 [ 觸發警示時,傳送通知 ] 字段中,選取觸發警示時所傳送的通知數目:
- Just once:當警示狀態從
OK
變更為TRIGGERED
時傳送通知。 - 每次評估警示時:每當警示狀態
TRIGGERED
為時傳送通知,而不論其先前評估的狀態為何。 - 最多每一個:每當警示狀態為
TRIGGERED
特定間隔時傳送通知。 此選項可讓您避免經常觸發之警示的通知垃圾郵件。
無論您選擇的通知設定為何,每當狀態從
OK
到 或從TRIGGERED
傳至TRIGGERED
OK
時,您都會收到通知。 如果狀態從一個執行到TRIGGERED
下一個執行,排程設定會影響您收到的通知數目。 如需詳細資訊,請參閱 通知頻率。- Just once:當警示狀態從
在 [ 範本 ] 下拉式清單中,選擇範本:
- 使用預設範本:警示通知是訊息,其中包含 [警示設定] 畫面和 [查詢] 畫面的連結。
- 使用自定義範本:警示通知包含警示的更具體資訊。
方塊會顯示,其中包含主旨和本文的輸入欄位。 任何靜態內容都是有效的,而且您可以納入內建範本變數:
ALERT_STATUS
:評估的警示狀態(字串)。ALERT_CONDITION
:警示條件運算符(字串)。ALERT_THRESHOLD
:警示閾值(字串或數位)。ALERT_COLUMN
:警示資料行名稱(字串)。ALERT_NAME
:警示名稱(字串)。ALERT_URL
:警示頁面 URL (字串)。QUERY_NAME
:相關聯的查詢名稱(字串)。QUERY_URL
:相關聯的查詢頁面 URL(字串)。QUERY_RESULT_TABLE
:查詢結果 HTML 資料表(字串)。QUERY_RESULT_VALUE
:查詢結果值(字串或數位)。QUERY_RESULT_ROWS
:查詢結果數據列(值陣列)。QUERY_RESULT_COLS
:查詢結果數據行(字串陣列)。
例如,例如,範例主旨可能是:
Alert "{{ALERT_NAME}}" changed status to {{ALERT_STATUS}}
。您可以使用 HTML 來格式化自訂範本中的訊息。 樣本中允許下列標籤和屬性:
- 標記:
<a>
、<abbr>
、、<b>
<acronym>
<blockquote>
<body>
<br>
<code>
<div>
<em>
<h1>
<h2>
<h3>
<h4>
<h5
><h6
><head
><hr>
<html>
<i>
<li>
<ol>
<p>
<span>
<strong>
<table>
<tbody>
<td>
<th>
<tr>
<ul>
- 屬性:href(適用於 ),標題(針對
<a>
<a>
,<abbr>
)<acronym>
- 標記:
按兩下 [ 預覽] 切換按鈕,預覽轉譯的結果。
重要
預覽適用於驗證範本變數是否正確轉譯。 這不是最終通知內容的準確表示法,因為每個通知目的地可以以不同的方式顯示通知。
按兩下 [ 儲存變更] 按鈕。
按兩下 [ 建立警示]。
按一下 [加入排程] 。
按兩下 [新增排程] 對話框中的 [目的地] 索引標籤。
- 使用下拉式清單選取可用的 通知目的地。 或者,開始輸入使用者名稱以新增個人。
重要
如果您略過此步驟 ,則不會 在觸發警示時收到通知。
按一下 [建立]。 您儲存的警示和通知詳細數據會出現在畫面上。
共用排程。
- 在列出的排程右側,選擇 kebab功能表,然後選取 [ 編輯排程許可權]。
- 從對話方塊的下拉式功能表中選擇使用者或群組。
- 選擇下列排程權限:
- 沒有許可權:未授與任何許可權。 沒有許可權的使用者看不到排程存在,即使他們是訂閱者或包含在列出的通知目的地中也一樣。
- CAN VIEW:授與檢視排程執行結果的許可權。
- CAN MANAGE RUN:授與檢視排程執行結果的許可權。
- CAN MANAGE:授與檢視、修改和刪除排程的許可權。 需要此許可權,才能變更執行間隔、更新訂閱者清單,以及暫停或取消排程。
- IS OWNER:授與 CAN MANAGE 的所有許可權。 此外,排程擁有者的認證將用來執行儀錶板查詢。 只有工作區管理員可以變更擁有者。
重要
警示和排程的許可權是分開的。 授與通知目的地清單中的使用者和群組存取權,以便檢視排程的執行結果。
共用警示。
- 按兩下 頁面右上方附近。
- 新增應該有權存取警示的使用者或群組。
- 選擇適當的許可權等級,然後按兩下 [ 新增]。
警示匯總
警示匯總的運作方式是修改附加至警示之 Databricks SQL 查詢的原始 SQL。 警示會在通用數據表表示式 (CTE) 中包裝原始查詢文字,並在其上執行包裝匯總查詢,以匯總查詢結果。
例如, SUM
附加至含有文字 SELECT 1 AS column_name
之查詢的警示匯總表示每當重新整理警示時,執行的修改 SQL 會是: WITH q AS (SELECT 1 AS column_name) SELECT SUM(column_name) FROM q
。
這表示每當警示上有匯總時,就無法在警示自定義主體中顯示原始查詢結果(如 和 QUERY_RESULT_COLS
等QUERY_RESULT_ROWS
參數)。 相反地,這些變數只會顯示最終的匯總后查詢結果。
注意
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
或反之亦然時,就會將通知傳送至您選擇的通知目的地。
假設此範例會在排定每天執行一次的查詢上設定警示。 警示的每日狀態會出現在下表中。
在星期一之前,警示狀態為 OK
。
Day | 警示狀態 |
---|---|
星期一 | 確定 |
Tuesday | 確定 |
星期三 | 引發 |
Thursday | 引發 |
星期五 | 引發 |
星期六 | 引發 |
星期日 | 確定 |
如果通知頻率設定為 Just Once
,Databricks SQL 會在星期三傳送通知,當狀態從 OK
TRIGGERED
變更為 ,並在周日切換回時再次變更。 除非您特別設定警示,否則不會在星期四、星期五或星期六傳送警示,因為警示狀態不會在這些日執行之間變更。
設定警示許可權並轉移警示擁有權
您至少必須擁有查詢的 CAN MANAGE 權限,才能共用查詢。 如需警示許可權等級,請參閱 警示 ACL。
在提要欄位中,按兩下 [ 警示]。
按兩下警示。
按下左上方的 按鈕來開啟 [共用] 對話方塊。
搜尋並選取群組和使用者,並指派權限等級。
按一下新增。
轉移警示的擁有權
當您儲存警示時,您會成為警示的擁有者。 如果警示的擁有者已從工作區中移除,警示就不會再擁有擁有者。 工作區系統管理員使用者可以將警示的擁有權轉移給不同的使用者。 服務主體和群組無法指派警示的擁有權。 您也可以使用 權限 API 來轉移所有權。
身為工作區管理員,登入您的 Azure Databricks 工作區。
在提要欄位中,按兩下 [ 警示]。
按兩下警示。
按下右上方的 [共用] 按鈕,以開啟 [共用] 對話方塊。
按下右上方的 [齒輪] 圖示,然後按下 [指派新擁有者]。
選取您想要指派所有權的使用者或群組。
按一下 [確認]。