例如:使用 IF 函数对聚合函数进行二次计算,当公式中含有非聚合参数时,公式不合法,如下图所示:
如下图所示:
示例:计算「省份」为「北京」且「客户名称」为「北控软件有限公司」的「合同金额」总量。
创建仪表板,选择「地区数据分析」数据集,创建「计算字段」,输入字段名称和公式:SUM_AGG(IF(省份="北京市"&&客户名称="北控软件有限公司",回款金额,0)),
如下图所示:
公式说明:
公式 | 说明 |
---|---|
IF(省份="北京市"&&客户名称="北控软件有限公司",回款金额,0) | 如果同时满足「省份」为「北京」且「客户名称」为「北控软件有限公司」,则输出「回款金额」,否则输出 0 |
SUM_AGG(IF(省份="北京市"&&客户名称="北控软件有限公司",回款金额,0)) | 对上一步输出的结果进行求和 |
缺陷:如果将公式作为一个新增字段使用,那么可能出现 无数据 的情况。因为明细表不支持聚合。在页面中添加计算字段是可以使用的,同样不支持明细表的使用。
sum_agg(max(字段))是合法的,如下图所示:
目前只支持 实时数据,不支持抽取数据。
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)进入「数据准备>业务包」,点击「添加表>自助数据集」,如下图所示:
2)进入自助数据集配置界面,从业务包的数据表中选择需要的字段,右侧预览中即显示选择的字段,如下图所示:
然后添加分组汇总
选择「自定义」分组方式
点击「添加分组」,其他的值可以分组到【其他】组。
选择汇总的字段
汇总字段支持添加「文本字段」、「数值字段」、「时间字段」,默认不填入字段,均支持重命名、删除字段操作。
注:「近似去重计数」功能支持的数据库版本:CLICKHOUSE、ORACLE(12.1或以上)、SQLSERVER(2019或以上)、PRESTO、REDSHIFT、VERTICA、MAXCOMPUTE。当数据库系统为REDSHIFT时,由于REDSHIFT的限制,只能同时对同一个字段做需要排序的聚合操作(如求去重计数、中位数、百分位、近似去重计数),同时对2个或以上的字段做此种聚合操作会发生错误。当数据库系统为VERTICA时,由于VERTICA的限制,只能同时使用(精确)去重计数或近似去重计数中的一个。
新增字段
此时的公式改为:
- // 错误的
- IF(AND(${Code 1}="CD",${Code 2}="N"), SUM_AGG(${Duration}), null)
-
- 改为:
- // 正确的
- IF(AND(${Code 1}="CD",${Code 2}="N"), ${Duration}, null)
结果如下: