第84天知识点:CLEAN函数
熟悉DEF函数的小伙伴应该都知道,DEF函数的最大优点就是它可以不受维度栏中指标的影响。
但是,仍然存在一个问题就是:它无法控制过滤条件对其的影响。
这是什么意思呢?
举个例子大家可能会更好理解。
现在有一张西红柿的销售额情况表,里面记录了2024年1月-8月每天西红柿的销售情况。
其中,销售额最高的一天是2024年5月28日,对应的销售额是42437.6元。
但是现在,我希望能看到筛选日期范围内每天的销售额以及对应的最大销售额。
也就是说,如果我筛选2024年8月1日-8月15日,那么就需要展示8月1日-8月15日这个日期区间里的最大销售额。
这个很简单,通过DEF函数即可以得到这样的效果。
然后,将过滤组件绑定【销售日期】字段,即可实现展示上述需求的内容。
结果如下:
可以看到,当筛选日期变化后,最大值是会根据筛选日期的变化而变化的。
但现在,问题来了。
我希望增加一列历史最大销售额,以便我能和筛选日期范围内的最大销售额进行对比。
当然历史最大销售额可以在数据集中进行处理,因为数据集的结果在组件中展示后是不会受到任何过滤组件影响的。
但数据集中处理数据,很多时候数据使用起来不够灵活,所以我们还是希望在组件中直接通过DEF函数的方式去实现。
怎么才能让过滤组件不对DEF函数的结果产生影响呢?
这就需要引出一个新的分析函数—CLEAN函数。
CLEAN函数,顾名思义,起到清除的效果。
它与EARLIER函数一样,必须与DEF函数一起使用。
关于CLEAN函数的用法可以参考下方的函数卡片。
了解CLEAN函数之后,就简单了。
只需要在DEF函数的第三参数中输入需要摆脱的过滤组件对应的字段就可以了。
这里,我们需要摆脱【销售日期】的影响,所以DEF函数的第三参数,就写成[CLEAN(销售日期)]。
结果如下:
是不是非常方便?
但使用CLEAN函数需要注意的是:
1、当DEF函数的第三参数中的过滤条件不止CLEAN函数一个时,比如,我还添加了一个过滤条件:销售日期=2024/8/1,得到的结果会是什么样的呢?
结果如下:
可以看到,DEF+CLEAN函数+同级过滤条件这列的计算结果是2024/8/1的销售额,且该列的值不会随日期过滤组件的变化而变化。
这说明,CLEAN函数与同层的过滤处于平级的状态,即CLEAN会把上面层级的过滤清掉,但同层的过滤仍会正常生效。
2、当DEF函数嵌套DEF函数时,CLEAN函数只会清除当前层的过滤条件,不会清除内层或外层DEF函数的过滤条件。
比如,我先使用DEF函数计算出8月15日之后的最大销售额,然后再嵌套一层DEF函数,并使用了CLEAN函数,排除销售日期的影响。
结果如下:
可以发现,计算结果是2024/8/15日及之后这个时间范围内的最大销售额,而非前面提到的所有时间范围内的最大销售额42437.6元即2024/5/28对应的最大销售额。
这说明,CLEAN函数是在第一层DEF函数计算的结果上进行计算的,先把日期范围锁定在2024/8/15日及之后,然后在这个日期范围内找出最大销售额。
好了,今天关于CLEAN函数的内容就分享到这里。
感兴趣的小伙伴可以自己动手试试CLEAN函数的效果。 |