透视分析(新)
交互式仪表盘-交叉表
基于模型汇总查询新建的电子表格/web电子表格
|
交叉表中的小计合计本质上是自定义成员,在维度层次上动态生成。计算范围受当前上下文(如行/列/筛选器)限定,根据汇总类型不同,计算方式分为两类,具体可看详细说明内容
|
内存计算型(SUM、COUNT、MAX、MIN)
- SUM / COUNT:
小计会对当前分组下的所有子成员求和/计数。若维度存在父子层次(如时间维度),小计可自动向上替换为父成员的值。 示例:订单年份为2020年,其下四个季度小计 = SUM(2020Q1,2020Q2,2020Q3,2020Q4) = 2020年总值。
- MAX / MIN:
直接在内存中比较子成员的值,取最大/最小。结果不等于子成员之和,但一定出现在子成员中。
SQL执行型(唯一计数、平均值、中位数、方差等)
- 唯一计数:小计/合计通过SQL的COUNT DISTINCT计算,每个分组对应独立SQL。
示例:2020年四个季度的小计对应SQL: SELECT COUNT(DISTINCT 度量) FROM 表 WHERE 季度 IN ('2020Q1','2020Q2','2020Q3','2020Q4')
- 平均值、中位数、标准差等:均通过SQL聚合函数计算,不依赖内存比较。

|
时间计算(前期、同期、累计、期初期末、日均)是最复杂的场景。
关键规则:当前时间成员为小计/合计成员时,系统会将其展开为底层成员列表,然后对每个底层成员应用时间计算,最后再聚合。
也就是遵循一个死理:先把每一个具体的“子项目”算出对比结果,最后再把子项目的结果加起来。
|
1. 前期值(ParallelPeriod)
含义:穿越时空,找去年的今天(或上个月、上个季度)。
核心逻辑:系统会先把“合计”拆成明细,分别算出每个明细的“前期值”,最后把这些结果加起来。
场景示例:
- 行列无时间层次(时间在筛选器):
如筛选2022年,华南小计的前期值 = 对华南各品类分别计算前期值,再求和。前期值基准为2021年同期。

- 行列有时间层次(时间在行/列):
如行上有2022年小计(包含四个季度),前期值会先展开为[2022Q1,2022Q2,2022Q3,2022Q4],分别向前移动一期得到[2021Q4,2022Q1,2022Q2,2022Q3],再求和。

同期值、累计值原理和前期值相同,仅表达式不同
2. 期初期末值(PeriodsBegin/PeriodsEnd)
一句话理解: “抓开头”和“抓结尾”。只看特定那一天。
- 期初值:返回当前时间成员之前那一天的度量值。例如当前是2022年7月,期初值就是2022年6月30日的值。
- 期末值:返回当前时间成员在指定层次上的最后一天的度量值。例如当前是2022年7月,指定层次为“月”,期末值就是2022年7月31日的值。
- 案例说明:
- 场景一:行列无时间层次(时间在筛选器):
- 小计值:因所选的时间层次是2022年07月,则华南期初时点的小计值=华南2022年6月30号的销售数量;华南期末时点的小计值=华南2022年7月31号的销售数量。

- 合计值:因所选的时间层次是2022年07月,则期初时点合计值=2022年6月30号的销售数量;期末时点合计值=2022年7月31号的销售数量。

- 小计:以2023年2季度的小计为例,展开得到对应的聚合成员列表是[2023-04],[2023-05],[2023-06]:
- 期初值:2023年03月31日,并求得对应的度量值。

- 期末值:2023年06月30日,并求得对应的度量值。

- 合计:这里时间维度的currentMember是合计成员,展开得到对应的聚合成员列表是从[2021-01]到[2023-08]:
- 期初值:2020年12月31日。但因期初不跨年的逻辑限制,所以结果是NULL;
- 期末值:2023年08月31日。因2023年8月31号没有数据,所以结果也是NULL。

由于期初不跨年,如果期初获取小计成员时,获取到上一年的成员值时,则计算结果是NULL。
3. 日均值(PeriodsAverage)
- 业务场景:你想知道“今年上半年平均每天卖多少钱”。
- 计算逻辑:从年初到当前成员之间所有日层次成员的平均值。即:总数 ÷ 日历天数。
注:计算公式中第三个参数为true的时候按自然日求日均,为false的时候按值的个数求平均。
报表中的快速计算是按自然日求日均。
- 案例说明:
- 场景一:行列无时间层次(时间在筛选器):
- 小计值:因所选的时间层次是2022年,则所选时间的自然日天数为365天,即华南的小计值为23,590/365=64.63。
- 合计值:和小计值类似,拿总的合计值除以所选时间的自然日天数,即合计值为100,865/365=276.34。

- 场景二:行列有时间层次(时间在行/列):
- 小计行:以2022年的小计为例:
- 计算日均时,展开得到的聚合成员列表是[2022-1],[2022-2],[2022-3],[2022-4];
- 对每个成员获取从年初到对应日期层次的成员列表,得到2022-01-01到2022-12-31;
- 求对应的度量值的合计,再除以自然日天数;
- 2022年的小计=248,258/365=680.16。
- 合计行:
- 展开得到的聚合成员列表是[2021-1],[2021-2],[2021-3],[2021-4],[2022-1],[2022-2],[2022-3],[2022-4],[2023-1],[2023-2],[2023-3];
- 对每个成员获取从年初到现在的日期层次的成员列表,得到2021-01-01到2023-09-30;
- 求对应的度量值的合计,再除以自然日天数;
- 合计=546,890/1003=545.25。

计算日均时,若日期维度的日不连续时,会影响日均计算结果,时间维度补齐功能详见: 时间计算日期自动补齐。
|