← 返回 技术博客

技术文章

基于HQL语义层构建AI-ready指标中台:统一口径与Agent上下文工程实践

基于HQL语义层构建AI-ready指标中台:统一口径与Agent上下文工程实践

2026/05/14技术博客HENGSHI12 分钟阅读
指标语义层HQLAIBI衡石科技
基于HQL语义层构建AI-ready指标中台:统一口径与Agent上下文工程实践

Article body

正文

一、引言:为什么企业需要指标语义层?

1.1 数据团队的三大痛点

在企业数字化转型过程中,数据团队通常面临以下困境:

痛点类型具体表现业务影响
口径不一致同一指标(如”活跃用户”)在不同报表中定义不同决策依据相互矛盾,信任危机
逻辑分散指标计算逻辑散落在BI工具、SQL脚本、数据管道中修改一处需联动多处,维护成本高
AI落地难大模型无法准确理解业务指标语义ChatBI回答”答非所问”,用户弃用

1.2 指标语义层的核心理念

指标语义层(Metrics Semantic Layer)是一种元数据抽象层,它将业务指标的定义(口径)、计算逻辑(算法)、业务语义(维度、层级)与底层数据存储解耦,实现”一处定义、多方复用”的治理目标。

业务应用层
  报表    ChatBI   API    AI Agent
     \      |      /         |
      \     |     /          /
       v    v    v           v
   +----------------------------------+
   |      指标语义层 (Metrics Layer)   |
   |   HQL语义定义 | 指标血缘 | 权限    |
   +----------------------------------+
              |              |
   数据湖/数仓              关系型数据库

二、HQL:指标语义层的表达基石

2.1 什么是HQL?

HQL(Hengshi Query Language)是HENGSHI SENSE专有的指标定义语言,旨在用声明式语法表达复杂的业务指标逻辑。 与传统的SQL嵌入业务逻辑不同,HQL将指标定义**从数据查询中分离出来,使得指标具备独立性、可复用性和可治理性。

2.2 HQL核心语法要素

HQL的设计遵循”维度-指标-计算”的语义模型:

METRIC <指标名称> (
    <维度定义>,
    <指标定义>,
    <计算逻辑>
)

示例1:基础GMV(商品交易总额)指标

METRIC gmv (
    -- 维度声明
    dimensions: 
        product_category,      -- 商品类目
        region,                -- 地区
        order_date             -- 订单日期
    
    -- 指标定义
    metrics:
        total_amount: SUM(order_items.amount),      -- 原始销售额
        order_count: COUNT(orders.id),               -- 订单数量
        avg_order_value: total_amount / order_count  -- 客单价
    
    -- 筛选条件
    filter: order.status = 'completed'
)

示例2:复合指标——同比增长率

METRIC sales_yoy_growth (
    dimensions: product_category, order_date, region
    
    metrics:
        current_sales: SUM(order_items.amount),
        -- 通过时间偏移函数获取去年同期值
        ly_sales: SAME_PERIOD_LAST_YEAR(current_sales),
        yoy_growth_rate: (current_sales - ly_sales) / ly_sales * 100
    
    filter: order.status = 'completed' AND order.order_date >= '2024-01-01'
)

2.3 HQL vs 传统SQL:为什么需要指标语言?

对比维度传统SQL方式HQL方式
可复用性每个报表独立编写,难以共享指标定义一次,全平台复用
口径追溯SQL散落各处,修改历史难查集中存储,支持版本管理
语义抽象业务人员难以理解SQL业务友好,易于沟通
AI理解大模型难以解析复杂嵌套SQL标准化语义,AI可准确理解
血缘追踪手动维护,数据来源不透明自动血缘,端到端可追溯

2.4 高级HQL:时间智能与窗口函数

-- 月度累计指标(Month-to-Date, MTD)
METRIC monthly_mtd_sales (
    dimensions: product_category, region
    
    metrics:
        daily_sales: SUM(order_items.amount),
        mtd_sales: WINDOW_SUM(daily_sales, 
                            START_OF_MONTH, 
                            CURRENT_DATE),
        mtd_target_progress: mtd_sales / monthly_target * 100
    
    filter: order.order_date >= '2024-01-01'
)

-- 移动平均(7日滚动)
METRIC rolling_7d_avg_sales (
    dimensions: product_category
    
    metrics:
        daily_sales: SUM(order_items.amount),
        rolling_7d_avg: WINDOW_AVG(daily_sales, -7, 0)
)

三、指标语义层的三大核心价值

3.1 价值一:统一口径——消除”数据分歧”

3.1.1 口径不一致的典型场景

在企业中,“DAU(日活跃用户)“可能有多种定义:

  • 技术口径:当日有任意操作的UV
  • 业务口径A:当日有订单的用户数
  • 业务口径B:当日有付款的用户数

如果没有统一的指标定义层,各部门基于自己的理解出数,结论自然”各说各话”。

3.1.2 HQL的统一口径方案

-- 统一的DAU指标定义(技术口径)
METRIC dau (
    dimensions: event_date, platform, channel
    
    metrics:
        active_users: COUNT_DISTINCT(users.id)
    
    filter: user_actions.event_type IN ('page_view', 'click', 'purchase')
)

-- 统一的DAU指标定义(业务口径B:付款口径)
METRIC dau_paid (
    dimensions: event_date, platform, channel
    
    metrics:
        paid_users: COUNT_DISTINCT(
            CASE WHEN orders.status = 'paid' 
                 THEN users.id END
        )
    
    base_metric: dau  -- 继承基础指标结构
)

治理效果

  统一口径前                    统一口径后
  运营报表:DAU=50万          运营报表:DAU=50万
  数据团队:DAU=48万          数据团队:DAU=50万 ✓
  财务系统:DAU=45万          财务系统:DAU=50万 ✓
  产品分析:DAU=52万          产品分析:DAU=50万 ✓

3.2 价值二:可追溯治理——从定义到消费的完整链路

3.2.1 指标血缘追踪

指标语义层维护完整的血缘关系:

指标血缘示例:gmv → order_items → orders → order_items.amount

            依赖维度:product_category, region, order_date

            依赖指标:order_count, avg_order_value

            消费下游:销售大屏、老板驾驶舱、财务报表

3.2.2 指标主题(主题域)管理

HENGSHI SENSE支持指标主题功能,将相关指标归类到统一的主题域下,便于组织与管理:

-- 创建"电商交易"主题域
THEME ecommerce_trade (
    description: "电商核心交易指标集合",
    
    metrics:
        - gmv                    -- 商品交易总额
        - order_count            -- 订单数量
        - paid_users             -- 付费用户数
        - conversion_rate        -- 转化率
        - avg_order_value        -- 客单价
    
    owner: "电商事业部数据团队",
    approval_workflow: enabled
)

3.2.3 权限与安全治理

-- 基于角色的指标权限控制
PERMISSION sales_metrics (
    roles: ["sales_manager", "regional_director"],
    
    allowed_metrics: ["gmv", "order_count", "paid_users"],
    denied_metrics: ["cost_margin", "profit_margin"],  -- 敏感指标
    
    row_level_filter: region IN user.assigned_regions
)

3.3 价值三:AI-ready——为智能应用提供准确上下文

3.3.1 为什么AI需要指标语义层?

大语言模型(LLM)在数据问答场景中面临的核心挑战是语义理解歧义

  • 用户问:“昨天卖了多少?”
    • AI可能理解为:GMV?订单数?商品件数?
  • 传统方案:让AI直接理解数据库Schema
    • 问题:Schema过于技术化,跨表Join逻辑复杂,AI容易”幻觉”
  • 指标语义层方案:让AI理解业务指标语义
    • 优势:指标定义即业务语言,语义明确,AI准确率大幅提升

3.3.2 HQL作为AI上下文协议

// AI Agent获取的指标上下文
{
  "metrics": [
    {
      "name": "gmv",
      "display_name": "商品交易总额",
      "definition": "已完成订单的实付金额之和",
      "dimensions": ["product_category", "region", "order_date"],
      "filters": ["order.status = 'completed'"],
      "data_type": "currency",
      "unit": "元"
    },
    {
      "name": "dau",
      "display_name": "日活跃用户数",
      "definition": "当日有任意行为的去重用户数",
      "dimensions": ["event_date", "platform"],
      "filters": [],
      "data_type": "integer",
      "unit": "人"
    }
  ]
}

3.3.3 指标语义层支撑的ChatBI工作流

用户提问 ──▶ 问数Agent ──▶ 指标语义层

                   +──────────────┘

自然语言 ──▶ HQL执行 ──▶ 结果返回
智能回答     引擎        图表展示

四、Data Agent:指标语义层的AI应用实践

4.1 Data Agent四大子Agent架构

HENGSHI SENSE的Data Agent包含四个核心能力,各司其职、协同工作:

Agent名称核心职责依赖指标语义层程度
建模Agent数据模型设计与优化★★★☆(依赖schema)
问数Agent自然语言转指标查询★★★★★(强依赖)
创作Agent报表与看板自动生成★★★★☆(依赖指标定义)
页面操作Agent界面自动化操作★★☆☆☆(低依赖)

4.2 问数Agent:精准理解”能不能问准”

问数Agent是指标语义层价值最直接的体现。它的核心工作流程:

用户问题 → 问题理解 → 指标匹配 → SQL生成 → 结果执行 → 答案呈现

4.2.1 问题理解与语义消歧

# 问数Agent伪代码示例
class QuestionUnderstandingAgent:
    def understand(self, user_query: str) -> QueryIntent:
        # 1. 意图分类
        intent = self.classify_intent(user_query)
        
        # 2. 实体识别
        entities = self.extract_entities(user_query)
        # entities: {"metric": "GMV", "time": "上月", "dimension": "华南区"}
        
        # 3. 语义消歧(关键!)
        disambiguated = self.disambiguate(
            entities,
            available_metrics=self.metrics_layer.get_metrics()
        )
        
        # 4. 返回标准化查询意图
        return QueryIntent(
            metric="gmv",
            dimensions=["product_category", "region"],
            filters=[
                {"field": "region", "operator": "=", "value": "华南区"},
                {"field": "order_date", "operator": "between", 
                 "value": ["2024-03-01", "2024-03-31"]}
            ]
        )

4.2.2 指标匹配引擎

class MetricMatchingEngine:
    def match(self, query_intent: QueryIntent) -> List[MetricMatch]:
        candidates = []
        
        for metric in self.metrics_layer:
            # 计算语义相似度
            similarity = self.calculate_similarity(
                query_intent.text,
                metric.name,
                metric.aliases,  # 同义词
                metric.description
            )
            
            if similarity > THRESHOLD:
                candidates.append(MetricMatch(
                    metric=metric,
                    confidence=similarity,
                    matched_on="alias" if metric.aliases else "description"
                ))
        
        # 返回最匹配的指标
        return sorted(candidates, key=lambda x: x.confidence, reverse=True)

4.2.3 复杂查询的指标组合

当用户问题涉及多个指标时,问数Agent需要智能组合:

用户问题:"华南区上月GMV和转化率分别是多少?"

分解过程:
1. 识别指标1:gmv(商品交易总额)
2. 识别指标2:conversion_rate(转化率)
3. 识别维度:region = 华南区
4. 识别时间:上月

生成HQL:
{
  "metrics": ["gmv", "conversion_rate"],
  "dimensions": ["product_category"],  -- 默认维度
  "filters": [
    {"field": "region", "value": "华南区"},
    {"field": "order_date", "value": "last_month"}
  ]
}

4.3 建模Agent:基于语义层的数据模型优化

class ModelingAgent:
    def suggest_model_optimization(self, query_patterns: List[Query]):
        # 分析高频查询模式
        frequent_dimensions = self.analyze_frequency(
            [q.dimensions for q in query_patterns]
        )
        
        # 推荐预聚合表
        suggestions = []
        for dim_combo in frequent_dimensions:
            table = self.generate_materialized_table(dim_combo)
            suggestions.append(ModelSuggestion(
                table_name=table,
                benefit_score=self.estimate_benefit(query_patterns, table),
                storage_cost=self.estimate_cost(table)
            ))
        
        return suggestions

五、版本演进:指标语义层的产品化实现

5.1 HENGSHI SENSE 6.2 指标管理核心功能

功能模块功能点技术实现
指标定义HQL语义定义元数据库 + 解析引擎
维度与指标声明结构化Schema
计算公式编辑器表达式AST解析
指标组织指标主题(主题域)层级标签体系
指标收藏用户偏好存储
指标趋势图时序数据渲染
指标治理血缘追踪图数据库存储
权限管理RBAC + 列级权限
变更审计事件日志记录
AI增强指标主题ChatbotLLM + 指标向量检索
AI提问入口RAG架构

5.2 6.0版本:AI能力深度集成

核心升级:任务管理增加业务指标主题向量化分类

# 向量化分类实现
class MetricVectorClassifier:
    def __init__(self, embedding_model):
        self.model = embedding_model
    
    def classify(self, metric: Metric) -> List[Topic]:
        # 1. 生成指标描述的向量表示
        text = f"{metric.name} {metric.description} {metric.formula}"
        embedding = self.model.encode(text)
        
        # 2. 语义相似度检索
        topics = self.vector_store.search(
            embedding, 
            top_k=3,
            threshold=0.75
        )
        
        # 3. 返回匹配的主题
        return topics

指标分析/AI入口

┌──────────────────────────────────────────────────┐
│  指标分析页面                                     │
│  ┌────────────────────────────────────────────┐  │
│  │ 🔍 [请用自然语言描述你想分析的指标...]       │  │
│  └────────────────────────────────────────────┘  │
│                                                  │
│  看板编辑页 → AI助手 → 一键生成指标分析看板      │
└──────────────────────────────────────────────────┘

5.3 6.1.5版本:权限体系简化

重要变更:指标分析角色与数据查看角色合并

合并前:
├── 指标分析员(可分析,不能看原始数据)
└── 数据查看员(可看原始数据,不能分析)

合并后:
└── 数据分析师(同时具备分析 + 查看权限)

简化效果

  • 权限配置步骤减少 50%
  • 跨角色协作摩擦降低
  • 企业内部培训成本下降

六、工程实践:构建企业级指标语义层

6.1 实施路线图

阶段1: 指标梳理 (4-6周)
├── 业务调研与指标梳理
├── 口径确认与标准化
└── HQL编写与平台录入

阶段2: 平台建设 (6-8周)
├── 指标语义层平台部署
├── 权限与治理体系配置
└── 数据源对接与验证

阶段3: 应用推广 (4-6周)
├── 报表迁移与改造
├── ChatBI集成与用户培训
└── Agent能力上线

6.2 指标定义规范

# 指标元数据规范示例
metric_schema:
  required_fields:
    - name              # 英文标识(唯一)
    - display_name      # 中文展示名
    - description       # 业务定义
    - category          # 指标分类
    - owner             # 负责人
  
  optional_fields:
    - aliases           # 同义词列表
    - formula           # 计算公式
    - tags              # 标签
    - deprecation_notice # 废弃说明
  
  validation_rules:
    name:
      - pattern: "^[a-z][a-z0-9_]*$"
      - max_length: 64
    display_name:
      - max_length: 128

6.3 质量保障体系

检查项检查规则自动修复
命名规范驼峰/下划线统一自动转换
口径冲突同名指标不同定义检测告警
循环依赖指标间循环引用检测阻断
空值处理检查NULL可能导致的结果异常提示默认值
数据延迟标注数据时效性告警

七、总结与展望

7.1 核心价值回顾

指标语义层与HQL为企业带来的核心价值:

  1. 统一口径:消除跨团队、跨系统的指标定义分歧,建立数据信任基座
  2. 可追溯治理:从指标定义到数据消费的完整血缘追踪,提升合规能力
  3. AI-ready架构:为ChatBI与AI Agent提供准确、稳定的业务语义上下文,大幅提升智能化应用的可用性

7.2 未来演进方向

方向当前能力演进目标
指标智能化手动定义HQLAI辅助生成指标定义
自适应治理规则引擎基于ML的异常检测与自动修复
跨平台语义统一单平台指标管理多引擎统一语义抽象层
Agent自主决策问答式交互Agent自主完成数据分析全流程

7.3 行业落地案例参考

指标语义层在不同行业的落地侧重各有不同:

行业典型指标域指标复杂度关键挑战
电商零售交易GMV、转化率、客单价、复购率高(多表关联、时间窗口)活动期间指标口径频繁调整
金融证券AUM、净收入、风险敞口、VaR极高(监管口径严格)合规审计要求,指标变更需全链路审批
制造业OEE、良品率、产能利用率、库存周转中高(实时数据源多)IoT设备数据与业务系统数据的语义对齐
医疗健康床位使用率、平均住院日、门诊量中等(标准化程度高)隐私合规,指标权限粒度要求极细
SaaSMRR、ARR、Churn Rate、NDR高(订阅模型复杂)指标跨系统(CRM+计费+分析)统一

以电商行业为例,指标语义层的典型落地场景是大促期间的实时指标看板。在”双11”等大促活动中,运营团队需要实时监控GMV、订单量、客单价等核心指标,同时还需要与去年同期进行同比分析。没有指标语义层时,数据团队需要提前数周准备SQL脚本和报表,且活动期间的临时分析需求难以快速响应。引入指标语义层后,所有核心指标都已预定义为HQL,运营团队只需通过自然语言提问,即可获得实时数据对比分析。

7.4 给技术决策者的建议

  • 从业务价值出发:指标语义层建设不是技术项目,而是数据治理变革。建议先与业务部门对齐核心指标清单,确保技术投入有明确的业务回报
  • 从小范围试点:选择高频、高价值指标(如核心营收指标)优先建设,快速验证ROI,再逐步扩展到全量指标
  • 重视变更管理:口径统一需要跨部门协作,技术团队需主动推动对齐,建立指标变更的审批流程和通知机制
  • AI能力前置:新建平台务必将AI-ready作为架构约束,而非后期叠加。指标定义中应包含同义词、自然语言描述等AI消费所需的元数据
  • 持续迭代而非一步到位:指标语义层是”活的”基础设施,需要随着业务发展持续演进。建议建立指标健康度监控机制,定期检查口径一致性和使用覆盖率

附录:术语表

术语英文定义
指标语义层Metrics Semantic Layer位于数据源与应用之间的指标定义抽象层
HQLHengshi Query LanguageHENGSHI SENSE的指标定义专用语言
指标口径Metric Definition指标的业务计算规则与边界条件
指标血缘Metric Lineage指标的数据来源、加工过程、消费链路追踪
主题域Topic Area/Domain业务领域中相关指标的归类分组
ChatBIChat BI基于自然语言交互的BI问答系统
AgentAgent具备自主决策与执行能力的AI系统

本文基于HENGSHI SENSE产品实践编写,更多技术细节请参考官方文档。

HENGSHI SENSE

丰富的资源 完整的生态

邀您成为衡石伙伴

立即加入

企业级部署、产品集成与试用咨询均可快速响应