1. 概述
clean的对象是字段,效果是在当前 def 的计算中忽略该字段上的过滤效果。
语法 | CLEAN(字段1,字段2,字段3....) /CLEAN("ALL") | 当前 分析函数 计算中忽略指定字段生成的所有过滤效果 |
---|---|---|
参数 | 字段1,字段2,字段3.... | 需要忽略过滤效果的字段
|
2. 注意事项
CLEAN函数只能用于 def/def_add/def_sub 中,作为一个独立的过滤条件。例如: DEF(SUM_AGG(指标),[省份,城市],[CLEAN(城市)])
3. 计算逻辑
3.1 计算范围
1)clean(字段1,字段2,字段3....)
clean函数将清除掉字段所做的过滤。示例如下:
范围 | 过滤条件 | 组件的计算字段 | 结果 |
---|---|---|---|
组件 | 在过滤器添加「城市」字段
| def(sum_agg(销售额),[城市],[clean(城市)]) | 忽略城市字段的所有过滤条件 |
仪表板 | 文本下拉过滤:城市=苏州、无锡、常州 |
2)clean(all)
当前 分析函数 运算的结果不受到任何过滤效果影响(不包括仪表板/组件外的过滤,如权限过滤和定时调度的过滤)
3)总结
因此,CLEAN函数作用范围如下:
范围 | 字段过滤 | CLEAN(字段1,字段2,字段3....) | CLEAN("ALL") |
---|---|---|---|
组件 |
| 忽略字段过滤效果生效 | 忽略分析函数所有字段过滤效果 |
仪表板 |
|
(不包括下拉树/列表树/树标签/复合过滤组件)
| 忽略分析函数所有字段过滤效果 |
3.2 在DEF计算中的逻辑
1)clean与内层def和同层def过滤条件的关系
因为def中的过滤仅影响当前def的计算,因此clean不会清除内层和外层def的过滤条件
例如:
层级 | 计算字段 | 公式 |
---|---|---|
1 | A | def(sum(),[],销售额>100) |
2 | B | def(sum(A),[],[clean(销售额)]) |
3 | C | def(sum(B),[],[销售额<300]) |
此时,clean 不会对1、3层级的销售额过滤产生影响。
2)clean与同层的过滤处于平级的状态
clean与同层的过滤处于平级的状态,即clean会把上面层级的过滤清掉,同层的过滤正常进行。
例如,def(sum(),[],[ clean(日期),日期=“2022”]),过滤器绑定日期过滤 ,此时def使用日期=2022进行计算。
4. 案例应用
4.1 示例
示例数据:产品销售情况.xlsx
1)上传数据并分析产品销售情况。拖入「订单金额」修改汇总方式为「最大值」得到单笔订单销售额最大值。如下图所示:
2)只想分析 7 月的订单销售数据。在过滤器中拖入「订单日期」,年月过滤,选择「2022年7月」。如下图所示:
此时,我们希望增加一列历史订单单笔最大金额和7月的数据进行对比。添加计算字段「历史单笔订单最大金额」。如下图所示:
场景 | 公式 | 描述 |
---|---|---|
计算结果不会受到订单日期过滤的影响 | CLEAN(订单日期) | 组件过滤器、仪表板过滤组件对「订单日期」过滤都不会变化计算结果 |
求产品订单金额的历史最大值 | DEF_ADD(MAX_AGG(订单金额}),[],[CLEAN(订单日期)]) | 维度:产品 指标:订单金额 条件:忽略订单日期过滤条件 |
组件中的如下图所示:
仪表板中效果如下图所示:
4.2 更多示例
公式 | 结果 | 备注 |
---|---|---|
DEF(SUM_AGG(指标),[省份,城市],[CLEAN(城市)]) | 在DEF计算中忽略「城市」字段产生的所有过滤效果 | 忽略城市字段在过滤器/钻取/过滤组件产生的过滤(不包含树过滤组件以及复合过滤控件) |
DEF_ADD(SUM_AGG(指标),[维度1,维度2,...],[CLEAN("ALL")]) | 在DEF_ADD计算中忽略全部的过滤效果 | 忽略所有字段在过滤器/联动/钻取/跳转/过滤组件产生的过滤 |