【FineBI学习打卡】DAY75 关于高亮最大最小值的一些疑问解答

楼主
我是社区第1095980位番薯,欢迎点我头像关注我哦~

第75天知识点:高亮最大最小值为什么要用DEF(MAX_AGG(成交额))计算?

 

动态展示最大最小值这篇文章发布后,不少小伙伴后台私信表示对最大最小值的计算有些疑问,考虑到后面分享的最大最小值区间仍然会涉及到这些值的计算,所以今天先就这些问题做统一解答:

这里以最大值为例进行讲解。

先来回顾一下最大值的计算方式:

DEF(MAX_AGG(成交额))

疑问1:为什么不直接用MAX(成交额)?

我们可以先看一下直接用MAX函数的结果。

可以看到,MAX函数计算的结果就是当前行的最大值,而不是所有行中的最大值,显然结果并不满足我们的要求。

疑问2:直接用MAX_AGG(成交额)可以吗?为什么前面还要加一个DEF函数?

我们可以看一下如果不加DEF函数,直接用MAX_AGG(成交额)结果会是什么?

结果如下:

仍然是以每一行为维度,对应该行的最大值。

因为每一个日期对应的值只有一个,所以结果自然就是原来的成交额本身。这也就是为什么成交额列与MAX_AGG(成交额)计算的结果是一致的。

但与MAX函数不同的是,MAX_AGG函数合计行的结果是所有行的最大值,而MAX函数是所有行的和。

显然,MAX与MAX_AGG函数都不满足我们要求,看数据两个函数都受到了【日期】维度的影响。

有小伙伴还记得DEF家族与老维家族的故事吗?

想要摆脱维度的影响,DEF函数志在必得。

这也就是为什么需要在MAX_AGG(成交额)前面加一个DEF函数的原因。

DEF(MAX_AGG(成交额))表示所有行中,最大的数值。

结果如下:

疑问3:不在组件中使用计算字段,直接在数据集中计算出最大值呢?

数据集中当然可以计算出最大值,计算方法也很简单,可以通过新增公式列或者新增汇总列计算得出。

结果看着也没有什么问题。

但是,如果筛选数据日期,你就会发现:

组件中通过DEF函数计算的最大值字段可以根据筛选区间显动态变化,而数据集中计算的两个最大值结果不会变化,始终是99,926,也就是2024年全年数据的最大值。

显然,这也不符合咱们的要求。

为什么数据集中计算出的最大值不会动态变化呢?

因为过滤组件是在数据集结果的基础上进行的过滤,而数据集中添加的计算步骤是数据集结果形成前完成的步骤,计算对象是整个数据集数据,而非过滤组件筛选后的数据。所以通过数据集计算的字段结果相当于是写死的,不会随过滤组件的筛选条件而动态变化。

什么是写死的,以excel举个例子,大家可能就明白了。

比如:C列的值是A列乘以B列得出的,然后我将C列的值以数值形式复制粘贴到D列,也就是说,C、D列都是A列乘以B列得出的结果,但C列带公式,而D列不带公式,现在我修改了B列中的值,可以看到,C列变了,但D列因为是数值,写死了,所以并不会发生变化。

组件中添加计算字段就相当于带公式的C列,数据集中的新增列则相当于D列,过滤组件筛选相当于对B列数值进行修改。

这样大家是不是更容易理解了?

好了,以上就是关于动态展示最大最小值的一些疑问,希望可以解答你的疑惑。

分享扩散:
参与人数 +1 F币 +40 理由
Nancy.Gu + 40 24原创内容激励计划

查看全部评分

沙发
发表于 2024-10-10 15:54:35
感谢您的投稿!您此篇文章为读者解答了最大最小值的计算问题,每个细节都讲解到位,帮助用户深入理解产品功能。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1回帖数 1关注人数 1197浏览人数
最后回复于:2024-10-10 15:54

返回顶部 返回列表