Databricks SQL 警报

重要

此功能在 Beta 版中。

本页提供了有关启用和使用 Databricks SQL 警报的分步指南,以自动执行查询、评估自定义条件,并在满足这些条件时传递通知。 使用警报,可以主动监视业务数据,并在报告值超出预期阈值时及时接收通知。 计划警报时,会运行其关联的查询,并检查警报条件,而不考虑基础查询上的任何现有计划。 此外,还可以访问警报历史记录来查看过去警报评估的结果。

若要了解如何改用旧警报,请参阅 什么是旧警报?

在工作区中启用警报

对于大多数客户,工作区管理员可以从 预览页面控制对此预览版的工作区访问权限。 如果在工作区中看不到此版本的警报,请联系 Databricks 帐户团队。

启用此预览不会影响现有警报;可以并行使用这些警报和旧警报。

查看和整理警报

单击边栏中的 “警报”图标警报 以打开警报列表页。

警报列表页。

  • 默认情况下,“ 警报 ”选项卡处于打开状态,并显示工作区中的所有警报。 可以键入按名称进行筛选。 单击 “仅我的警报 ”,仅显示你为所有者的警报。

  • “旧警报”选项卡显示使用以前的警报系统创建的警报。

  • “名称”显示每个警报的字符串名称。

  • 状态 显示警报状态是TRIGGEREDOKUNKNOWN

  • 计划 显示上次更新的时间或日期。

  • 所有者 显示拥有警报的人员的用户名。

  • 创建时间显示创建警报的日期和时间。

    • TRIGGERED 表示在最近的执行中,目标查询中的 “值 ”列满足你配置的 “条件 ”和 “阈值 ”。 如果警报检查“cats”是否高于 1500,则“cats”高于 1500 时将触发警报。
    • OK 表示在最近的查询执行中, “值 ”列不符合配置的 “条件 ”和 “阈值 ”。 这并不意味着以前未触发 警报 。 如果“cats”值现为 1470,则警报将显示为 OK
    • UNKNOWN 指示 Databricks SQL 没有足够的数据来评估警报条件。 创建警报后立即显示此状态,并一直保持到查询运行为止。 如果查询结果中没有数据,或者最近的查询结果不包含你配置 的值列 ,则也会使用此状态。
    • ERROR 指示警报评估期间发生错误。

创建警报

本部分中的步骤将引导你了解如何创建下图所示的警报。 使用标签和说明了解每个组件。

创建警报 UI 会显示用于标识不同部件的编号标签。

  1. 数据集: 编写并测试要对其发出警报的查询。

  2. 条件: 选择应触发警报通知的值阈值。 可以运行查询来测试本节中的条件。

  3. 附表: 设置要运行的警报的定期计划。

  4. 通知: 当阈值超出预期范围时,用户或通知目的地应被标记为警报。

  5. 高深: 使用高级设置针对特殊值和条件发出警报。

重要

在 Beta 期间,警报不支持具有 参数的查询。 请参阅什么是旧警报?

使用以下步骤创建警报:

  1. 单击边栏中的 “警报”图标警报 ,然后单击“ 创建警报”。

  2. 数据集 编辑器中复制并粘贴以下查询。

    SELECT
      to_date(tpep_pickup_datetime) as date,
      SUM(fare_amount) as amount
    FROM
      `samples`.`nyctaxi`.`trips`
    GROUP BY
      ALL
    ORDER BY
      1 DESC
    
    
  3. “条件” 字段中,设置应触发警报的条件。

    应用设置的条件字段,如以下文本所示。

    应用以下设置,如下所示:

    • 选择 总和 作为要检查的数据值。 可对查询结果中的列的第一个值设置警报条件,也可选择跨单个列的所有行设置一个聚合(例如 SUM 或 AVERAGE)。
    • 选择 金额 作为要检查的列。
    • 选择逻辑运算符 >(大于)以应用。
    • 将阈值设置为 Static value 4000。 静态默认处于选中状态。 在值字段中输入 4000。
  4. 单击 “测试条件 ”以预览警报,并测试警报是否使用当前数据触发。 提供的设置应触发警报。 可以更改阈值以进一步测试。

  5. 使用“计划”下拉菜单设置警报,使其每 5分钟运行,从每小时正点的0分钟开始。

    (可选)选择“显示 cron 语法”复选框以在“Quartz Cron 语法”中编辑时间表。

  6. 在“ 通知 ”部分中,搜索用户名,并在出现时单击它。

  7. 单击 “创建”

警报已保存,并将按你提供的计划运行。 此示例中使用的数据是静态的,因此,如果 测试条件 返回为 “已触发”,它将在下一次运行时再次返回。 你将收到一封电子邮件通知作为警报。 如果 测试条件 返回 “正常”,则不会发送通知。

查看警报详细信息

此时会打开一个页面以显示警报详细信息。 此外,还显示了包含详细信息的警报历史记录和评估历史记录。 单击“ 立即运行 ”按钮,以故意运行警报查询,在此屏幕上返回结果。

单击页面右上角的 “编辑” 以继续编辑警报。

高级设置

单击 “高级设置” 以应用以下设置:

  • 确定通知: 当警报返回为OK时发送通知。

  • 通知频率: 定期发送警报通知,直到状态返回到 OK

  • 空结果状态: 设置在查询返回无结果时返回的特殊状态。

  • 模板: 可以选择使用默认模板或自定义模板发送通知。 以下列表说明了每个模板类型:

    • 使用默认模板:警报通知是一条消息,其中有指向警报配置屏幕和查询屏幕的链接。

    • 使用自定义模板:警报通知包括有关警报的更多特定信息。

      1. 会显示一个框,其中有输入主题和正文的字段。 任何静态内容都有效,你可合并内置模板变量:

        • ALERT_STATUS:已评估的警报状态(字符串)。
        • ALERT_CONDITION:警报条件运算符(字符串)。
        • ALERT_THRESHOLD:警报阈值(字符串或数字)。
        • ALERT_COLUMN:警报列名称(字符串)。
        • ALERT_NAME:警报名称(字符串)。
        • ALERT_URL:警报页 URL(字符串)。
        • QUERY_NAME:关联的查询名称(字符串)。
        • QUERY_URL:关联的查询页 URL(字符串)。
        • QUERY_RESULT_TABLE:查询结果 HTML 表(字符串)。 结果仅限于前 100 行。 只有电子邮件通知目标才能呈现 HTML。
        • QUERY_RESULT_VALUE:查询结果值(字符串或数字)。
        • QUERY_RESULT_ROWS:查询结果行(值数组)。
        • QUERY_RESULT_COLS:查询结果列(字符串数组)。

        例如,示例主题可以是:Alert "{{ALERT_NAME}}" changed status to {{ALERT_STATUS}}

      2. 可以使用 HTML 设置自定义模板中的消息格式。 只有电子邮件通知目标才能呈现 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>
      3. 单击“预览”切换按钮来预览呈现的结果。

        重要

        若要验证模板变量是否正确呈现,预览功能很有用。 它不是最终通知内容的准确表示形式,因为每个通知目标会以不同方式显示通知。

工作区管理员可以设置新的通知目标。 请参阅 “管理通知目标”。

警报聚合

通过修改附加到警报的 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_ROWSQUERY_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

1 时,此查询将返回 drafts_count > 10000 and archived_count > 5000。 然后,可将警报配置为在值为 1 时触发。

指标视图的警报

由于指标视图旨在跟踪和度量核心业务指标,因此它们与警报配对,以便在指标超出预期范围时自动收到通知。 指标视图的警报的工作方式与针对任何其他数据集的警报相同。 编写查询以配置查询时,请使用要监视的指标视图的完全限定名称。

配置警报访问权限并转移警报所有权

有关警报权限级别的信息,请参阅警报 ACL

  1. 在边栏中,单击“警报”

  2. 单击警报。

  3. 单击警报详细信息页右上角的“ 共享 ”,打开 “共享 ”对话框。

    管理警报权限

  4. 搜索并选择组和用户,然后分配权限级别。

  5. 单击“添加” 。

转让警报的所有权

当你保存警报时,你会成为警报的所有者。 如果从工作区中删除警报的所有者,则该警报将不再有所有者。 工作区管理员用户可以将警报的所有权转让给其他用户。 无法为服务主体和组分配警报库的所有权。 也可以使用权限 API 转移所有权。

  1. 以工作区管理员身份登录到 Azure Databricks 工作区。

  2. 在边栏中,单击“警报”

  3. 单击警报。

  4. 单击右上角的“共享”按钮,打开“共享”对话框

  5. 单击右上方的齿轮图标,然后单击“分配新所有者”。

    分配新所有者

  6. 选择用户以向其分配所有权。

  7. 单击“确认” 。