T
traeai
登录
返回首页
Databricks

Query Tags: 缺失的仓库查询上下文

8.5Score

TL;DR · AI 摘要

Databricks推出Query Tags功能,允许为SQL查询添加自定义key-value标签,解决查询追踪和成本归集问题。该功能支持通过标准SQL或Genie查询,已在数百客户中实现每周数百万查询的标记。

核心要点

  • Query Tags支持在SQL执行中添加自定义key-value标签,如'project':'finance_planning',使查询可按业务维度分组分析。
  • 通过dbt、Power BI等工具自动注入标签,ASOS案例显示可准确拆分仓库成本至具体dbt模型。
  • Python Connector等API支持连接级和语句级标签,Unit21案例表明可恢复团队级查询归属。

结构提纲

按章节快速跳转。

  1. Databricks推出Query Tags功能,允许为SQL查询添加自定义key-value标签,解决传统查询日志缺失业务上下文的问题。

  2. Query Tags通过key-value对附加到SQL执行,存储在Query History System Table中,支持通过标准SQL或Genie查询。

  3. dbt自动注入模型名/版本,Power BITableau支持连接级自定义标签,实现查询溯源。

  4. SQL Statement Execution API支持语句级标签,Python Connector支持连接级和语句级标签,实现应用元数据追踪。

  5. 分析师可在SQL编辑器、Notebooks和Dashboard中手动添加标签,区分开发/生产环境等业务维度。

  6. ASOS通过Query Tags准确拆分仓库成本至dbt模型,Unit21恢复共享仓库中的团队级查询归属。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Query Tags功能
    • 合作伙伴工具集成
      • dbt自动注入模型名/版本
      • Power BI/Tableau连接级标签
    • API应用集成
      • SQL Statement Execution API语句级标签
      • Python Connector连接级标签
    • UI手动标记
      • SQL编辑器/Notebooks标记
      • 成本中心/项目关联

金句 / Highlights

值得收藏与分享的关键句。

  • 无需配置即可将每个SQL工作负载映射到其原始的dbt模型。通过Query Tags,我们终于可以准确地将仓库成本按运行dbt的团队拆分。

    ASOS工程师Dipesh Bhundia

    ⬇︎ 下载 PNG𝕏 分享到 X
  • 我们从每个团队一个仓库转向共享仓库以降低成本,但失去了对哪个团队导致支出的可见性。通过Query Tags,我们只需从Databricks SQL Connector for Python工作负载中传递团队名称,即可恢复该归属——无需再次拆分仓库。

    Unit21 DevOps工程师Matthew Haber

    ⬇︎ 下载 PNG𝕏 分享到 X
  • Query Tags允许您为每个SQL执行附加业务上下文作为多个key-value对,并通过系统表使用标准SQL查询——或者只需询问Genie。

    Databricks官方文档

    ⬇︎ 下载 PNG𝕏 分享到 X
#Databricks#SQL#Query Tags#数据仓库
打开原文

Databricks SQL 会自动记录每个查询的关键属性:执行者、使用的仓库以及调用工具。但这些信息往往还不够。

当 Power BI 查询运行缓慢时,您知道它来自 Power BI,却无法确定具体是哪个仪表板需要修复。当成本激增时,您能看到哪些用户执行了查询,却无法确定应向哪个成本中心或项目计费。缺失的关键环节是自定义业务上下文,而 Query Tags 正是为此而生。

今天,我们正式推出**Query Tags 公测版**。Query Tags 让您为每个 SQL 执行附加多组键值对的业务上下文,并通过系统表使用标准 SQL _—_ 或直接询问 Genie 进行查询。Query Tags 也将在查询概览界面(查询历史界面的搜索支持 _即将推出_)中可见。

Query Tags 已获得广泛采用,数百家客户每周为数百万查询添加标签。

一键标记:介绍 Query Tags

使用 Query Tags,您可以为每个 SQL 执行附加自定义键值对(例如 "project" : "finance_planning")。这些标签会随查询一同传输,并记录在查询历史系统表中,从而支持工作负载的分组、过滤和分析。

标签在以下三种场景中创造价值:

  1. 合作伙伴工具:使用 dbt、Power BI 或 Tableau 时,将 dbt 模型名称、Power BI 报表 ID 或 Tableau 工作簿名称等标识符注入每个查询。
  2. 自定义应用:通过 SQL 语句执行 API 或连接器构建应用时,为每次执行附加 customeridapplicationnameapp_version 等元数据。
  3. Databricks UI 中的临时工作:使用与您相关的维度标记查询——开发/生产环境、成本中心、实验名称或团队。

让我们深入探讨这些场景。

(1) 追踪所有合作伙伴工具查询的源头

来自 dbt、Power BI 和 Tableau 的查询会流入您的仓库——但若无标签,它们仅能通过用户 ID 和工具名称追溯,无法进一步定位。这些工具通过自动注入 Query Tags 解决此问题,无需手动标记。

dbt 会自动为每个查询添加模型名称、核心版本、适配器版本和物化类型标签。若 dbt 模型突然性能下降,您可精准定位具体模型、版本及时间:

ASOS 的工程主管 Dipesh Bhundia 和 Dave Couse 表示:

"无需任何配置,我们就能将每个 SQL 工作负载映射到其原始的 dbt 模型。借助 Query Tags,我们终于能准确按运行 dbt 的团队拆分仓库成本。"

Power BITableau 支持在连接级别设置自定义 Query Tags。配置一次后,该连接的所有查询将自动携带这些标签。Tableau 客户发现使用类似 [WorkbookName] 的参数作为标签值非常实用,即使工作簿重命名也能保留归属信息。

_要查看完整支持 Query Tags 的合作伙伴工具列表,请参阅__文档__。若您的工具未列出,请联系您的账户团队。_

(2) 将匿名 API 查询转化为可追溯的工作负载

自定义应用通过 API 和连接器访问仓库,但生成的查询不携带应用上下文——无应用名称、团队名称或客户 ID。Query Tags 让您在连接或语句级别附加此元数据。

SQL 语句执行 API 支持在语句级别添加标签。作为参数传递的标签将应用于该特定执行:

Python 连接器 支持连接级别和语句级别的标签设置。在连接上设置团队名称,需要时可覆盖语句级标签:

Unit21 的 DevOps 工程师 Matthew Haber 分享:

"我们从按团队划分仓库转向共享仓库以降低成本,但失去了对哪些团队驱动支出的可见性。通过 Query Tags,我们只需将 Databricks SQL Python 连接器中的团队名称传递给工作负载,即可恢复归属信息——无需再次拆分仓库。"

_要查看完整的连接器和驱动器支持列表(Node.js、Go、JDBC 等),请参阅__文档__._

(3) 为您的工作添加标签,避免淹没在噪声中

分析师每周运行数百个查询(探索、生产、调试等),若无标签,所有查询在系统表中看起来都相同。Query Tags 让实践者通过一行 SQL 标记查询,无论在何处提交查询:SQL 编辑器、笔记本、仪表板和告警。

设置后,会话中后续所有语句将自动携带这些标签。无需逐个标记查询。例如,在 AI/BI 仪表板的每个数据集查询中添加 SET QUERY_TAGS 语句,即可为该仪表板的所有查询标记 'environment: production'。

数据实践者可利用此功能:

  • 按项目或团队标记临时分析
  • 标记实验或 A/B 测试
  • 识别开发/生产工作负载
  • 调查问题时附加调试上下文

从标签到答案:通过系统表监控

查询标记后,标签将记录在查询历史系统表query_tags列中。现在,复杂问题可简化为标准 SQL。

哪些团队在驱动仓库成本?

许多组织需要按团队或产品分配共享仓库成本。借助 Query Tags,这只需一个查询——无需拆分仓库或猜测。

哪个dbt模型引入了回归问题?

当管道变慢时,您需要知道是哪个模型,而不仅仅是哪个仓库。通过自动注入的dbt模型名称标签过滤system.query.history以隔离问题。

或者,完全跳过编写SQL,只需询问Genie。因为Query Tags在系统表中存储业务上下文,Genie可以使用自然语言对您的工作负载数据进行推理。例如:“哪个dbt模型查询次数最多?哪个模型的平均查询时间最长?”

Query Tags解锁了更多监控用例:

  1. 按query_tags['cost_center']分组以实现成本回溯
  2. 通过query_tags['@@dbt_model_name']过滤以监控管道健康
  3. 识别每个Tableau工作簿的长时间运行查询
  4. 比较query_tags['env']以区分开发和生产流量

**下一步**

Query Tags目前在SQL仓库中处于公开预览阶段,我们正在努力使其对客户的监控体验更有帮助。请参考文档获取更新。

  • Power BI自动标记: Power BI将自动为每个查询附加DatasetId和ReportId等元数据,无需配置。您可以通过文档中的步骤手动启用此功能。在下一个Power BI版本中,自动标记将默认开启。
  • 更广泛的连接器支持: 除了Python,Go和Node.js现在也支持语句级标记。
  • UI中的搜索功能: 我们即将在查询历史UI中支持搜索,以便您可以搜索带有特定标签的查询(例如:'@@dbt_model_name': 'my_model')。
  • 支持超出SQL仓库: 我们将Query Tags引入无服务器笔记本和作业,因此相同的标记和归因模型将扩展到笔记本工作负载。ads.

**立即尝试Query Tags**

每个未标记的查询都是归因的错失机会。无论您需要按团队划分仓库成本、将慢查询追溯到特定仪表板,还是按项目标记分析师工作——Query Tags都为您提供所需的上下文来实现这些。

如果您使用dbt,您已经进行了标记(请检查您的查询历史系统表)。对于Power BI、Tableau和自定义应用程序,设置只需几分钟。对于临时工作,只需一行SQL。

Query Tags目前在所有云平台上处于公开预览阶段。请通过文档开始使用。

AI 可能会生成不准确的信息,请核实重要内容