惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
L
Lohrmann on Cybersecurity
aimingoo的专栏
aimingoo的专栏
V
V2EX
S
Security Affairs
T
Threatpost
C
CXSECURITY Database RSS Feed - CXSecurity.com
IT之家
IT之家
J
Java Code Geeks
The Register - Security
The Register - Security
U
Unit 42
C
CERT Recently Published Vulnerability Notes
月光博客
月光博客
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
The Blog of Author Tim Ferriss
Cisco Talos Blog
Cisco Talos Blog
Project Zero
Project Zero
S
Schneier on Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
D
DataBreaches.Net
博客园 - 司徒正美
V
Vulnerabilities – Threatpost
T
Tor Project blog
Security Latest
Security Latest
T
The Exploit Database - CXSecurity.com
T
Threat Research - Cisco Blogs
Scott Helme
Scott Helme
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
小众软件
小众软件
L
LangChain Blog
Attack and Defense Labs
Attack and Defense Labs
Recent Commits to openclaw:main
Recent Commits to openclaw:main
P
Palo Alto Networks Blog
A
Arctic Wolf
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 叶小钗
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 最新话题
MongoDB | Blog
MongoDB | Blog
Webroot Blog
Webroot Blog
H
Hacker News: Front Page
Know Your Adversary
Know Your Adversary
Spread Privacy
Spread Privacy
AWS News Blog
AWS News Blog
Engineering at Meta
Engineering at Meta

InfoQ - 促进软件开发领域知识与创新的传播

Meta 收购 Manus 这事儿泡汤了 5.5万 Star 开源项目 Ghostty 被迫出走,GitHub 正在终结一代技术人的乌托邦 Slack 长时运行多智能体系统的上下文管理方案 从 T+1 到分钟级:金城银行基于 Apache Doris 构建高可靠、强一致的实时数据平台 谷歌云推出 Agents CLI,简化 AI 智能体开发全流程 Claude官方击穿高薪、高学历的安全防线!Anthropic点名10大高危职业,但有群人暂时稳了 亚马逊云科技终止 WorkMail 服务,并将 App Runner 转入维护模式 OPPO小布记忆:全模态碎片化内容的理解与智能整理实践|AICon上海 模力工场038周AI应用周榜:工具在消失,工作流在出现 Akamai CEO Tom Leighton:Agent 时代来临,云基础设施正从“中心化”转向“分布式边缘” 日均数百亿入库背后:从“人肉调度”到K8s弹性架构,度小满金融基于OceanBase重构入库架构实践 百度文库网盘发布GenFlow 4.0:月活用户超1亿,要把网盘变成全端AI工作台 Altman 投的 Agent 终端 Warp 开源了!斩获3.5万star 哪些客户需要拒, 敢让龙虾决定吗?_AI&大模型_InfoQ 中文站_InfoQ精选视频 从开发到生产:为什么越来越多的机器学习团队纷纷迁移到 Snowflake | BUILD 2025_AI&大模型_王玮_InfoQ精选视频 探索多智能体工作流:LangGraph Snowflake Cortex AI | BUILD 2025_AI&大模型_王玮_InfoQ精选视频 腾讯云分布式缓存数据库:AI Agent - 从提示词工程到 Harness 工程 | 腾讯云数据库 DBTalk_腾讯_凌敏_InfoQ精选视频 基于 Streamlit 为 CSV 数据构建分析智能体 | BUILD 2025_AI&大模型_王玮_InfoQ精选视频 AI 智能体:告别文档缺漏 | BUILD 2025_AI&大模型_王玮_InfoQ精选视频 构建 AI 驱动的数据管道:深度探讨 Snowflake Openflow 与非结构化数据 | BUILD 2025_AI&大模型_王玮_InfoQ精选视频 云端太贵、本地不够聪明,英特尔押注“端云混合AI”:智能体PC会替人完成工作 不到10%的存储投入,可能拖垮90%的GPU投资!IBM把AI Agent塞进存储系统,算清企业最容易忽略的一笔账 Snowpark 上手实战 | BUILD 2025_大数据_王玮_InfoQ精选视频 ClickHouse + Langfuse,构建 Agent 可观测基石 腾讯云分布式缓存数据库:Cluster Proxy 共享连接架构深度解析 | 腾讯云数据库 DBTalk_腾讯_凌敏_InfoQ精选视频 AI 写代码太烧钱了:Copilot、Claude 一起涨价,不如把程序员请回来? 英特尔发布至强600系列工作站处理器与锐炫Pro B70 GPU,全新AI工作站来了 腾讯云分布式缓存数据库:从 Redis 到 Valkey - 开源社区如何快速创新 | 腾讯云数据库 DBTalk_腾讯_凌敏_InfoQ精选视频 印奇这次要“从0重做”智驾模型!首谈阶跃和千里双公司布局:中国AI商业闭环要靠车跑出来 从Cursor返聘归来,90后华裔女高管带Claude开启日更模式:token成本比工程师工资低多了! 从 Coding 到 Agent:QCon 北京 2026 全景复盘,优秀出品人 & 明星讲师名单揭晓 全链路支撑大模型国产化“Day 0适配”,商汤大装置构建全栈能力底座 凌晨,OpenAI 与亚马逊云科技史上最大联合发布来了 HashiCorp Vault 2.0 发布:引入新身份联邦机制,迈入 IBM 生命周期体系 Yelp 实现超 1,000 个 Cassandra 节点零停机升级 写了 17 年开源代码,我为什么认为 Coding Agents 堆功能是在瞎折腾? 基于 Apache Camel 编排智能体与多模态 AI 管道 面向智能体与人类用户的AI记忆系统:架构设计与核心场景实践|AICon上海 Anthropic 推出 Managed Agents,简化 AI 代理部署流程 阿里HappyHorse开启灰测,720P视频生成低至0.44元/秒 讯飞联合清华团队押注量子AI:不看营收、不设KPI,一群“无人区”科学家,抢夺下代AI算力入口 小米万亿模型全面开源:MIT 协议、1M 上下文,但还是打不过 DeepSeek Cortex Code 入门指南:面向数据工程师的实践路径 | 技术实践 openJiuwen社区首发Team Skills,定义Coordination Engineering新范式 用 Snowflake Cortex Agents 释放结构化数据的最大价值 | 技术实践 Grafana 利用 Kafka 对 Loki 进行了架构重构,并发布了一款命令行工具,旨在将可观测性引入编码代理 ClickHouse重构全文索引:对象存储上跑出高性能 Full-Text Search 可观测性和遥测技术如何提升软件工程实践 Dropbox 与 GitHub 合作,将单体库大小从 87GB 缩减至 20GB Agent 的下一站:基于长期记忆系统 EverOS 的自我演进|AICon上海 同一赛道,四种收费:Agent 控制层(Harness)开始分裂 Cloudflare Sandboxes 正式发布,为 AI 代理提供持久化隔离环境 Agent 的“记忆断片”困局,该怎么破?_AI&大模型_AICon 全球人工智能开发与应用大会_InfoQ精选视频 数据分析师如何快速建立在 AI 时代最值钱的能力:一份可落地的行动路线图 摩尔线程最新财报:研发占比超86%,万卡级大规模智算集群落地 当云区域失效:地缘动荡环境下的高可用重构 Slack 重构通知系统,设置参与度提升 5 倍 智能体工程的隐性技术债务 “我把所有模型都换成了DeepSeek V4”:月账单将降 90%,效果还更好 阿里云智能集团高级技术专家刘少伟已确认出席AICon上海站,并分享如何构建企业 Agent 的自动化行动架构 构建生产就绪的 tRPC API:Apollo Federation 的 TypeScript 替代方案 Anthropic推出面向Claude Code的基于智能体的代码审查功能 北京车展直击:斑马智能甩出车载Agent短剧,比亚迪率先落地,AI让智能座舱又热起来了 Snowflake 作为智能体运行时:从静态管道迈向自主数据系统 | 技术实践 Snowflake 上的本体体系:基于 Cortex Code 能力实现从架构到部署 | 技术实践 Cloudflare 公布 MCP 架构方案,应对企业面临的安全与治理风险 复杂的项目管理怎么做到「AI 友好」?飞书项目用「开放」给出答案 Snowflake Cortex Code 的规范驱动开发:将 SDLC 方法论引入 AI 辅助工作流 | 技术实践 Copilot 不让注册了:从“随便用”到“全面限”,agent 把原有订价模型顶穿了 当互联网用AI卷效率时,这家公司先问了一连串“能不能” Meta 开始记录员工每一次点击:AI 要接管工作,先监控会工作的人 Meta“Token榜”逼疯打工人,一夜烧掉公司几万刀!AI时代Token焦虑越来越离谱 智源FlagOS完成DeepSeek-V4-Flash在八款芯片Day0适配,实现三重技术突破 DeepSeek V4 重磅开源!首次打通华为Ascend,也没丢掉英伟达,百万上下文夺回国产模型话语权 李志飞的“新实验”:当超级个体撞上真实组织 GPT-5.5 登顶时刻,Anthropic 亲口承认 Claude 变笨了!网友群嘲:太敷衍 那些没空写的小需求,龙虾真能做吗?_AI&大模型_InfoQ 中文站_InfoQ精选视频 从 Pandas 到生产:使用任意 IDE 进行可扩展的 ML 数据管道与分布式处理 | BUILD 2025_AI&大模型_王玮_InfoQ精选视频 pnpm 11 候选版本发布,带来 ESM 分发、供应链默认设置以及新的存储格式 银行业PDF表格提取方案重构:基于Java的分层方案 GPT-5.5 赢了 Opus 4.7 和 Mythos?奥特曼晒黄仁勋内部信:英伟达全员用上 Codex! Cloudflare 推出 Think:一款面向 AI 代理的持久化运行时 1850亿美元天价支出、75%代码由AI生成!谷歌正式宣告:全面转向智能体工作流 xAI落后太多,马斯克“开大”重金求购Cursor,100亿美金“分手费”都敢签! Pulumi 新增对 Bun 运行时的全面支持 姚顺雨腾讯模型首秀!不卷参数只做 “听话打工人”,Hy3 preview登场 | 附实测 老板让你“忽悠”投资人,你敢发给龙虾吗?_AI&大模型_InfoQ 中文站_InfoQ精选视频 Gemini CLI 引入子代理机制,实现任务委派与并行代理工作流 清华系团队星工聚将完成数千万天使轮融资,轮式机器人拿下头部制造企业亿级大单 Pretext.js 绕过 DOM 布局重排,实现 120 FPS 的高级交互体验 靠“AI 云”爆红的 Vercel,栽在一个第三方AI工具手里!IPO前夕遭黑,200万美元赎金谈崩? 高能研讨会|端侧 AI 正在重写实时感知效率上限_AI&大模型_王玮_InfoQ精选视频 2050大会看这篇就够了|报名、交通食宿指引大全 Java 近期资讯:OpenJDK JEP、Jakarta EE 12、Spring Framework、Micrometer、Camel、JBang 金融智能的架构编排:基于 Snowflake Cortex Agents 实现结构化与非结构化数据统一分析 | 技术实践 在AK大神爆火的任务里,摸清国产AI真实水平 百灵Ling-2.6-flash 正式发布:高 Token 效率,以 1/10 消耗实现 SOTA 级 Agent 能力 当 PM 懂AI,当技术懂产品:AI 时代产品力的双向进化|PM x AI产品力领航者大会即将开幕 为 AI 智能体设计记忆机制:揭秘 LinkedIn 的认知记忆智能体 获奖名单公布|2026主题征文第一期|分享你最有价值的龙虾场景与核心 Skill_热门活动_InfoQ写作社区官方_InfoQ写作社区
基于 Snowflake Semantic View 构建自助式报表数据集市 | 技术实践
Sabrina Liu王玮张琰梓 · 2026-05-27 · via InfoQ - 促进软件开发领域知识与创新的传播

2026 年,智能体将在企业级应用中取得哪些实质性突破?点击下载《2026 年 AI 与数据发展预测》白皮书,获悉专家一手前瞻,抢先拥抱新的工作方式!

业务用户总是想要新的东西,而且想要得很快。今天上午按区域拆分,午饭后按季度看趋势,下班前按部门做透视。传统的请求、开发、测试和部署周期根本跟不上现代分析需求的节奏。如果我们把交付的概念改成一个始终可用、并且保留完整审计轨迹的自助式报表集市,会怎样?

本文介绍了一种创新方法,可以在 Snowflake 中以极低的管理开销自动处理大多数临时报表请求。通过将 Snowflake Semantic Views 与 Streamlit 界面结合起来,我们把报表创建的能力直接交到业务用户手中。无需提交工单,无需等待。

这个解决方案的亮点如下。设置大约只需要五分钟。只需克隆代码仓库并部署到你的 Snowflake 账户。业务用户可以通过直观的 UI 自助使用。报表可以即时交付、完全可配置,并且系统会记住用户创建过的每一份报表,方便以后访问。

该解决方案利用了多项 Snowflake 原生能力。Snowflake 中的 Streamlit 提供应用层。Semantic Views 提供驱动 UI 的结构化元数据。Cortex Analyst 支持一个可选的自然语言 Agent。而整个解决方案都是使用 Snowflake Cortex Code 编写的,这是 Snowflake 自家的 agentic AI 编码助手。

所需访问权限

这个解决方案涉及两个角色:一个用于部署和维护应用的开发者角色,以及一个供业务用户使用应用的用户角色

开发者角色权限

开发者角色需要以下权限来创建和管理 Streamlit 应用、semantic views、sequences 以及底层对象。这里假设该角色已经对所需的数据库、schema 和 warehouse 拥有 USAGE 权限,并且对所需的报表表和 semantic views 拥有 SELECT 权限。

-- Set these session variables before runningSET dev_role = 'YOUR_DEV_ROLE';SET use_database = 'YOUR_DATABASE';SET use_schema = 'YOUR_SCHEMA';SET app_schema = $use_database || '.' || $use_schema;-- Object creation privilegesGRANT  CREATE TABLE, CREATE SEQUENCE, CREATE SEMANTIC VIEW, CREATE STREAMLITON SCHEMA IDENTIFIER($app_schema) TO ROLE IDENTIFIER($dev_role);-- Cortex Analyst (for the optional Cortex Agent tab)GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE IDENTIFIER($dev_role);

复制代码

使用开发者角色在应用 schema 中配置以下 sequence 对象和主配置表,用于记录保存:

-- Sequence for report IDs (create once, shared among all users)CREATE SEQUENCE IF NOT EXISTS REPORT_MART_CONFIG_SEQ    START = 1 INCREMENT = 1;-- Master config history table (shared audit log)CREATE TABLE IF NOT EXISTS REPORT_MART_MASTER_CONFIG_HISTORY (    REPORT_ID          NUMBER(38,0),    REPORT_NAME        VARCHAR(500),    REQUEST_TIMESTAMP  TIMESTAMP_LTZ DEFAULT CURRENT_TIMESTAMP(),    REQUEST_USER       VARCHAR(255) DEFAULT CURRENT_USER(),    SEMANTIC_VIEW      VARCHAR(500),    TABLE_NAME         VARCHAR(500),    TIME_DIMENSION     VARCHAR(255),    START_DATE         VARCHAR(20),    END_DATE           VARCHAR(20),    AGG_WINDOW         VARCHAR(20),    GROUP_COL          VARCHAR(255),    EXCLUDE_VALS       VARCHAR(2000),    MEASURES           VARCHAR(2000),    AGGREGATION        VARCHAR(50),    INCLUDE_NULLS      BOOLEAN,    CHART_TYPE         VARCHAR(50),    SHOW_ALL_AVAILABLE BOOLEAN,    ADD_ACCUMULATIVE   BOOLEAN,    GENERATED_SQL      TEXT,    ACTION             VARCHAR(10));

复制代码

用户角色权限

用户角色需要以下权限来运行 Streamlit 应用、查询表和 semantic views,并将报表配置保存到自己的个人配置表中。这里同样假设该角色已经像开发者角色一样具备必要的 USAGESELECT 权限。

用户角色需要能够创建基于用户的报表配置表,在个人配置表中追加/移除记录,并在主配置表中追加记录。在这个演示中,sequence 对象和主配置表名称都硬编码在应用定义中。

-- Set these session variables before runningSET user_role = 'YOUR_USER_ROLE';SET tbl_conf = $app_schema||'.REPORT_MART_MASTER_CONFIG_HISTORY';SET seq_conf = $app_schema || '.REPORT_MART_CONFIG_SEQ';SET app_name = $app_schema || '.' || 'YOUR_APP_NAME';-- Create personal config tables (one per user)GRANT CREATE TABLE ON SCHEMA IDENTIFIER($app_schema) TO ROLE IDENTIFIER($user_role);-- Write access for personal config tablesGRANT INSERT ON TABLE IDENTIFIER($tbl_conf)TO ROLE IDENTIFIER($user_role);-- Sequence usage for report IDsGRANT USAGE ON SEQUENCE IDENTIFIER($seq_conf) TO ROLE IDENTIFIER($user_role);-- Streamlit app usage (grant after app is deployed)GRANT USAGE ON STREAMLIT IDENTIFIER($app_name) TO ROLE IDENTIFIER($user_role);-- Cortex Analyst (for the optional Cortex Agent tab)GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE IDENTIFIER($user_role);

复制代码

为什么使用 Semantic View?

Snowflake Semantic View 是一个 schema 级对象,它把表元数据组织成一个结构化的 YAML 定义。它将列分类为维度、时间维度和事实(度量),并为每个列提供数据类型和描述。可以把它理解为一份契约,用来描述你的表包含什么内容,以及应该如何使用这些内容。

Semantic Views 最初是为支持 Cortex Analyst 而设计的,Cortex Analyst 是 Snowflake 的自然语言查询引擎。你将 Cortex Analyst 指向一个 semantic view,它就会使用元数据来理解你的数据、生成准确的 SQL,并用自然语言回答业务问题。

在这个解决方案中,我们采用了不同的方法。我们解析 semantic view 的 YAML,动态填充 Streamlit UI。维度变成分组选择器。时间维度变成日期范围筛选器。事实变成度量复选框。最终得到的是一个通用、可配置的界面,可以适用于任何表——所有这些都由结构化元数据驱动。

在 Snowflake 中创建 semantic view 有几种方式:

  1. 从 Snowsight UI 创建——在 Snowsight 对象浏览器中导航到一张表,并使用内置向导以可视化方式定义维度、时间维度和事实。对于偏好点击式体验的用户来说,这是最容易上手的选项;

  1. 直接从 YAML 创建——手动编写 semantic model YAML(或从其他工具导出),并使用 CREATE SEMANTIC VIEW FROM YAML '' 进行部署。这让你可以完全控制列描述、表达式和自定义指标;

  1. 使用 Snowflake Cortex Code——Snowflake 的 AI 编码助手内置了 semantic view 技能,可以通过交互方式引导你完成整个流程。它会发现你的表,让你验证和编辑 YAML,并部署 semantic view——所有步骤都在一次对话中完成。这也是我们在这个演示中采用的方法。

完整文档请参阅 Snowflake 文档:https://docs.snowflake.com/en/user-guide/views-semantic/overview

自助服务门户

由于每个 semantic view 都遵循相同的结构——维度、时间维度和事实——我们可以解析该 YAML,并将其输入到一个 Streamlit 模板中。应用在运行时使用 SYSTEM$READ_YAML_FROM_SEMANTIC_VIEW 函数读取 semantic view,提取列分类,并动态构建参数控件。无需硬编码,也无需针对特定表编写逻辑。

部署说明

为了让这个演示易于复现,完整代码解决方案已经发布在 GitHub 上。整个应用只有一个文件:app.py。部署它有两个简单选项。

第一个选项是直接复制粘贴——在 Snowsight 中,导航到 Projects > Streamlit,点击 + Streamlit App,选择你的数据库、schema 和 warehouse,然后将 app.py 的内容粘贴到编辑器中并点击 Run。在左侧面板的包列表中添加 plotlypyyaml,或提供 environment.yml 文件来指定依赖项。

第二个选项是使用 Snowflake Cortex Code(CoCo)部署应用。只需把文件路径(本地或 GitHub)提供给 CoCo,并告诉 CoCo 将应用部署到你的目标数据库和 schema,它就会生成部署清单,并一步完成应用推送。

给出的示例解决方案还支持在需要自定义调整时在本地测试 Streamlit 应用。它会自动检测环境类型(SnowSight 或本地),并相应选择连接上下文。

虚拟测试对象

在这个演示中,我们创建了一个名为 REPORT_TABLE 的 transient table,包含 30 个列,覆盖多种数据类型。它包括一些具有不同基数的分类维度,一些表示财务度量的数值列,比如 REVENUECOST,若干时间列,以及一些包含半结构化数据类型的列。然后插入了 10,000 行合成数据,用于模拟真实的报表场景。

create or replace TRANSIENT TABLE REPORT_TABLE ( REPORT_ID NUMBER(38,0) autoincrement start 1 increment 1 noorder, REPORT_NAME VARCHAR(255), DESCRIPTION VARCHAR(16777216), CREATED_DATE DATE, UPDATED_TIMESTAMP TIMESTAMP_NTZ(9), SUBMITTED_AT TIMESTAMP_LTZ(9), IS_ACTIVE BOOLEAN, STATUS VARCHAR(50), PRIORITY NUMBER(2,0), CATEGORY VARCHAR(100), REGION VARCHAR(50), COUNTRY_CODE VARCHAR(3), DEPARTMENT VARCHAR(100), ASSIGNED_TO VARCHAR(255), CUSTOMER_EMAIL VARCHAR(320), REVENUE NUMBER(18,2), COST NUMBER(18,2), DISCOUNT_PERCENT FLOAT, QUANTITY NUMBER(38,0), UNIT_PRICE NUMBER(12,4), TAX_RATE FLOAT, TOTAL_AMOUNT NUMBER(18,2), RATING NUMBER(38,0), WEIGHT_KG FLOAT, NOTES VARCHAR(16777216), TAGS ARRAY, METADATA VARIANT, ADDRESS OBJECT, START_TIME TIME(9), BINARY_ATTACHMENT BINARY(8388608));

复制代码

随后,我们在这张表之上创建了一个名为 REPORT_TABLE_SV 的 semantic view。该 semantic view 的 YAML 将 30 个列组织成三类:用于分组的维度(例如 REGIONDEPARTMENT、STATUS)、用于日期筛选的时间维度(例如 CREATED_DATEUPDATED_TIMESTAMP),以及用于聚合的事实(例如 REVENUECOSTTOTAL_AMOUNT)。演示 YAML 文件也包含在 GitHub 仓库中。

浏览 Streamlit 应用

该应用分为三个标签页。Self-Service 标签页用于让用户选择 semantic view、配置参数,并即时生成报表。Report Mart 标签页以可视化网格显示所有之前保存的报表——这是一个跨会话持久保存的个人仪表板。Cortex Agent 标签页提供由 Cortex Analyst 支持的自然语言聊天界面,用于自由探索数据。

从 YAML 到 UI

应用会发现你在不同数据库和 schema 中有权访问的所有 semantic views,并将它们列在一个下拉菜单中。选择一个后,YAML 会显示在应用的可展开面板中——该 YAML 会被解析,每种列类型都会直接映射到一个 UI 控件。

时间维度会变成日期范围选择器,包含开始日期、结束日期和聚合窗口(日、周、月)。维度会填充到分组下拉菜单和排除筛选器中。事实会变成度量列表,并驱动聚合方法选择器(SUM、AVG、COUNT、MAX 等)。最终结果是一个完全动态的界面——切换到不同的 semantic view,整个表单就会自动重新配置。

动态查询组合

当你点击“Generate Report”时,应用会接收你选择的所有参数,并动态组合一条 SQL 查询。它会根据你选择的度量和聚合方法构建 SELECT 子句,根据维度和时间窗口添加 GROUP BY,应用日期范围筛选器,并排除你选择的任何分类值。

生成的 SQL 会显示在一个可展开面板中,便于查看和复制;查询结果会立即以数据表和交互式图表两种形式呈现,并带有下载按钮,可将数据导出为 CSV。

可视化报表预览

在数据表下方,应用会使用查询结果和你的配置选择渲染一个交互式图表。图表类型——柱状图、折线图、箱线图或瀑布图——从侧边栏选择,并且应用会根据你的参数智能默认:当启用时间维度时默认使用折线图,否则默认使用柱状图。分组维度会添加颜色编码,单一度量报表会为每个类别使用不同颜色。

在提交到 Report Mart 之前,你可以检查并调整输入,确保每份保存的报表都完全符合你的预期。

一键保存

当你对可视化结果满意后,点击“Add Visual to Report Mart”,系统会弹出一个对话框提示你为报表命名。默认名称会根据聚合方法和所选度量自动建议——例如 “Sum of Revenue”。你可以编辑名称,也可以保留默认名称,然后点击“Save”以持久保存完整配置。所有参数、图表类型和生成的 SQL 都会一步写入你的个人配置表。该报表现在会永久出现在 Report Mart 标签页中。

Report Mart

Self-Service 标签页允许你即时配置并渲染报表。但当你离开页面或刷新页面时,配置就会消失。Report Mart 通过将每份报表的完整配置——参数、图表类型和生成的 SQL——持久保存到个人配置表中来解决这个问题。下次你打开应用时,你的报表已经在那里了。

每个用户都会获得自己的个性化配置表,表名为 REPORT_MART_CONFIG_。该表会在用户第一次保存报表时自动创建——无需管理员设置。它会存储复现报表所需的一切信息:semantic view 引用、时间范围、分组列、度量、聚合方法、图表类型以及生成的 SQL 查询。下面是个人配置表的 DDL:

CREATE TABLE IF NOT EXISTS REPORT_MART_CONFIG_<current_user> (    REPORT_ID NUMBER(38,0) DEFAULT REPORT_MART_CONFIG_SEQ.NEXTVAL,    REPORT_NAME VARCHAR(500),    REQUEST_TIMESTAMP TIMESTAMP_LTZ DEFAULT CURRENT_TIMESTAMP(),    REQUEST_USER VARCHAR(255) DEFAULT CURRENT_USER(),    SEMANTIC_VIEW VARCHAR(500),    TABLE_NAME VARCHAR(500),    TIME_DIMENSION VARCHAR(255),    START_DATE VARCHAR(20),    END_DATE VARCHAR(20),    AGG_WINDOW VARCHAR(20),    GROUP_COL VARCHAR(255),    EXCLUDE_VALS VARCHAR(2000),    MEASURES VARCHAR(2000),    AGGREGATION VARCHAR(50),    INCLUDE_NULLS BOOLEAN,    CHART_TYPE VARCHAR(50),    SHOW_ALL_AVAILABLE BOOLEAN,    ADD_ACCUMULATIVE BOOLEAN,    GENERATED_SQL TEXT);

复制代码

为了展示 Report Mart 体验,我们从演示表中生成了多种不同配置的示例报表——按区域查看收入的柱状图、月度成本趋势折线图、按区域查看数量的瀑布图、按状态查看平均评分,等等。这让你能够真实地看到一个已填充的 Report Mart 会是什么样子,其中混合了不同图表类型、聚合方法和分组维度。

Report Mart 标签页会从你的配置表中加载所有已保存的报表,并以三列可视化网格呈现。每张卡片都会显示图表,并以报表名称作为标题。每张图表下方有四个操作按钮:Refresh 会用最新数据重新运行查询,Download 会将结果导出为带时间戳的 CSV,Query 会切换显示已保存的 SQL 供检查,Remove 会在永久删除报表前打开确认对话框。

添加 Cortex Agent

除了结构化的 Self-Service 门户之外,应用还包含一个由 Snowflake Cortex Analyst 支持的 Cortex Agent 标签页。这为用户提供了一个对话式界面,让他们可以自由探索自己的数据。该 Agent 使用在 Self-Service 标签页中选择的同一个 semantic view,因此无需任何额外配置,它就能理解表结构、列含义和关系。

Cortex Agent 可以回答各种分析问题。你可以让它按类别汇总总计,按任意度量查找排名靠前的记录,识别随时间变化的趋势,或并排比较不同分段。它会自动生成 SQL、执行查询,并通过自动生成的图表显示结果。动态建议按钮——根据 semantic view 中的实际维度和度量生成——可以帮助用户立即从相关问题开始探索。

使用 Snowflake Semantic Views、Streamlit 和 Cortex Analyst 构建。使用 Cortex Code 编写。

原文地址:https://medium.com/snowflake/build-a-self-service-report-mart-with-snowflake-semantic-view-825b57ac76b2

点击链接立即报名注册:Ascent - Snowflake Platform Training - China更多 Snowflake 精彩活动请关注专区