什么是 Databricks SQL 警报?
Databricks SQL 警报定期运行查询、评估定义的条件,并在满足条件时发送通知。 你可以设置警报来监视业务,并在报告的数据超出预期限制时发送通知。 计划警报会执行其基础查询并检查警报条件。 这与基础查询上可能存在的任何计划无关。
重要
- 利用带参数的查询的警报使用在 SQL 编辑器中为每个参数指定的默认值。
查看和整理警报
使用以下选项之一来访问警报:
- 单击边栏中的 工作区,在默认存储警报的 Home 文件夹中查看警报。 用户可将警报与其他 Databricks 对象一起整理到工作区浏览器中的文件夹中。
- 单击边栏中的 警报,查看警报列表页。
默认情况下,对象按时间倒序排序。 可以通过单击列标题重新对列表进行排序。 单击屏幕顶部附近的“所有警报”选项卡,查看工作区中的所有警报。 单击“我的警报”选项卡,查看你是所有者的警报。
- “名称”显示每个警报的字符串名称。
- “状态”显示警报状态是 、
OK
还是UNKNOWN
。 - 上次更新时间显示上次更新的时间或日期。
- 创建时间显示创建警报的日期和时间。
TRIGGERED
表示执行最后一次查询时,目标查询中的“值”列满足配置的“条件”和“阈值”。 如果警报检查“cats”是否高于 1500,则“cats”高于 1500 时将触发警报。OK
表示执行最后一次查询时,“值”列不满足配置的“条件”和“阈值”。 这并不表示之前未触发“警报”。 如果“cats”值现为 1470,则警报将显示为OK
。UNKNOWN
表示 Databricks SQL 没有足够的数据,无法评估警报条件。 创建警报后将立即显示此状态,直到查询执行完毕。 如果查询结果中没有数据,或者最新查询结果中不包含配置的“值列”,也会显示此状态。
创建警报
按照以下步骤对查询的单个列创建警报。
执行下列操作之一:
- 单击边栏中的 “新建”,然后选择“警报”。
- 在边栏中单击 “警报”,然后单击“创建警报”按钮。
- 在边栏中单击 “工作区”,然后单击“创建”->“警报”。
- 单击已保存查询右上角的 kebab 菜单,然后单击“+ 创建警报”。
在“查询”字段中搜索目标查询。
若要对多个列设置警报,需要修改你的查询。 请参阅警报聚合。
在“触发条件”字段中配置警报。
“值列”下拉列表控制计算查询结果的哪个字段。 可对查询结果中的列的第一个值设置警报条件,也可选择跨单个列的所有行设置一个聚合(例如 SUM 或 AVERAGE)。
“运算符”下拉列表控制要应用的逻辑操作。
使用指定的条件将“阈值”文本输入与值列进行比较。
单击“预览警报”来预览警报,并使用当前数据测试是否会触发警报。
在“触发警报时发送通知”字段中,选择触发警报时发送的通知数量:
- 仅一次:当警报状态从
OK
更改为TRIGGERED
时发送通知。 - 每次评估警报时:只要警报状态为
TRIGGERED
,无论在上次评估中其状态如何,都发送通知。 - 最多每隔:最多每当警报状态在特定时间间隔内为 时发送通知。 此选项可让你避免经常触发的警报遇到通知垃圾邮件。
无论选择哪种通知设置,只要状态从
OK
更改为TRIGGERED
或从TRIGGERED
更改为OK
,你都会收到通知。 如果状态在相邻两次执行中都是TRIGGERED
,则计划设置将影响你收到的通知数量。 有关详细信息,请查看通知频率。- 仅一次:当警报状态从
在“模板”下拉列表中,选择一个模板:
- 使用默认模板:警报通知是一条消息,其中有指向警报配置屏幕和查询屏幕的链接。
- 使用自定义模板:警报通知包括有关警报的更多特定信息。
会显示一个框,其中有输入主题和正文的字段。 任何静态内容都有效,你可合并内置模板变量:
ALERT_STATUS
:已评估的警报状态(字符串)。ALERT_CONDITION
:警报条件运算符(字符串)。ALERT_THRESHOLD
:警报阈值(字符串或数字)。ALERT_COLUMN
:警报列名称(字符串)。ALERT_NAME
:警报名称(字符串)。ALERT_URL
:警报页 URL(字符串)。QUERY_NAME
:关联的查询名称(字符串)。QUERY_URL
:关联的查询页 URL(字符串)。QUERY_RESULT_TABLE
:查询结果 HTML 表(字符串)。 结果仅限于前 100 行。QUERY_RESULT_VALUE
:查询结果值(字符串或数字)。QUERY_RESULT_ROWS
:查询结果行(值数组)。QUERY_RESULT_COLS
:查询结果列(字符串数组)。
例如,示例主题可以是:
Alert "{{ALERT_NAME}}" changed status to {{ALERT_STATUS}}
。可以使用 HTML 设置自定义模板中的消息格式。 模板中允许使用以下标签和属性:
- 标签:
<a>
、<abbr>
、<acronym>
、<b>
、<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>
)、title(适用于<a>
、<abbr>
、<acronym>
)
- 标签:
单击“预览”切换按钮来预览呈现的结果。
重要
若要验证模板变量是否正确呈现,预览功能很有用。 它不是最终通知内容的准确表示形式,因为每个通知目标会以不同方式显示通知。
单击“保存更改”按钮。
单击“创建警报”。
单击“添加计划”。
- 使用下拉选择器可以指定频率、时段、开始时间和时区。 (可选)选择“显示 cron 语法”复选框以在“Quartz Cron 语法”中编辑时间表。
- 选择“更多选项”以显示可选设置。 还可以选择:
- 计划的名称。
- 为查询提供支持的 SQL 仓库。 默认情况下,用于临时查询执行的 SQL 仓库也用于计划作业。 使用此可选设置可以选择其他仓库来运行计划查询。
单击“添加计划”对话框中的“目标”选项卡。
- 使用下拉列表选择可用的通知目标。 或者,开始键入用户名以添加个人。
重要
如果跳过此步骤,那么在触发警报时,你将不会收到通知。
单击 “创建” 。 保存的警报和通知详细信息将显示在屏幕上。
共享计划。
- 在列出的计划右侧选择 kebab 菜单,然后选择“编辑计划权限”。
- 从对话框的下拉菜单中选择用户或组。
- 从以下计划权限中选择:
- 无权限:未授予任何权限。 没有权限的用户无法看到计划存在,即使它们是订阅者或包含在列出的通知目标中也是如此。
- 可查看:授予查看计划运行结果的权限。
- 可管理运行:授予查看计划运行结果的权限。
- 可管理:授予查看、修改和删除计划的权限。 若要更改运行间隔、更新订阅者列表以及暂停或取消暂停计划,需要此权限。
- 为所有者:授予“可管理”的所有权限。 此外,计划所有者的凭据将用于运行仪表板查询。 只有工作区管理员可以更改所有者。
重要
警报和计划的权限是分开的。 为通知目标列表中的用户和组授予访问权限,使他们能够查看计划运行结果。
共享警报。
- 单击页面右上角附近的 。
- 添加应有权访问警报的用户或组。
- 选择适当的权限级别,然后单击“添加”。
警报聚合
通过修改附加到警报的 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
时会将通知发送到你选择的通知目标,反之亦然。
请思考以下示例,其中对计划每天运行一次的查询配置了警报。 下表显示了警报的每日状态。
星期一之前,警报状态为 OK
。
日期 | 警报状态 |
---|---|
星期一 | 确定 |
星期二 | 确定 |
星期三 | 已触发 |
星期四 | 已触发 |
星期五 | 已触发 |
星期六 | 已触发 |
星期日 | 确定 |
如果通知频率设置为 Just Once
,则当状态从 OK
更改为 TRIGGERED
时,Databricks SQL 会在周三发送通知,反之则在周日发送通知。 它不会在周四、周五或周六发送警报,除非你专门将其配置为在这几天发送,因为警报状态在这几天执行期间没有发生变化。
配置警报访问权限并转移警报所有权
必须至少对查询具有“可管理”权限才能共享查询。 有关警报权限级别的信息,请参阅警报 ACL。
在边栏中,单击“警报”。
单击警报。
单击右上角的 按钮打开“共享”对话框。
搜索并选择组和用户,然后分配权限级别。
单击“添加” 。
转让警报的所有权
当你保存警报时,你会成为警报的所有者。 如果从工作区中删除警报的所有者,则该警报将不再有所有者。 工作区管理员用户可以将警报的所有权转让给其他用户。 无法为服务主体和组分配警报库的所有权。 也可以使用权限 API 转移所有权。
以工作区管理员身份登录到 Azure Databricks 工作区。
在边栏中,单击“警报”。
单击警报。
单击右上角的“共享”按钮,打开“共享”对话框。
单击右上方的齿轮图标,然后单击“分配新所有者”。
选择用户以向其分配所有权。
单击“确认” 。