一、lod函数简介
LOD函数的全称是详细级别表达式(Level Of Detail Expressisons)。它主要是为了克服一些表达式之间计算颗粒度不一致的问题。比如,要计算第一季度各月销售收入占比,这里分子计算颗粒度为’月’,但是分母的计算颗粒度却为’季度’,这时就有可能用到lod函数。
在Quick BI中lod函数有三个,如下:
lod_fixed{<声明维度>:<聚合表达式>[:过滤条件]}
lod_ include{<声明维度>:<聚合表达式>[:过滤条件]}
lod_exclude{<声明维度>:<聚合表达式>[:过滤条件]}
这三个函数最主要的作用,就是在新建计算字段时,规定内部过滤条件、限定外部过滤条件,指明了分组依据。下面详细介绍一下这三个函数。
二、lod_exclude函数介绍
lod_exclude{维度1[,维度2]…:聚合表达式:[过滤条件]}
- 维度1[,维度2]...:声明维度,指定聚合表达式要去除的一个或多个维度。使用逗号分隔各个维度。必须。
- 聚合表达式:聚合表达式是所执行的计算,用于定义目标维度。
- 过滤条件:内部过滤条件,对数据表进行过滤的条件,非必须。
lod_exclude的执行逻辑:先按内部和外部过滤条件进行过滤,若外部过滤字段属于声明维度则无效,然后进行聚合计算,形成一张虚表,所以lod_exclude函数返回的是一张表,通常需要聚合后才能使用。由于这里是去除声明的维度,因此并没有指定分组维度,所以返回的表只有一行。
三、数据表---《销售单据表》
月份 |
区域 |
客户 |
订单号 |
金额 |
1月 |
南区 |
南A |
d001 |
100 |
1月 |
南区 |
南B |
d002 |
200 |
1月 |
南区 |
南C |
d003 |
300 |
1月 |
北区 |
北A |
d004 |
350 |
1月 |
北区 |
北B |
d005 |
200 |
2月 |
南区 |
南A |
d006 |
200 |
2月 |
南区 |
南C |
d007 |
300 |
2月 |
北区 |
北A |
d008 |
300 |
2月 |
北区 |
北B |
d009 |
200 |
3月 |
南区 |
南B |
d010 |
150 |
3月 |
南区 |
南B |
d011 |
300 |
3月 |
北区 |
北B |
d012 |
450 |
3月 |
北区 |
北B |
d013 |
300 |
3月 |
北区 |
北C |
d014 |
250 |
四、应用示例
1、示例一:lod_exclude基础用法
- 总金额 = sum([金额])
- 月总金额 = lod_exclude{[区域]:SUM([金额])}
- 北区月总金额 = lod_exclude{[区域]:sum([金额]):[区域]='北区'}
- 北B客户月总金额 = lod_exclude{[区域]:SUM([金额]):客户='北B'}
2、示例二:计算平均订单金额与月平均订单金额之差
- 平均订单金额 = AVG([金额])
- 月平均订单金额 = lod_exclude{[区域]:avg([金额])}
- 季度平均订单金额 = lod_exclude{[月份],[区域]:avg([金额])}
- 平均订单金额与月平均订单金额之差 = avg([金额]) - avg(lod_exclude{[区域]:avg([金额])})
五、小结
Lod_exclude函数
1、接受外部过滤条件,但是若外部过滤字段属于声明维度则无效。
2、没有指明分组依据,所以返回的表只有一行。