一、lod_fixed函数简介
lod_fixed{[声明维度1][,声明维度2]…:聚合表达式[:过滤条件]}
- [维度1][,维度2]...:声明维度,一方面如果外部筛选字段若不属于这里的声明维度则无效,另一方面这里声明的维度也内部聚合运算时的分组依据。使用逗号分隔各个维度。非必须。
- 聚合表达式:聚合表达式是所执行的计算,用于定义目标维度,要为聚合表达式。必须。
- 过滤条件:内部过滤条件,对数据表进行过滤的条件,非必须。
使用指定维度进行分组,并进行聚合运算,而不引用任何其他维度。先按内部过滤条件进行过滤,若外部过滤字段不属于声明维度则无效,再按声明维度进行分组,然后进行聚合计算,形成一张虚表,所以lod_fixed函数返回的是一张表,通常需要聚合后才能使用
二、lod_fixed函数数据计算过程
1、根据“过滤条件”进行内部过滤
2、根据声明维度进行分组聚合
(1)保留声明维度和聚合维度
(2)根据声明维度进行聚合计算
3、制作仪表板
(1)只接受来自声明维度的过滤筛选作用
三、示例
(一)数据源表(表1)
(二)新建计算字段
- 总金额 = sum([金额])
- 区域总金额 = lod_fixed{[区域]:SUM([金额])}
- 全国总金额 = lod_fixed{:sum([金额])}
- 1月区域总金额 = lod_fixed{[区域]:SUM([金额]):[月份] = '1月’}
- 1月全国总金额 = lod_fixed{:SUM([金额]):[月份] = '1月'}
(三)仪表板中矩阵结果(表2)
四、字段解析
(一)字段“区域总金额”数据计算解析
1、内部过滤
因为过滤条件为空,所以仍为原表,见下表3。
2、根据声明维度分组
(1)保留声明维度和聚合维度
保留字段“区域”和字段“金额”,见下表4
(2)根据声明维度进行分组,并进行聚合计算
按字段“区域”分组(如第3张表),并对“金额”字段进行聚合计算(求和),见下表5
3、制作仪表板
制作仪表板时,字段“区域总金额”是基于表5进行计算的,因此仪表板交叉表中只有字段“区域”对字段“区域总金额”有筛选作用,其他字段都没有筛选作用,见下表6。
(二)字段“全国总金额”数据计算解析
1、内部过滤
由于内部过滤条件为空,所以还是原表,见下表7
2、根据声明维度分组
(1)保留声明维度和聚合维度
由于声明维度为空,所以只保留聚合维度字段“金额”,见下表8。
(2)根据声明维度进行分组,并进行聚合计算
由于声明维度为空,所以对所有行进行聚合计算,见下表9。
3、制作仪表板
制作仪表板时,字段“全国总金额”是基于表9进行计算的,因此仪表板交叉表中没有字段对字段“全国总金额”有筛选过滤作用,见下表10。
(三)字段“1月区域总金额”数据计算解析
1、根据“过滤条件”进行内部过滤
根据 [月份] = ‘1月’ 对原表进行内部过滤,取得到表11
2、根据声明维度进行分组聚合
(1)保留声明维度和聚合维度
即保留表11中的字段“区域”和字段“金额”,得到表12
(2)根据声明维度进行聚合计算
即根据字段“区域”对字段“金额”进行聚合求和,得到表13
3、制作仪表板
制作仪表板时,交叉表中的字段“1月区域总金额”是基于表13进行计算的,所以只接受字段“区域”的过滤筛选,其他字段没有筛选作用,见下表14
(四)字段“1月全国总金额”数据计算解析
1、根据“过滤条件”进行内部过滤
根据 [月份] = ‘1月’ 对原表进行内部过滤,得到表15
2、根据声明维度进行分组聚合
(1)保留声明维度和聚合维度
由于声明维度为空,所以只保留表15中的字段“金额”,得到表16
(2)根据声明维度进行聚合计算
由于声明维度为空,所以对字段“金额”所有行进行聚合求和,得到表17
3、制作仪表板
制作仪表板时,交叉表中的字段“1月全国总金额”是基于表17进行计算的,因此仪表板交叉表中没有字段对字段“1月全国总金额”有筛选过滤作用,即见下表18
五、小结
lod_fixed函数数据计算过程
1、根据“过滤条件”进行内部过滤
2、根据声明维度进行分组聚合
(1)保留声明维度和聚合维度
(2)根据声明维度进行聚合计算
3、制作仪表板
(1)只接受来自声明维度的过滤筛选作用