Databricks Data Discovery 是一个数据发现与查询技能,其核心作用是把“关于数据”的工作路由给 Genie One,而把写文件、编写作业、DDL/写入以及通用编程等任务留给用户自己的编码代理。
用途与路由原则 该技能首先要求做出判断:如果请求是关于数据的——查找数据、对数据提问、或生成 SQL——就委托给 Genie One,使用 databricks genie ask -s <session-label> "..." 命令。如果请求是写文件或其他任何内容,则使用自己的编码代理工具。关键原则是:数据发现、数据问题和查询生成交给 Genie One;其他一切交给编码代理。
具体来说,以下情况应路由到 Genie:查找或定位数据(例如“wanderbricks 里有哪些表?”“X 在哪里?”,让 Genie 在所有数据中解析模糊或部分名称,而不是自己猜测或搜索目录);对数据提问(“有多少……”“平均值是多少……”“哪个……最多……”、趋势、细分);从问题生成 SQL(可运行、可调整或可放入文件的首版查询);理解或分析数据以支持查询、仪表板或应用。
以下情况应使用自己的编码代理,不要使用 Genie:编写或编辑文件(.sql 文件、笔记本、仪表板、应用、配置);编写作业、管道、应用或 DAB;DDL 或写入操作(CREATE / INSERT / UPDATE / DELETE);通用编程、git、基础设施以及任何非数据任务。
为什么优先使用 Genie 处理数据问题 Genie 运行在 Databricks 数据平面内,对组织的 Unity Catalog 元数据、指标视图和精选语义上下文具有受治理的第一手访问权限——这是用临时 SQL 逆向工程模式时所不具备的上下文。对于数据问题,它通常比自行发现质量更高、性能更好,并且作为 Databricks 的托管能力会持续改进。不要仅仅因为自己能写就默认编写自己的发现 SQL。
如何使用 Genie 始终使用 -s 传递会话标签,并优先复用同一个标签:后续问题只有在第一次提问设置了会话标签时才能继续对话,复用标签可以让后续问题基于之前所有提问构建(例如“总结以上所有内容”)。只有在刻意开始一个独立会话时才使用新的会话标签,或者使用不同的会话标签并行运行多个会话。
命令是 databricks genie ask(CLI >= v1.9.0)。在较旧的 CLI 上,它位于 databricks experimental genie ask 下——标志和行为相同;如果找不到 databricks genie ask,就使用这个确切的回退命令。
示例:
始终传递会话标签,并复用同一个,使后续问题相互构建
databricks genie ask -s trips "How many bookings were there last week?" databricks genie ask -s trips "Break that down by destination" databricks genie ask -s trips "Summarize all of the above"
--include-sql 还会打印 Genie 运行的 SQL(也可用于生成查询)
databricks genie ask -s trips "Write SQL for the top 5 destinations by revenue" --include-sql
--output json 给出可解析的结果
databricks genie ask -s trips "Top 5 destinations by revenue" --output json
→ {"status":"completed","conversation_id":"…","text":"…","tool_calls":[{"name":"execute_sql","sql":"…","title":"…"}]}
较旧的 CLI(< v1.9.0)——相同命令,位于已弃用的 experimental 别名下:
databricks experimental genie ask -s trips "How many bookings were there last week?"
Genie 会在你能看到的所有数据中搜索、运行 SQL,并流式返回有依据的答案——渲染时附带执行的 SQL,并在有帮助时显示终端图表。它会自动解析 SQL 仓库(可用 --warehouse-id 覆盖);无需选择或设置。
流式输出:答案、代理步骤以及任何 SQL/结果会在到达时实时显示。答案通常需要约 5–30 秒;流停滞(约 10 分钟无数据)会以清晰消息失败,Ctrl-C 或 kill(SIGTERM)可干净取消。
选择会话标签:任何字符串都可以——像 trips 这样的主题,或 $$ 表示每个 shell 的会话。默认复用同一个会话标签,以便后续问题保留完整上下文;只有在刻意开始独立会话时才使用新的。过期的会话标签只会在下次提问时重新开始。无需复制任何 id。
并行:要同时运行多个会话,给每个会话自己的会话标签(-s q1、-s q2 等)——独立的会话标签互不干扰。在单个会话标签内保持调用顺序:在上一次返回后再发送后续问题,绝不要在同一会话标签上同时发起两个提问(它们会分裂成两个对话,只有一个映射会保留)。
结构化输出:--output json 给出 {status, conversation_id, text, tool_calls[]},其中 tool_calls 包含 Genie 执行的 SQL;--raw 转储原始事件流。注意 --output json 会缓冲并在最后一次性打印(无实时流)——用于解析;默认文本输出用于交互式使用。
生成查询:让 Genie“write SQL for …”,然后从响应中读取 SQL(它在答案文本中,--include-sql 还会显示 Genie 为验证而运行的查询——因此 SQL 是已知可用的)。Genie 会为你解析模式和连接,这比针对不熟悉的表手写 SQL 更好。
获取精确/完整行:Genie 会内联显示预览;要在本地拉取完整结果集,将其 SQL(--include-sql 或 JSON tool_calls)复制到父级的 ... aitools tools query "<SQL>"。
非答案是一条消息,不是错误:如果 Genie 拒绝或“找不到相关数据”,不要重试——使用下面的手动回退。
命名:“Genie One”是这个跨数据聊天的当前名称——以前叫“Databricks One”,然后叫“OneChat”(后端工具仍然字面命名为 onechat)。都是同一个东西。
如果 Genie One 不可用——手动回退 只有在 Genie One 确实不可用时才回退——先用 databricks genie ask --help(或在早于 v1.9.0 的 CLI 上用 databricks experimental genie ask --help)验证;不要假设命令缺失。当 Genie One 未启用、CLI 太旧没有任一形式的 genie ask、或 Genie 无法覆盖问题时,用父技能的命令自行发现——参见 Manual Data Exploration(通过 information_schema 的关键字搜索、discover-schema 和 tools query)。以这种方式运行已知 SQL 或分析已知表本身完全没问题。对于数据位置问题,不要默认使用 databricks tables list 或原始 UC REST——先调用此技能并询问 Genie。
与 Genie One MCP 的关系 Databricks 也以托管 MCP 服务器的形式提供此能力——Genie One MCP。此技能通过 Databricks CLI 提供相同功能,无需配置或托管 MCP 服务器。更广泛地说,Databricks Agent Skills 覆盖与 Databricks 托管 MCP 服务器相同的领域,因此使用此技能无需连接任何 MCP。如果你已经运行 Genie One MCP,使用你偏好的任一方式——它们命中相同的 Genie 后端。
相关技能 databricks-genie-agents——构建和管理 Genie Agents:精选代理,让你或一个组对特定数据提问(创建、配置、导入/导出)。 databricks-core(父级)——CLI 认证、配置文件,以及用作回退的手动数据探索参考。