Query Tags: 缺失的仓库查询上下文
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案例表明可恢复团队级查询归属。
结构提纲
按章节快速跳转。
Databricks推出Query Tags功能,允许为SQL查询添加自定义key-value标签,解决传统查询日志缺失业务上下文的问题。
- §核心机制
Query Tags通过key-value对附加到SQL执行,存储在Query History System Table中,支持通过标准SQL或Genie查询。
SQL Statement Execution API支持语句级标签,Python Connector支持连接级和语句级标签,实现应用元数据追踪。
分析师可在SQL编辑器、Notebooks和Dashboard中手动添加标签,区分开发/生产环境等业务维度。
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的团队拆分。
我们从每个团队一个仓库转向共享仓库以降低成本,但失去了对哪个团队导致支出的可见性。通过Query Tags,我们只需从Databricks SQL Connector for Python工作负载中传递团队名称,即可恢复该归属——无需再次拆分仓库。
Query Tags允许您为每个SQL执行附加业务上下文作为多个key-value对,并通过系统表使用标准SQL查询——或者只需询问Genie。
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")。这些标签会随查询一同传输,并记录在查询历史系统表中,从而支持工作负载的分组、过滤和分析。
标签在以下三种场景中创造价值:
- 合作伙伴工具:使用 dbt、Power BI 或 Tableau 时,将 dbt 模型名称、Power BI 报表 ID 或 Tableau 工作簿名称等标识符注入每个查询。
- 自定义应用:通过 SQL 语句执行 API 或连接器构建应用时,为每次执行附加
customerid、applicationname或app_version等元数据。 - Databricks UI 中的临时工作:使用与您相关的维度标记查询——开发/生产环境、成本中心、实验名称或团队。
让我们深入探讨这些场景。
(1) 追踪所有合作伙伴工具查询的源头
来自 dbt、Power BI 和 Tableau 的查询会流入您的仓库——但若无标签,它们仅能通过用户 ID 和工具名称追溯,无法进一步定位。这些工具通过自动注入 Query Tags 解决此问题,无需手动标记。
dbt 会自动为每个查询添加模型名称、核心版本、适配器版本和物化类型标签。若 dbt 模型突然性能下降,您可精准定位具体模型、版本及时间:
ASOS 的工程主管 Dipesh Bhundia 和 Dave Couse 表示:
"无需任何配置,我们就能将每个 SQL 工作负载映射到其原始的 dbt 模型。借助 Query Tags,我们终于能准确按运行 dbt 的团队拆分仓库成本。"
Power BI 和 Tableau 支持在连接级别设置自定义 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解锁了更多监控用例:
- 按query_tags['cost_center']分组以实现成本回溯
- 通过query_tags['@@dbt_model_name']过滤以监控管道健康
- 识别每个Tableau工作簿的长时间运行查询
- 比较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目前在所有云平台上处于公开预览阶段。请通过文档开始使用。