FineBI 无法将聚合和非聚合参数混用(或条件求和)

例如:使用 IF 函数对聚合函数进行二次计算,当公式中含有非聚合参数时,公式不合法,如下图所示:

方案一  将非聚合参数变成聚合参数

如下图所示:

方案二  先逻辑判断,再聚合

示例:计算「省份」为「北京」且「客户名称」为「北控软件有限公司」的「合同金额」总量。

创建仪表板,选择「地区数据分析」数据集,创建「计算字段」,输入字段名称和公式:SUM_AGG(IF(省份="北京市"&&客户名称="北控软件有限公司",回款金额,0)),

如下图所示:

 公式说明:

公式说明
IF(省份="北京市"&&客户名称="北控软件有限公司",回款金额,0)如果同时满足「省份」为「北京」且「客户名称」为「北控软件有限公司」,则输出「回款金额」,否则输出 0
SUM_AGG(IF(省份="北京市"&&客户名称="北控软件有限公司",回款金额,0))对上一步输出的结果进行求和

缺陷:如果将公式作为一个新增字段使用,那么可能出现 无数据 的情况。因为明细表不支持聚合。在页面中添加计算字段是可以使用的,同样不支持明细表的使用。

方案三  聚合函数与非聚合函数进行嵌套

sum_agg(max(字段))是合法的,如下图所示:

方案四  使用fixed函数

目前只支持 实时数据,不支持抽取数据。

FIXED 函数表达式使用指定的维度计算值,而不引用分析区域中的维度。

比如:求指标在任意分组下的组内占比,分析一个数据,业务需要在一张表中看到门店、品类、品牌3个维度,有销售额和净利润两个指标,需要分析门店具体品类占所有门店品类销售的占比。

使用示例数据创建仪表板,添加计算字段,命名并输入公式:

FIXED(店名,品类描述,SUM_AGG(销售额))/FIXED(店名,SUM_AGG(销售额)),

如下图所示:

 公式说明:

公式说明
FIXED(店名,SUM_AGG(销售额))以店名为固定维度,计算每个店的汇总销售额
FIXED(店名,品类描述,SUM_AGG(销售额))以店名和品类描述为固定维度,计算每个店下每个品类的汇总销售额
FIXED(店名,品类描述,SUM_AGG(销售额))/FIXED(店名,SUM_AGG(销售额))每个店下,每个品类销售额汇总/每个店销售额汇总

 EXCLUDE、INCLUDE函数参考:

[直连]FIXED类函数 - FineBI帮助文档 (fanruan.com)

方案五  使用分组汇总功能,然后再逻辑判断

弊端:该方式得到的结果,不能很好的与其他表进行关联使用。

对于以下函数,是不合法的。

功能:如果(Code 1="D" 或 Code 1="C"),且 Code 2= "N",汇总Duration 的值

下面提供一种解决方案:

注:以下截图来源于官网,与本例子无关。只记录、参考操作步骤。

1、使用分组汇总功能

1)进入「数据准备>业务包」,点击「添加表>自助数据集」,如下图所示: 

 

2)进入自助数据集配置界面,从业务包的数据表中选择需要的字段,右侧预览中即显示选择的字段,如下图所示:

然后添加分组汇总

选择「自定义」分组方式

点击「添加分组」,其他的值可以分组到【其他】组。

 选择汇总的字段

 汇总字段支持添加「文本字段」、「数值字段」、「时间字段」,默认不填入字段,均支持重命名、删除字段操作。

注:「近似去重计数」功能支持的数据库版本:CLICKHOUSE、ORACLE(12.1或以上)、SQLSERVER(2019或以上)、PRESTO、REDSHIFT、VERTICA、MAXCOMPUTE。当数据库系统为REDSHIFT时,由于REDSHIFT的限制,只能同时对同一个字段做需要排序的聚合操作(如求去重计数、中位数、百分位、近似去重计数),同时对2个或以上的字段做此种聚合操作会发生错误。当数据库系统为VERTICA时,由于VERTICA的限制,只能同时使用(精确)去重计数或近似去重计数中的一个。

2、对分组后数据逻辑判断

新增字段

此时的公式改为:

// 错误的
IF(AND(${Code 1}="CD",${Code 2}="N"), SUM_AGG(${Duration}), null)

改为:
// 正确的
IF(AND(${Code 1}="CD",${Code 2}="N"), ${Duration}, null)

结果如下: 

 

### FineBI聚合函数与聚合函数的区别及使用场景 #### 区别 在FineBI中,聚合函数聚合函数有着不同的特性应用场景。 - **聚合函数** 聚合函数通常用于对单一记录单元格中的数据进行操作。这类函数不会跨越多个记录来计算结果,而是针对每一条独立的数据项执行特定的任务。例如,在文本处理方面,可以利用聚合的字符串函数来进行大小写转换是提取子串;对于数值型数据,则可以通过简单的算术运算符完成加减乘除等基本运算[^3]。 - **聚合函数** 相较之下,聚合函数旨在处理一组多组数据,并最终返回一个代表该集合特征的单一值。常见的聚合操作包括求平均数`AVG()`、总`SUM()`、最小值`MIN()`、最大值`MAX()`以及计数`COUNT()`等功能。当涉及到统计分析时,这些功能显得尤为重要,因为它们能够帮助分析师快速获取关于大量数据的关键信息摘要[^2]。 #### 使用场景 ##### 聚合函数适用场合: - 当需要基于单条记录的信息做简单变换而不涉及其他行的数据时; - 对于字符类型的字段进行格式化调整其他形式的文字编辑工作; - 实施基础数学运算如百分比计算、四则混合运算等情况下的表达式构建。 ##### 聚合函数的应用领域: - 探索性数据分析阶段用来初步理解变量分布特性; - 商业智能项目里为了支持决策制定而准备的各种度量标准创建。 ```sql -- 示例SQL查询展示如何分别应用聚合聚合函数 SELECT customer_id, -- 这是一个典型的聚合列 UPPER(first_name), -- 文本大写的聚合函数例子 LOWER(last_name), -- 文本小写的聚合函数例子 SUM(order_amount) AS total_spent, -- 订单金额总计作为聚合函数的例子 COUNT(*) as order_count -- 总订单数量也是通过聚合得到的结果 FROM orders GROUP BY customer_id; ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

种麦南山下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值