AI 成为 AI 产业观察信号
AI-powered BI with Snowflake and Amazon Quick: One dashboard shows 42,000 active movie view counts while another shows 38,500. Your chat agent references a third number entirely. Data teams spend hours reconciling number

正文
一个仪表板显示 42,000 次活跃电影观看量,另一个却显示 38,500。你的聊天智能体引用的是完全不同的第三个数字。数据团队花费数小时去对齐这些数字,而不是回答战略问题,分析信任也随之被侵蚀。
这是我们在许多组织中都会看到的一种模式。团队花在对齐数字上的精力,往往比真正使用这些数据还多,这在不知不觉中拖慢了决策速度,也削弱了人们对数据的信心。
根本原因通常是最后一公里的缺口:业务逻辑存在于各个单独的应用中,而不是位于数据层,让所有应用都能共享它。
基于 Snowflake semantic views 的 Amazon QuickSight 数据集弥补了这一缺口。semantic view 是 Snowflake 的一种 schema 对象,它会将业务定义(表、关系、指标和维度)直接附加到数据上。任何查询 semantic view 的下游应用都会继承这些定义,因此 AI 和 BI 系统都能以一致的方式解读信息。这带来了更可信的答案,并显著降低 AI 幻觉的风险。
你可以在 Cortex Analyst 中使用 semantic views,也可以在 `SELECT` 语句中查询这些视图。你还可以在私有列表中共享 semantic views。作为 Snowflake 的原生 schema 对象,semantic views 具备对象级访问控制。你可以像对 tables 和 views 一样授予或限制使用和查询权限,从而支持在 SQL、BI 和 AI 端点上开展经过授权和治理的使用。关于如何编写 Semantic SQL,你可以阅读 Snowflake 文档中的相关说明。
在这篇文章中,你将学习如何构建 Snowflake semantic views 与 Amazon Quick 之间的端到端集成。示例数据是某媒体公司的用户评论数据。你首先将来自 Amazon Simple Storage Service (Amazon S3) 的电影评论数据加载到 Snowflake 中,然后用 SQL 定义一个 semantic view 来补充业务含义,再通过 Cortex Analyst 使用自然语言查询来探索它,最后生成一个 Amazon Quick dataset 和 dashboard。这个 dataset 可以手动创建,也可以通过提供的自动化脚本创建。到最后,你的 BI 团队或 AI 团队就可以针对受治理的数据层提出自然语言问题,并确信每一次响应都反映的是同一套业务逻辑。
图 1:端到端架构——数据从 Amazon S3 流入 Snowflake,在那里 semantic view 负责治理业务定义,从而支持 Cortex Analyst 的自然语言查询以及 Amazon Quick Sight dashboards。
这套集成利用 Snowflake 的原生能力,将结构化的电影评论数据直接从 Amazon S3 摄取到数据库 schema 中。随后,你用 SQL 定义一个包含表关系、维度和指标的 Snowflake semantic view,以增强 AI 驱动的分析能力。语义模型从单独的 AI 或 BI 层转移到核心数据平台,因此所有工具都使用同一套语义概念。
这篇实操将使用一个电影评论数据集来演示该集成。该数据集包含三张表(`MOVIES`、`USERS` 和 `RATINGS`),你会先将它们从 Amazon S3 加载到 Snowflake 中。在这些表之上,你再定义一个 semantic view,把原始列映射为更贴近业务语义的指标和维度。
图 2:Snowflake semantic view 会为原始表添加业务上下文(指标、维度和关系),从而为 AI 和 BI 工具创建一个共享的定义层。
这项集成让 BI 团队能够使用自然语言来创建交互式图表和仪表盘、构建计算字段、开发数据故事并进行假设分析,同时显著降低 AI 幻觉的风险。BI 团队还可以将这个来自 Snowflake 的仪表盘集成到 Amazon Quick Movies Quick Space 中,以启用检索增强生成(RAG)。
在开始之前,请确保已具备以下条件:
Snowflake 在 AWS 上的 Enterprise 账户。如果您还没有,请注册一个 Snowflake 试用账户,并选择 AWS 上的 Enterprise。
Snowflake 中的 ACCOUNTADMIN 角色访问权限。创建语义视图并授予对象级权限需要此角色。
AWS 账户。如果您还没有,请创建一个 AWS 账户。
AWS 区域需保持一致。请在 AWS US West(Oregon)或 US East(N. Virginia)注册这两个账户。Amazon Quick Sight 可在 US East(N. Virginia)、US West(Oregon)、Asia Pacific(Sydney)和 Europe(Ireland)使用。有关最新区域可用性,请参阅 Amazon Quick 文档。
具备基本的 SQL 和 Python 知识。你会在 Snowsight(Snowflake 的网页界面)中运行 SQL 语句,并在 AWS CloudShell 中运行一个基于 Python 的脚本。
熟悉表、维度和指标等数据分析概念。
时间投入:请预留 60–90 分钟完成本教程的全部内容。
预计费用:本教程仅使用少量资源。AWS 和 Snowflake 的合计费用预计低于 10 美元。
你可以使用 Snowsight(Snowflake 的网页界面)导入并运行提供的 notebook。该 notebook 会创建所需的计算 warehouse、数据库和 schema,然后加载电影评论数据,因此你不需要手动运行初始化 SQL。
要开始,请先将预置的教程 notebook 导入到你的 Snowflake 环境中,这样你就可以交互式地跟着操作。
从 GitHub 仓库的 assets 文件夹中下载 `SF_Quick_Quickstart.ipynb` notebook。
在 Snowsight 中,依次选择加号(+)、Notebook、Import,然后选择刚下载的 notebook 文件。
接受默认设置,然后选择在 Warehouse 上运行。笔记本默认使用 SYSTEM$STREAMLIT_NOTEBOOK_WH(一个系统提供的计算资源),但你也可以从下拉菜单中选择其他仓库。该笔记本会为本教程创建一个名为 WORKSHOPWH 的新仓库。
图 3:展示如何使用 plus (+) 菜单在 Snowsight 中导入笔记本的图片。
图 4:展示选择“在 Warehouse 上运行”选项,以及在创建笔记本时选择计算仓库的图片。
创建笔记本后,你可以在笔记本设置中选择不同的仓库。更多信息请参阅 notebook settings。
Snowflake Notebooks 预装了常见的 Python 库——`numpy`、`pandas`、`matplotlib` 等。若要添加其他包,请点击 notebook 右上角的 Packages 下拉菜单。
按顺序运行所有单元格。notebook 会配置 `WORKSHOPWH` warehouse,并将电影评论数据加载到 `MOVIES` 数据库中。每个单元格执行完成后,你会在其下方看到确认输出。
检查设置:在运行完所有单元格后,确认你能在 `MOVIES.PUBLIC` schema 中看到三张表:`MOVIES`、`USERS` 和 `RATINGS`。
故障排查:如果某个单元格执行失败,请确认你使用的是 `ACCOUNTADMIN` role。你可以在 notebook 或 worksheet 顶部通过以下方式设置:
图 5:运行所有 notebook 单元,将数据加载到 MOVIES 数据库中。
所有单元成功运行后,找到 Get_SV_DDL 单元。该单元会执行以下 SQL,以获取语义视图的 DDL:
重要提示 运行 Get_SV_DDL 单元后,选择“Download as CSV”,并将文件保存为 SF_DDL.csv。你需要在第 4 步中使用此文件,自动生成 Amazon Quick Sight 数据集。如果跳过这一步,数据集生成器将无法解析你的 schema。
图 7:选择“Download as CSV”以保存 SF_DDL.csv——Amazon Quick Sight 数据集生成器所需。
在语义视图创建完成后,你就可以立即开始用自然英语查询数据——无需 SQL。此步骤用于在连接 Amazon Quick Sight 之前验证语义层是否正常工作。
在 Snowsight 中,从导航窗格选择 AI & ML。
选择你之前创建的 `SEMANTIC_QUICK_START_ROLE`,以确认自己拥有正确的权限。
导航到 `Movies` 数据库,然后进入 `Public` 模式,选择 `MOVIES_ANALYST_SV` 语义视图以检查其结构。
图 8:Snowsight 的 AI & ML 部分中可见的 MOVIES_ANALYST_SV 语义视图。
已验证查询是带有已确认正确答案的示例问题。它们会在 Cortex Analyst 回答措辞相近的问题时提供参考,从而提升准确性并降低查询延迟。在测试自然语言问题之前,至少添加一条已验证查询。
例如,通过确认 Cortex Analyst 生成了正确的 SQL,来验证“2023 年所有电影的平均评分是多少?”。当用户随后提出一条措辞相近的问题时,Cortex Analyst 会先将其与已验证查询进行匹配。
图 9:在 Snowsight 中添加已验证查询,以提升 Cortex Analyst 的准确性。
尝试以下示例问题,以确认语义视图能够正确响应:
按电影标题显示评分总值。
列出有史以来最受欢迎的前 10 部电影。
图 10:Cortex Analyst 使用你的语义视图定义,将自然语言问题转换为 SQL。
如需直接使用 SQL 查询语义视图,请参考 Snowflake 文档中的语义视图查询示例。
既然你的数据已经在 Snowflake 中完成语义定义,接下来就可以将其连接到 Amazon Quick Sight,用于交互式仪表板。随附的 Quick Sight Dataset Generator 脚本可自动完成从 Snowflake DDL 到可直接查询的 Quick Sight 数据集的整个流程。
可从 GitHub 仓库下载完整解决方案。按照 README.md 中的说明连接到 Snowflake,获取语义视图定义,将其转换为 Quick dataset schema,并创建 Quick dataset。这些 Python 脚本是交互式的,并带有自引导提示。
如果不想在本地运行 Python 脚本,也可以直接在 AWS CloudShell 中运行提供的 bash 和 Python 脚本,以安全存储凭证,并通过命令行交互式创建一个完整配置的 Quick Sight 数据集,其中还包含 SPICE ingestion。
从 GitHub 仓库下载 `Solution_Package.zip`。然后打开 AWS 管理控制台并启动 AWS CloudShell。在 CloudShell 中通过“Actions → Upload file”选项上传 `Solution_Package.zip`。
图 11:通过“Actions”菜单将 `Solution_Package.zip` 上传到 AWS CloudShell。
按顺序执行以下步骤。
解压并进入该目录:`unzip Solution_Package.zip` `cd Solution_Package`
上传你从 Snowflake 笔记本下载的 `SF_DDL.csv` 文件(即语义视图上 `GET_DDL` 的输出)。
创建一个 AWS 密钥。将你的 Snowflake 凭证(account identifier、username 和 password)存储为 AWS Secrets Manager secret。脚本在创建 Quick Sight 数据源时会引用这个 secret。`python create_secret.py`
运行交互式工作流。创建好 secret 后,运行单个交互式脚本:`python run_workflow.py`
交互式工作流脚本会引导你选择或创建 Snowflake 数据源,配置新的或现有的数据集,解析你的 `SF_DDL.csv` 以生成 Quick Sight schema,创建或更新带有 SPICE ingestion 的数据集,并监控 ingestion 进度直到完成。你也可以在 Quick Sight 控制台中查看 ingestion 状态,并将数据集共享给其他 Quick Sight 用户。
摄取完成后,打开 Amazon Quick Sight 控制台并进入 Datasets。选择 `movie-analytics-dataset`,确认数据已正确加载,然后点击 Create analysis 开始构建。
用自然语言提问进行探索
提出你在 Cortex Analyst 中测试过的同样的自然语言问题。Quick Sight 会自动生成对应的可视化。可以先试试这些示例问题:
“Show me the highest-rated movies”——生成一张按平均评分对电影排名的柱状图。
“哪些是评论数最多的前 10 部电影?”——按评论数量显示一个排名列表。
“各个类型的评分分布如何?”——按类型生成一份拆分结果。
“展示评分随时间变化的趋势”——创建一张评分活动的折线图。
“哪些用户提交的评论最多?”——突出显示最活跃的评论者。
可以尝试用后续问题继续深入挖掘。例如,在看到评分最高的电影后,可以试着问“只筛选喜剧类型”或“显示过去 6 个月的评分”。
使用语义层创建计算字段
由于语义视图已经定义了核心指标和维度,你可以在 Quick Sight 中使用建立在这些受管定义之上的计算字段来扩展分析。例如:
在分析中,选择 Add,然后选择 Add calculated field。
使用如下公式创建一个名为 `rating_category` 的字段:`ifelse({user_rating} >= 4, 'High', {user_rating} >= 2.5, 'Medium', 'Low')`
使用这个新字段对可视化进行分组,例如用饼图展示 High、Medium 和 Low 评分所占的比例。
这种做法既能保持基础指标的一致性(继承自 semantic view),又能让分析师灵活添加派生字段,以满足特定使用场景。
核对 Cortex Analyst 和 Quick Sight 之间的数值是否一致
为了建立对语义层按预期工作的信心,请在两个工具之间对比结果:
在 Cortex Analyst 中,询问:“评分最高的 5 部被评论最多的电影的平均评分是多少?”
在 Quick Sight 中,提出同样的问题,或者使用相同的筛选条件创建一个表格可视化。
确认数值一致:由于两个工具查询的是同一个语义视图,它们应返回完全相同的结果。
如果你发现不一致,请检查以下几点:
确认是否有额外的筛选条件或行级安全规则只在其中一个工具中生效,而另一个没有。
确认两个工具使用的是相同的聚合逻辑(例如,平均值与中位数的比较)。
这一步交叉验证强化了核心价值主张:单一语义层无论由哪个工具发起查询,都能提供一致的答案。
图 12:基于针对 Snowflake 语义视图数据集的自然语言查询生成的 Amazon Quick Sight 柱状图。
图 13:另一张 Amazon Quick Sight 可视化图表,展示最受欢迎的电影,由同一受管数据层驱动。
演示结束后,完成以下清理步骤:
Snowflake 清理:使用 DROP DATABASE 命令删除 MOVIES 数据库。这是最快的“批量”操作。然后删除 warehouse。DROP DATABASE IF EXISTS ; -- 最佳实践:先 suspend,让查询完成,再删除 ALTER WAREHOUSE IF EXISTS SUSPEND; DROP WAREHOUSE IF EXISTS ;
移除密钥:在 AWS Secrets Manager 中,管理访问权限并移除所选密钥。
删除数据源:前往 Quick Sight 中的 Datasets,并删除任何数据集或数据源。
删除分析和仪表板:在 AWS Management Console 中手动删除仪表板、分析和数据集。
在这篇文章中,我们演示了如何构建 Snowflake semantic views 与 Amazon Quick Sight 之间的端到端集成。你将电影评论数据加载到 Snowflake 中,定义了一个 semantic view 以建立一致的业务定义,使用 Cortex Analyst 的自然语言查询验证了这些定义,并将数据连接到 Amazon Quick Sight 以创建交互式仪表板。
现在你已经有了可用的基础,不妨从以下几个方向继续扩展:
扩展语义视图。添加更多指标、维度或已验证的查询,以覆盖更多业务问题。更丰富的定义有助于提升 Cortex Analyst 对类似表述问题的准确性。
将这一模式应用到你自己的数据上。把电影评论数据集替换为你组织在 Amazon S3 中的数据。相同的 notebook 和生成器工作流适用于任何表格数据集。
在团队之间共享语义视图。Snowflake semantic views 是原生 schema 对象,并具备对象级访问控制。你可以像对 tables 和 views 一样授予或限制使用,从而支持在 SQL、BI 和 AI 端点上经过授权、受治理的使用。
探索 Amazon QuickSight 的高级功能。构建计算字段,创建数据故事,并运行假设分析,以更深入地挖掘语义层所支持的洞察。
在私有列表中共享语义视图。通过 Snowflake Data Sharing 私有列表发布语义视图,将受治理的数据集分发给其他 Snowflake 账户。
了解更多开放语义标准。Snowflake 通过 Open Semantic Interchange(OSI)倡议联合行业领袖,释放 AI 的潜力;这一协作致力于创建一个与供应商无关的语义数据标准。
用你自己的数据试试这个集成,并在评论中分享你的体验。如果你有问题或反馈,AWS 和 Snowflake 社区随时可以提供帮助。
AI解读
这是一条雷达解读:它可能反映 AI 产品、开发者工具、模型基础设施或研究方向的新变化。
对开发者来说,可以作为后续选题、产品观察或技术调研的线索。
建议打开原文核对细节,并观察是否有同类信号在其他来源重复出现。