You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何识别Databricks SQL Analytics中的所有定时查询并自动发送列表邮件?

Databricks SQL 活跃定时查询识别与自动邮件推送方案

1. 用Databricks REST API获取定时查询数据

Databricks提供的REST API可以直接获取带触发器的SQL查询信息,替代手动查看「Queries」标签页的操作:

  • 调用/api/2.0/sql/queries接口,添加has_trigger=true参数筛选出所有带定时触发器的查询
  • 接口返回的JSON数据中,trigger.status字段为ACTIVE的就是当前处于活跃状态的定时任务

示例curl调用:

curl -X GET \
  https://<你的Databricks实例域名>/api/2.0/sql/queries?has_trigger=true \
  -H "Authorization: Bearer <你的个人访问令牌>"

从返回结果中可以提取查询名称、定时规则、查询ID等关键信息,整理成需要的列表。

2. 编写自动化脚本实现数据提取与邮件发送

用Python编写脚本,整合API调用与邮件发送逻辑,实现全自动化:

  • 先通过API获取并过滤活跃定时查询
  • 将数据格式化为易读的内容(如markdown表格)
  • 调用SMTP服务发送邮件到指定收件人

示例代码:

import requests
import smtplib
from email.mime.text import MIMEText

# 配置参数
DATABRICKS_HOST = "https://<你的Databricks实例域名>"
PAT_TOKEN = "<你的个人访问令牌>"
SMTP_SERVER = "smtp.example.com"
SMTP_PORT = 587
SENDER_EMAIL = "你的发件邮箱"
SENDER_PWD = "发件邮箱密码/授权码"
RECEIVER_EMAIL = "收件邮箱"

# 获取活跃定时查询
def fetch_active_scheduled_queries():
    api_url = f"{DATABRICKS_HOST}/api/2.0/sql/queries?has_trigger=true"
    headers = {"Authorization": f"Bearer {PAT_TOKEN}"}
    resp = requests.get(api_url, headers=headers)
    resp.raise_for_status()
    all_queries = resp.json()["res"]
    # 过滤出活跃触发器的查询
    return [q for q in all_queries if q["trigger"]["status"] == "ACTIVE"]

# 发送邮件
def send_notification_email(queries):
    # 构建邮件内容
    email_content = "### Databricks SQL 活跃定时查询列表\n\n"
    email_content += "| 查询名称 | 定时规则 | 查询ID |\n"
    email_content += "|----------|----------|--------|\n"
    for query in queries:
        email_content += f"| {query['name']} | {query['trigger']['schedule']} | {query['query_id']} |\n"
    
    msg = MIMEText(email_content, "markdown")
    msg["Subject"] = "Databricks SQL 活跃定时查询清单"
    msg["From"] = SENDER_EMAIL
    msg["To"] = RECEIVER_EMAIL

    # 发送邮件
    with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
        server.starttls()
        server.login(SENDER_EMAIL, SENDER_PWD)
        server.send_message(msg)

# 主执行逻辑
if __name__ == "__main__":
    active_queries = fetch_active_scheduled_queries()
    send_notification_email(active_queries)

3. 定期调度脚本运行

将脚本部署到服务器,或者用Databricks Jobs功能设置定期执行计划(比如每天一次),就能自动生成并推送活跃定时查询列表,无需手动操作。

权限说明

确保你的个人访问令牌(PAT)拥有sql_query_viewer权限,该权限允许查看所有SQL查询的触发器信息。

内容的提问来源于stack exchange,提问作者Adhash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:05:21