news 2026/9/17 0:38:16

Snowflake Plugin for Ask DataHub:搭建对话式分析的语义层与数据层

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Snowflake Plugin for Ask DataHub:搭建对话式分析的语义层与数据层

Snowflake Plugin for Ask DataHub:搭建对话式分析的语义层与数据层

【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub

Ask DataHub 是 DataHub 内置的会话式 AI 助手(相关介绍见 Ask DataHub 指南),而Ask DataHub Plugins通过 Model Context Protocol(MCP) 将外部工具直接接入聊天界面,插件体系概览见 Ask DataHub Plugins 总览。本文聚焦其中的Snowflake Plugin:它把 Ask DataHub 连接到 Snowflake 托管的 MCP Server,让用户在聊天中直接获得基于真实数据的对话式分析能力。读完本文,你将掌握在 Snowflake 中创建 MCP Server 与 OAuth 安全集成、在 DataHub 中配置插件、为用户开通连接,以及常见故障的排查方法。

注意:Ask DataHub Plugins 目前处于Private Beta阶段。如需启用该功能,请联系你的 DataHub 客户支持代表。

为什么连接 Snowflake:语义层与数据层的分工

Snowflake Plugin 采用双栈架构

  • DataHub 充当语义层(Semantic Layer)——帮助 AI 找到正确的数据。Ask DataHub 基于元数据图谱工作,能够理解资产名称、描述、血缘关系、所有权、域、标签、术语表和样例值等信息(见 Ask DataHub 如何工作),从而判断用户问题应该命中哪些表。
  • Snowflake 充当数据层(Data Layer)——让 AI 真正查询和分析数据。Ask DataHub 定位到目标表之后,由 Snowflake 执行 SQL 并返回结果。

启用 Snowflake Plugin 后,Ask DataHub 可以:

  • 对话式分析(Conversational analytics)——用自然语言提问,得到由真实数据支撑的答案。DataHub 利用元数据(描述、所有权、血缘)找到正确的表,Snowflake 负责执行查询。无需额外的元数据或语义建模
  • 数据探索(Data exploration)——理解数据集结构、预览样例数据、检查列值,用于评估数据质量或判断某个数据集是否适合当前用例。
  • 数据调试(Data debugging)——针对 DataHub assertions(断言)发现的数据问题,直接到源头检查实际数据:查看空值、重复值、异常值或新鲜度问题。

因为插件使用OAuth,每个用户使用自己的 Snowflake 凭证完成认证。用户只能看到自己被授权访问的数据——无需在 DataHub 中额外管理策略或授权(grants)

示例提示词(Example prompts):

  • "Query the top 10 customers by revenue this quarter"(查询本季度收入前 10 的客户)
  • "How many null values are in the email column of the customers table?"(customers 表 email 列有多少空值?)
  • "Compare last month's sales to this month across regions"(按地区对比上月与本月销售额)
  • "Show me 5 sample rows from the orders table"(展示 orders 表 5 行样例数据)

前置条件(Prerequisites)

配置 Snowflake Plugin 需要满足以下条件:

  • 一个 Snowflake 账户,且拥有ACCOUNTADMIN权限(或具备创建 MCP Server、安全集成(security integration)和授权角色(grant roles)的等效权限);
  • 已启用 Ask DataHub Plugins 的 DataHub Cloud 实例;
  • DataHub 中的平台管理员(Platform admin)权限,用于配置插件。

需要说明的是,插件配置入口(Settings > AI > Plugins)要求持有Manage Platform Settings权限,这一点与 插件总览文档 中的说明一致。

管理员设置(Admin Setup)

Snowflake Plugin 使用User OAuth认证——每个用户用自己的 Snowflake 账户完成认证。整个设置流程分为两部分:先在 Snowflake 侧创建 MCP Server 与 OAuth 安全集成,再在 DataHub 侧配置插件。插件的 OAuth 机制与插件总览中介绍的 User OAuth 认证类型 一致:管理员配置 OAuth Provider(客户端 ID、客户端密钥、授权 URL、令牌 URL、scopes),用户走标准 OAuth 登录流程完成连接。

第 1 步:在 Snowflake 中创建 MCP Server

在 Snowflake 中创建一个 MCP Server,并暴露你想要使用的工具。推荐从SYSTEM_EXECUTE_SQL开始,它允许 Ask DataHub 直接对仓库执行 SQL 查询:

工具类型(Tool Type)用途
SYSTEM_EXECUTE_SQL推荐使用。直接对数据仓库执行 SQL 查询。这是让插件发挥作用所需的最低限度工具。
CORTEX_ANALYST_MESSAGE基于 Cortex Analyst 语义视图 进行自然语言分析——即在原始 SQL 之上构建的一层精选 BI/分析层。
CORTEX_AGENT_RUN从 Ask DataHub 内部以子代理(sub-agent)方式调用 Cortex Agents。

Snowflake 还支持其他工具类型,且单个 MCP Server 中可以包含多个工具

示例:创建一个同时包含 SQL 执行工具与 Cortex Analyst 语义视图的 Server:

USE ROLE ACCOUNTADMIN; USE DATABASE YOUR_DATABASE; USE SCHEMA YOUR_SCHEMA; CREATE OR REPLACE MCP SERVER YOUR_MCP_SERVER FROM SPECIFICATION $$ tools: - name: "execute_sql" type: "SYSTEM_EXECUTE_SQL" description: "Execute SQL queries against the data warehouse" title: "SQL Executor" - name: "revenue_analytics" type: "CORTEX_ANALYST_MESSAGE" identifier: "YOUR_DATABASE.YOUR_SCHEMA.REVENUE_SEMANTIC_VIEW" description: "Analytics over revenue and sales data" title: "Revenue Analytics" $$;

:::note 一个 MCP Server 对应一个数据库 Snowflake MCP Server 被限定在单个数据库范围内。如果你需要 Ask DataHub 跨多个数据库查询,请为每个数据库分别创建一个独立的 MCP Server(以及对应的插件)。 :::

从实现角度看,这里连接的是 Snowflake 托管的 MCP Server,而 DataHub 的插件机制要求外部 MCP Server 支持Streamable HTTP transport(见 DataHub MCP Server 文档 中关于传输方式的说明)。DataHub 侧以 MCP 客户端身份消费 Snowflake 暴露的工具,这与 Snowflake 反向连接 DataHub MCP Server(Snowflake Cortex Agents 通过 External MCP Server 消费 DataHub 元数据)恰好构成镜像关系。

第 2 步:授予访问权限(Grant Access)

将 MCP Server 的 USAGE 权限授予需要使用它的角色:

GRANT USAGE ON DATABASE YOUR_DATABASE TO ROLE YOUR_ROLE; GRANT USAGE ON SCHEMA YOUR_DATABASE.YOUR_SCHEMA TO ROLE YOUR_ROLE; GRANT USAGE ON MCP SERVER YOUR_DATABASE.YOUR_SCHEMA.YOUR_MCP_SERVER TO ROLE YOUR_ROLE;

注意这里需要分别对数据库、Schema 和 MCP Server 授予 USAGE。Snowflake 对未授权对象倾向于"静默隐藏"而非报错,如果后续出现"连接成功但看不到数据"的问题,优先检查这组授权是否完整。

第 3 步:创建 OAuth 安全集成(Security Integration)

创建一个安全集成,将 Snowflake 用作 OAuth Provider。需要启用刷新令牌(refresh tokens),并将重定向 URI 设置为你的 DataHub 实例的 OAuth 回调地址:

CREATE OR REPLACE SECURITY INTEGRATION YOUR_INTEGRATION_NAME TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = CUSTOM OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' OAUTH_REDIRECT_URI = 'https://<your-datahub-url>/integrations/oauth/callback' OAUTH_ISSUE_REFRESH_TOKENS = TRUE OAUTH_REFRESH_TOKEN_VALIDITY = 7776000;

:::caution 回调 URL 必须精确匹配OAUTH_REDIRECT_URI必须与 DataHub 插件创建表单中显示的 OAuth Callback URL完全一致(例如https://your-org.acryl.io/integrations/oauth/callback)。你可以从第 5 步创建插件时的表单中直接复制该 URL。 :::

:::caution 刷新令牌必须开启 请确保OAUTH_ISSUE_REFRESH_TOKENS设为TRUE。如果没有刷新令牌,用户将需要频繁重新认证。 :::

OAUTH_REFRESH_TOKEN_VALIDITY = 7776000表示刷新令牌有效期 7776000 秒,即 90 天;你可以根据组织的安全策略调整该值。

第 4 步:收集认证详情(Collect Authentication Details)

运行以下查询,收集 DataHub 侧配置所需的信息。

OAuth 客户端凭据(OAuth Client Credentials):

SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('YOUR_INTEGRATION_NAME');

该查询返回一个包含OAUTH_CLIENT_IDOAUTH_CLIENT_SECRET的 JSON 对象。

MCP Server URL:

URL 遵循以下格式:

https://<account-url>/api/v2/databases/<DATABASE>/schemas/<SCHEMA>/mcp-servers/<SERVER_NAME>

:::note 账户 URL 格式 URL 中账户定位符(account locator)部分的点(.)要用连字符(-)替代。例如,如果账户定位符是abc12345.us-east-1,URL 中应使用abc12345-us-east-1.snowflakecomputing.com。 :::

到这里,你应该已经拿到了 DataHub 配置所需的全部取值:

取值(Value)来源(Source)
MCP Server URL由账户 URL、数据库、Schema 和 Server 名称拼接而成(见上方格式)
Client ID来自SYSTEM$SHOW_OAUTH_CLIENT_SECRETS的输出
Client Secret来自SYSTEM$SHOW_OAUTH_CLIENT_SECRETS的输出

第 5 步:在 DataHub 中创建插件(Create Plugin in DataHub)

  1. 在 DataHub 中导航到Settings > AI > Plugins
  2. 点击+ Create,选择Snowflake MCP
  3. 填写插件详情:
字段(Field)取值(Value)
NameSnowflake
Description一段插件的描述
MCP Server URL第 4 步得到的 URL
Client ID来自第 4 步
Client Secret来自第 4 步
Default Scopesrefresh_token session:role:<ROLE_NAME>

:::warning 选对角色很关键session:role:<ROLE_NAME>这个 scope 决定了用户连接后以哪个 Snowflake 角色执行操作。请将<ROLE_NAME>替换为你第 2 步中授予 MCP Server 访问权限的角色(例如session:role:DATA_ANALYST)。如果省略该 scope,将使用用户的默认角色——而默认角色可能没有MCP Server 的访问权限。此外,每个用户必须在 Snowflake 中被授予该指定角色,且该角色不能出现在安全集成的 blocked roles 列表中(参见 故障排除)。 :::

4.(可选)添加Instructions for the AI Assistant(AI 助手指令),确保Enable for Ask DataHub处于开启状态,然后点击Create

关于第 4 步中的可选指令:插件总览文档指出,Instructions for the AI Assistant字段会在插件处于激活状态时被注入 AI 上下文,用于引导 Ask DataHub 何时及如何使用该插件——例如"Use this plugin to query Snowflake when users ask about revenue or customer metrics."(见 插件总览)。配置完成后,还可以使用Test Connection在保存前验证 MCP Server 是否可达、凭据是否有效(见 插件总览)。

用户设置(User Setup)

管理员配置好插件后,普通用户即可为自己启用:

  1. 导航到Settings > My AI Settings
  2. 找到Snowflake插件,点击Connect
  3. 你将被重定向到 Snowflake 完成认证,随后自动返回 DataHub

更完整的说明(包括从聊天界面直接启用的方式)见 插件总览的用户设置章节。由于插件采用 User OAuth,每个用户都用自己的 Snowflake 账号登录,因此数据可见范围完全由用户在 Snowflake 侧的权限决定,DataHub 无需为此维护任何独立的授权策略。

插件启用后,其工具会在 Ask DataHub 对话中自动可用:AI 助手会在问题相关时自动调用这些工具。例如:

  • "What are the most queried tables in Snowflake this month?"——DataHub 搜索 + Snowflake 查询
  • 先由 DataHub 根据元数据(描述、所有权、血缘)定位正确的表,再由 Snowflake 执行查询并返回结果

故障排除(Troubleshooting)

用户无法登录 / OAuth 失败(Users can't log in / OAuth fails)

OAuth 安全集成可能正在阻止用户的角色。请确保你想要用户承担的角色不在blocked roles 列表中:

ALTER SECURITY INTEGRATION "YOUR_INTEGRATION_NAME" SET BLOCKED_ROLES_LIST = ();

查询失败(Query failures)

  • 确认用户的 Snowflake 角色对目标表拥有SELECT权限
  • 确认用户已被授予 MCP Server 的USAGE权限
  • 检查仓库(warehouse)是否在运行且未被挂起(suspended)

令牌过期(Token expiration)

如果用户被频繁要求重新认证,请确认:

  • 安全集成上已启用刷新令牌(OAUTH_ISSUE_REFRESH_TOKENS = TRUE);
  • OAUTH_REFRESH_TOKEN_VALIDITY设置为了合适的时长(例如上文的 7776000 秒 / 90 天)。

小结

Snowflake Plugin 让 Ask DataHub 从"只读元数据"升级为"直接分析真实数据":DataHub 负责语义层(找对表),Snowflake 负责数据层(跑查询),而 User OAuth 让权限边界天然与 Snowflake 侧的角色体系对齐。整个配置链路可以概括为:在 Snowflake 创建 MCP Server(选工具)→ 授权角色 → 创建 OAuth 安全集成(开刷新令牌、配回调)→ 收集客户端凭据与 Server URL → 在 DataHub 填入表单并选择正确的session:rolescope → 用户自助 Connect 认证。若需同时启用其他数据源,可参考同目录下的 Databricks 插件指南 与 dbt Cloud 插件指南,它们遵循相同的插件配置框架。

【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 0:34:30

吃透HTTP/HTTPS:请求头、状态码与线上排障实战

周五晚上十一点多&#xff0c;线上告警突然响成一片&#xff0c;所有走某个内部接口的下单流程都在报错&#xff0c;错误码清一色是 502 Bad Gateway。我第一反应是后端服务挂了&#xff0c;可登录服务器看了一圈&#xff0c;进程活得好好的&#xff1b;应用日志里只有一行刺眼…

作者头像 李华
网站建设 2026/9/17 0:33:09

重庆暗线漏电排查实战:三级诊断法精准定位

1. 项目概述&#xff1a;暗线漏电不是“修修就好”&#xff0c;而是系统性风险排查工程在重庆老城区那些建于上世纪八九十年代的居民楼里&#xff0c;我见过太多次这样的场景&#xff1a;厨房插座一插电饭煲就跳闸&#xff0c;卫生间灯一开就闻到焦糊味&#xff0c;半夜墙内“滋…

作者头像 李华
网站建设 2026/9/17 0:32:37

Claude Code上下文控制机制解析与优化

1. Claude Code上下文控制机制解析最近在研究Claude Code的源码时&#xff0c;发现其上下文控制机制设计得非常精巧。作为一个对话系统的核心组件&#xff0c;上下文管理直接决定了AI助手能否保持连贯的对话体验。今天就来深入分析这套机制的实现原理和设计思路。Claude Code采…

作者头像 李华
网站建设 2026/9/17 0:32:11

电力系统稳定性分析与Matlab仿真实践

1. 电力系统稳定性分析的重要性与仿真价值电力系统作为现代社会运转的基础设施&#xff0c;其稳定性直接关系到供电质量和安全。去年某区域电网发生的大面积停电事故&#xff0c;事后分析报告指出根本原因就在于暂态稳定性不足。这种事故一旦发生&#xff0c;往往会造成数以亿计…

作者头像 李华
网站建设 2026/9/17 0:30:41

openCursor 游标方向教程:用 TaoToken 让 Codex 走通 nextunique 示例

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 0:25:35

DeskcommCRM:融合桌面端与通信的轻量级客户管理工具实践

1. 项目概述1.1 DeskcommCRM 到底是做什么的先说说我为什么会对 DeskcommCRM 感兴趣。做销售或者做客户运营的朋友应该都有这种感觉&#xff0c;每天的工作有一大半时间浪费在“切换工具”上&#xff1a;客户资料在Excel里&#xff0c;聊天记录在IM里&#xff0c;跟进任务在备忘…

作者头像 李华