导言
衡石 HQL 是一门函数式语言,其设计初衷是简化计算逻辑表达、降低分析师使用门槛 —— 复杂的过程逻辑被封装为简洁函数,分析师可像使用 Excel 公式一样,轻松表达复杂计算逻辑。
在 HENGSHI SENSE 中,字段定义、指标设置、权限规则配置等操作,均能通过函数编写实现。而涵盖各类场景的计算函数所构成的丰富函数库,既是衡石 HQL 的核心,也是其计算表达能力的重要体现。
除常见的文本函数、日期计算函数、聚合函数、窗口函数外,HQL 还包含多款高级表计算函数,可支持用户表达更复杂的计算逻辑。本期专题将结合实际场景,为大家介绍其中一个用途广泛的高级计算函数 ——CALCULATEX。
使用场景及案例实战
在数据表分析中,分析师常需定义虚拟列。部分虚拟列是行内计算指定的(如单条消费记录的付款金额=数量*单价),还有不少虚拟列无法在行内计算,而是需在原表基础上按特定逻辑通过行间聚合计算得到(例如在分城市库存表中新增 “所属省份总库存” 列,由同一省份的各城市库存值汇总得到)。
在传统分析流程中,这类聚合型的虚拟列通常需先构建中间数据集,再与原表关联生成,过程中会产生大量临时数据集的创建与存储冗余。而在衡石体系中,部分场景可直接使用 CALCULATEX 函数定义此类虚拟列,无需显式构建临时中间表。
CALCULATEX 函数格式为:CALCULATEX(ARG1, ARG2,... ),各参数含义如下:
ARG1:指定中间表的聚合指标,该指标也是函数最终输出的列值;
ARG2~ARGn:指定中间表的聚合维度,同时中间表会基于这些维度与原表关联,形成完整分析视图。
以下我们统计2个实际的案例来具体看看该函数的使用场景。
案例1:
客户价值分类与销售数据分析
需求背景:基于零售交易数据明细(含客户 ID、销售额、销量等字段),按客户总销售额划分价值类型:总销售额<20000 为 “低价值客户”,20000≤总销售额≤50000 为 “中价值客户”,总销售额>50000 为 “高价值客户”;最终统计不同价值类型客户的总销售额、总销量及客户人数。
订单ID 客户ID 商品 销售数量 销售额
cn0001 user1 A 3 100
cn0001 user1 B 2 30
cn0002 user2 A 5 150
需求分析:
客户价值标签的本质是构建虚拟列,该列需通过 “临时中间表聚合计算 + 与原表关联” 生成,具体逻辑如下:
以 “客户 ID” 为中间表聚合维度,以sum({销售额})为统计指标,结合 CASE WHEN 函数划分客户价值标签;
将临时中间表按 “客户 ID” 与原始明细表面关联,在原表中新增 “客户价值” 虚拟字段,为每条销售记录对应的客户打上价值标签,便于后续分析。
因此,此处即可使用CALCULATEX函数直接定义该虚拟字段,无需实际构建中间表,表达式如下。
最终该虚拟字段即可直接在图表上作为维度,分析展示不同价值客户分类下的销额、销量、客户数等指标
案例2:
消除重复记录的退货率
需求背景:在数仓大宽表构建中,常出现 “不同粒度统计指标整合” 的情况,易导致记录重复问题。例如某退货统计表中,“退货数量” 按 “日期、品类、类别、退货原因” 粒度统计,“总销售数量” 按 “日期、品类、类别” 粒度统计(与退货原因无关),最终表中同一 “日期、品类、类别” 会对应多条记录,且 “总销售数量” 值完全重复。
此时若直接用sum(退货数量)/sum(总销售数量)计算 “每月各品类退货率”,会因 “总销售数量” 重复统计导致结果失真,需先对 “总销售数量” 进行去重处理。
需求分析:
为了准确统计退货率,针对销售数量字段存在的重复值,我们第一时间的想法是想办法对销售数量字段进行排重,再进行总销量的统计。
去重核心思路是:按 “日期、品类、类别” 分区,为每个分区内的重复数据添加 “序号” 虚拟字段,仅取序号 = 1 的记录参与 “总销售数量” 统计。而 CALCULATEX 函数可高效构建 “序号” 虚拟字段,具体步骤如下:
具体构建过程如下:
1)销售数量以日期、品类、类别粒度统计,故用分区函数计算分区内序号,并用CALCULATEX构建出序号字段
2)构建[总销售销量]指标,只取序号为1的记录纳入统计,实现排重汇总
3)退货率为 sum(退货数量) / [总销售销量],其中 [总销售销量]为以上排重汇总的计算公式
最终实现效果如下:
从以上图表查询转化出来的SQL语句,也可以更清晰地展现其中的计算过程。
结语
在 HENGSHI SENSE 中,数百个简洁且功能强大的函数构成了 HQL 的核心,助力分析师轻松表达各类指标与查询计算的复杂逻辑。相较于其他 BI 厂商,衡石拥有更丰富、更强大的函数库,这也是其在分析语义层能力上的核心优势。
在本系列后续文章中,我们将继续结合实际案例,分享 HQL 中更多高级函数的功能与用法。
关于衡石科技
衡石科技创新性定义下一代的搭载指标和 AI 能力的企业级 BI PaaS,专注赋能全行业的企业软件 SaaS 厂商敏捷构建数据智能。旗下核心产品 HENGSHI SENSE 让合作伙伴在业务场景中零代码上线 AI 助手、BI 自助分析、指标中台、运营看板等高级功能,驱动业务的数智化转型。
衡石科技目前已经和亚马逊云科技、阳狮集团、深信服、致远互联、天润融通、宝尊电商、树根互联、蓝色光标、纷享销客、六度人和、黑湖科技、明道云、分贝通、酷学院、特赞等超过两百家先进 SaaS 伙伴落地深度合作,让built-in的商业分析即刻上线,产品生态合作已覆盖数字营销、业财费控、ERP、CRM、HR、MES、低代码、供应链管理等数十个垂直领域。

