Semantic View 概述

什么是 Semantic View

Semantic View(语义视图)解决了一个核心矛盾:业务用户描述数据的方式与数据在数据库中实际存储的方式之间存在巨大落差。

例如,关键的业务概念"总收入"在数据库中可能被存储为名为

total_amt
total_amt
的列,业务用户很难从列名直观理解其业务含义。如果"净收入"在公司内部始终定义为折扣后的总收入,语义视图可以将其一致地定义为一个带有正确聚合逻辑的指标:
SUM(total_amt * (1 - discount_rate))
SUM(total_amt * (1 - discount_rate))
。这确保了单一权威定义和正确的聚合行为——当用户查询"按区域的净收入"时,语义视图知道以适当的粒度进行聚合。如果没有语义视图,不同的报表和应用中可能会存在数十种不一致的计算方式,往往伴随着错误的聚合方法,导致结果偏差。

这种面向业务的抽象层解决了以下常见问题:

  • AI 应用:语义视图将 LLM 推理与规则定义相结合,提升准确性。AI Agent 读取语义视图定义中的业务语义,直接生成针对物理表的 SQL。
  • BI 分析:业务用户在所有工具中获得一致的指标和维度定义,可以在熟悉的 BI 界面中组合预定义的业务概念进行探索分析。
  • 技术分析师:集中管理的业务逻辑消除了跨查询的指标定义重复,简化了复杂的 Schema 关系,降低了数据模型的构建和维护成本。

语义视图是一种 Schema 级对象,通过定义逻辑表(业务实体)、关系(外键)、维度(分组属性)和指标(聚合度量),在数据库内部建立了一个业务语义层。数据消费者通过业务术语直接查询,无需关心底层物理表的 JOIN 和聚合逻辑。

核心概念

逻辑表(Logical Table)

逻辑表对应业务实体(如客户、订单、产品),是对物理表或子查询的业务映射。每个逻辑表至少需要一个约束(主键、外键或唯一键),用于定义表间的粒度层级关系。

维度(Dimension)

维度是用于分组和过滤的分类属性,回答"谁、什么、哪里、何时"的问题。例如:客户名称、订单日期、产品类别。维度总是 PUBLIC 访问级别。

指标(Metric)

指标是可聚合的业务度量,使用 SUM、AVG、COUNT 等聚合函数对原始数据计算得出。例如:总销售额、平均订单金额、客户数。指标可以标记为 PRIVATE 防止被直接引用。

事实(Fact)

事实是行级计算表达式,为指标提供基础数据。事实可以标记为 PRIVATE。例如:折后金额、原始价格。

核心能力

业务语义抽象

将物理列的命名(如

total_amt
total_amt
)映射为业务名称(如
discounted_price
discounted_price
),并提供同义词和注释,使数据更容易被业务用户理解。

指标一致性

业务指标(如"净收入")在 Semantic View 中一次定义,所有查询使用同一份定义,消除跨报表和应用的指标口径不一致。

声明式查询

通过

SEMANTIC_VIEW()
SEMANTIC_VIEW()
表函数进行声明式查询:

SELECT * FROM SEMANTIC_VIEW( tpch_analysis DIMENSIONS region_name METRICS total_revenue WHERE region_name = 'ASIA' );

引擎自动处理 JOIN、GROUP BY 和粒度安全校验。

架构

[Physical Tables] → [Semantic View (逻辑模型)] → [查询方式] ├── SEMANTIC_VIEW() 表函数 └── AI Agent / NL2SQL

Semantic View 本身是元数据对象,不存储数据,仅存储业务定义。查询时引擎根据定义自动生成对物理表的访问计划。

使用方式

SQL 命令

命令用途
CREATE SEMANTIC VIEW
CREATE SEMANTIC VIEW
创建语义视图
ALTER SEMANTIC VIEW
ALTER SEMANTIC VIEW
修改属性(重命名、注释、自定义属性)
DROP SEMANTIC VIEW
DROP SEMANTIC VIEW
删除语义视图
DESC SEMANTIC VIEW
DESC SEMANTIC VIEW
查看视图结构
SHOW SEMANTIC VIEWS
SHOW SEMANTIC VIEWS
列举所有语义视图
SHOW SEMANTIC DIMENSIONS IN <view>
SHOW SEMANTIC DIMENSIONS IN <view>
查看维度
SHOW SEMANTIC DIMENSIONS FOR METRIC
SHOW SEMANTIC DIMENSIONS FOR METRIC
查看指标兼容的维度
SHOW SEMANTIC METRICS IN <view>
SHOW SEMANTIC METRICS IN <view>
查看指标
SHOW SEMANTIC FACTS IN <view>
SHOW SEMANTIC FACTS IN <view>
查看事实
SHOW SEMANTIC RELATIONSHIPS IN <view>
SHOW SEMANTIC RELATIONSHIPS IN <view>
查看关系
SHOW SEMANTIC AI_VERIFIED_QUERIES IN <view>
SHOW SEMANTIC AI_VERIFIED_QUERIES IN <view>
查看 AI 验证查询。列出语义视图中预定义的 问题→SQL 对,供 AI Agent 参考
SHOW CREATE SEMANTIC VIEW
SHOW CREATE SEMANTIC VIEW
查看 DDL

查询方式

-- SEMANTIC_VIEW() 表函数 SELECT * FROM SEMANTIC_VIEW( sv_name DIMENSIONS dim1, dim2 METRICS m1, m2 WHERE dim1 = 'value' );

快速开始

步骤 1:设计业务模型

  • 确定业务实体(客户、订单、产品等)
  • 定义实体间的关系(粒度层级)
  • 确定关键指标和常用维度

步骤 2:创建语义视图

CREATE SEMANTIC VIEW sales_analysis TABLES ( orders AS db.orders PRIMARY KEY (o_orderkey) FOREIGN KEY (o_custkey) REFERENCES customers, customers AS db.customer PRIMARY KEY (c_custkey) ) DIMENSIONS ( orders.order_date AS o_orderdate, customers.cust_name AS c_name ) METRICS ( orders.total_revenue AS SUM(o_totalprice), orders.order_count AS COUNT(o_orderkey) );

步骤 3:查询

SELECT * FROM SEMANTIC_VIEW( sales_analysis DIMENSIONS order_date METRICS total_revenue, order_count );

相关文档

联系我们
预约咨询
微信咨询
电话咨询
邮件咨询