1. 概述
1.1 版本
数据中心版本 |
---|
V7 |
1.2 应用场景
数据中心V7版本「跨表明细计算」提升跨表明细计算能力,行级别的跨表运算不会被报错阻止“非聚合计算不支持跨表”,满足更多计算场景。
以下列举一些跨表明细计算场景:
产品维度表(单价)*销售表(销售数量)求销售额
对指标进行跨表的明细或条件的过滤
计算衍生指标,比如求销售额,过滤条件为「年=2022」或「商品类型=“A”」
1.3 跨表明细计算逻辑
整体明细跨表计算目前的能力汇总如下:
左表 (基准表) | 分析方向 | 右表 | 如何实现 以左表为基准表进行明细计算 | 数据合并方式 |
---|---|---|---|---|
1 | → | N | def(sum(右表指标),[左表维度])+左表字段 | 左表leftjoin右表 |
N | → | 1 | def(sum(右表指标),[左表维度])+左表字段 | 左表leftjoin右表 |
N | → | N | def(sum(右表指标),[左表维度])+左表字段 | 左表leftjoin右表 |
1 | ← | N | 暂不支持 建议左表拼到右表,然后根据分析方向分析 | 会发生明细数据膨胀 |
N | ← | 1 | 左表+右表 | 左表leftjoin右表 |
N | ← | N | 暂不支持 建议左表拼到右表,然后根据分析方向分析 | 会发生明细数据膨胀 |
1 | ←→ | 1 | def(sum(右表指标),[左表维度])+左表字段 左边+右表 | 左表leftjoin右表 左表fulljion右表 |
基准表是什么?
DEF计算时:A表和B表字段要进行计算,最后分析的维度用的哪张表,哪个就是基准表。
非DEF的场景下:N表为基准表。 例如,产品维度表(单价)*销售明细表(销量),销量所在的销售明细表是基准表
1.4 使用范围
一只支持1端跨到N端,不论是直接还是间接,只支持分析方向指向的表的跨表;即当前表可分析的1端表可以拼接到当前表;
不支持分析主题跨表明细计算场景
2. 场景1:求销售额
场景描述
计算每件产品销售额。销售额=单价*销量
数据模型如下:单价、销量分别在两张表,依据「产品ID」作为关联主键

实现思路
左表(基准表) | 分析方向 | 右表 |
---|---|---|
药品维度表(1) | → | 商品销售表(N) |
公式:
每件产品销售额=每件产品销量*单价=DEF_ADD(SUM_AGG(销量),产品ID)*单价
「产品ID」属于基准表「药品维度表」
3. 场景2:生产场景下N:N关系表计算
在生产制造场景下,对计划和实际的发货量进行分析,数据模型和表结构如下:
3.1 计算每个物料的偏差量
计算每个物料预计和实际的偏差量
=每个物料的计划发货量-实际发货量
=DEF(SUM_AGG( 计划发货量),物料id)-DEF(SUM_AGG( 实际发货量 ),物料id ) #物料id都是产品线表字段,基准表是产品线表#
3.2 计算预测准确率(拓展)
数据中心V7版本增强了数据计算能力,支持灵活引用公共明细维度字段参与计算,实现场景见「权重」计算公式。
计算预测准确率=1-SUM_AGG(偏差率*权重)
偏差率=每个产线的物料在某个时间的(计划发货量-实际发货量)/实际发货量
权重=每个产线的物料在某个时间发货量/每个产线某个时间的发货量
实现思路
1)偏差率=DEF((SUM_AGG(计划发货量)-SUM_AGG(实际发货量))/SUM_AGG(实际发货量),[产品线名称,物料名称,日期])
2)权重=
DEF(SUM_AGG(实际发货量),[产品线,物料,日期]) #每个产线的物料在某个时间发货量#
/
DEF(SUM_AGG(实际发货量),[产品线,日期]) #每个产线某个时间的发货量#
4. 场景3:对指标进行跨表明细过滤
场景描述
对销售额添加跨表明细过滤条件。数据模型和表结构如下:
实现思路
添加「销售额」指标,过滤出「省份不属于江苏」或「商品类别不属于零食」的明细数据。