菜单

业务模型计算列

计算列

已有的数据中缺少分析所需的数据,需要对数据进行二次加工;

例如:用户想要判断当前的合同金额属于「大订单」还是「小订单」,但是现在的数据中并没有该类型的字段。

例如:当前模型中的字段名称不符合业务使用诉求,想修改成其他的名字进行展示。

业务集市的「计算字段」提供了添加计算列的功能,实现对已存在的字段再计算的能力,从而可以得到新的字段,可以方便实现目标字段。支持添加维度计算列和指标计算列。

例如:用户使用计算列增加一个新的维度字段,当「合同金额」大于1000000 时是大订单。

支持类型

以下来源的业务模型支持新建计算列的能力,支持范围如下:

  • 指标分析
  • 事件分析
    • 标准聚合模式
    • 结果表模式
  • session分析
    • 标准聚合模式
    • 结果表模式
  • 漏斗分析-结果表模式
  • 留存分析-结果表模式
  • session分析-结果表模式
  • 自定义查询
  • 数据表

添加入口

业务模型计算列入口

业务模型计算列的添加入口如下图所示:

  • 业务模型详情页展示「计算字段」入口;
  • 此功能受「管理权限」控制,需要有当前模型的协同管理权限,才支持使用此功能。

图表计算列入口

业务模型计算列的添加入口如下图所示,整体制作可视化组件请参考:制作可视化组件

管理计算列

进入计算列的页面后,可对当前的计算列进行管理:

  1. 搜索:支持对计算列的名称进行搜索,快速定位目标的计算列;
  2. 新建:支持新建,每个模型有新建的个数限制,如有需要,可联系运维调整个数限制;
  3. 计算列名称:当前计算列的名称,每个模型中的计算列不可重复
  4. 类型:该计算列的类型
  5. 操作-编辑:进入该计算列的编辑界面,修改该字段的名称、函数、语句等
    操作-删除:删除此字段

编辑计算列

进入计算列的编辑界面,界面介绍如下:

  1. 编辑/修改计算列名称;
  2. 快捷添加常用的运算符;
  3. 公式输入区;
  4. 计算列支持的函数;
  5. 该模型中的基础字段与计算列;
  6. 函数或字段解释区,支持解析当前语句是否正确,并展示语句错误原因。

函数组成

函数计算列由4个部分组成:


内容说明
1函数用于对字段中的值或内容进行转换的语句
2字段 用户数据表中的维度或指标
3运算符指明运算的符号
4文本表达式按照写入内容表示的常量值


例如,假设有以下计算列:IF(合同金额>2000,"大订单","小订单");对应计算列内容如下所示:


内容说明
1函数IF
2字段

合同金额

3运算符>
4文本表达式
  • 字符串文本:"大订单"、"小订单"
  • 数字文本:2000


函数格式与支持清单

函数在使用的过程中需要满足目标格式,例如下图:

区域1 是函数名称,区域2是参数数据类型,隐含返回的数据类型,主要函数说明如下:

函数分类函数名称语法说明(界面名称语法备注区域)示例参数数据类型返回数据类型
聚合函数SUM

sum(number)
返回表达式中所有值的总和

示例:
sum([sales])

numbernumber
聚合函数AVG

avg(number)
返回表达式中所有值的平均值

示例:
avg([sales])

numbernumber
聚合函数COUNT

count(exp)
返回表达式中所有值的计数

示例:
count([id])

number;

string;

datetime;

(bool)

number
聚合函数DISTINCT COUNT

distinctcount(exp)
返回表达式中所有值的去重计数


示例:
distinctcount([userid])

number;

string;

datetime;

(bool)

number
聚合函数MAX

max(exp)
返回表达式中所有值的最大值


示例:
max([sales])

numbernumber
聚合函数MIN

min(exp)
返回表达式中所有值的最小值


示例:
min([sales])

numbernumber
逻辑函数CASE

case when then when then ... [else ] end
执行逻辑测试并返回相应的值。case 函数可评估 expr,并将其与一系列值(value1、 value2 等)比较,然后返回结果。

case when then when then ... [else ] end:执行逻辑测试并返回相应的值。case 函数根据 condition 执行为 true,返回结果。 

示例:

case when [City]="上海" then [City] else null end

 

根据exp而定根据exp而定
逻辑函数WHEN

case when then when then ... [else ] end
执行逻辑测试并返回相应的值。case 函数可评估 expr,并将其与一系列值(value1、 value2 等)比较,然后返回结果。

case when then when then ... [else ] end:执行逻辑测试并返回相应的值。case 函数根据 condition 执行为 true,返回结果。

示例:

case when [City]="上海" then [City] else null end

 

根据exp而定根据exp而定
逻辑函数THEN

case when then when then ... [else ] end
执行逻辑测试并返回相应的值。case 函数可评估 expr,并将其与一系列值(value1、 value2 等)比较,然后返回结果。

case when then when then ... [else ] end:执行逻辑测试并返回相应的值。case 函数根据 condition 执行为 true,返回结果。

示例:

case when [City]="上海" then [City] else null end

 

根据exp而定根据exp而定
逻辑函数ELSE

case when then when then ... [else ] end
执行逻辑测试并返回相应的值。case 函数可评估 expr,并将其与一系列值(value1、 value2 等)比较,然后返回结果。

case when then when then ... [else ] end:执行逻辑测试并返回相应的值。case 函数根据 condition 执行为 true,返回结果。


示例:

case when [City]="上海" then [City] else null end

 

根据exp而定根据exp而定
逻辑函数OR

case when or then [else ] end
对两个表达式执行或者的条件判断。


示例:

case when ([Sales] < 0 or [Sales] = 0) then "没有盈利"
else "盈利良好" end

 

根据exp而定根据exp而定
逻辑函数AND

case when and then [else ] end
对两个表达式执行并且的条件判断。


示例:

case when(['Profit'] >100 and ['Profit'] <500) then "一般盈利"
else "盈利未知"
end

 

根据exp而定根据exp而定
逻辑函数IIF

iif(condition, true,false)
检查某个条件是否得到满足,如果为 true 则返回一个值,如果为 false 则返回另一个值。

示例:
iif (sales>6,1,0),如果此列销售额的值大于6就返回1,否则返回0

bool,exp1,exp2

number

string

datetime

(bool)

逻辑函数IFNULL

ifnull(exp1, exp2)
如果 不为 null,则返回该表达式expr1,否则返回

示例:
ifnull([Profit], 0)

根据exp而定

exp1或exp2

其他mod

mod(number1,number2)
用于计算 x 与 y 相除的余数

示例:
MOD(number1, number2)

number

number

其他floor

FLOOR(number)
向下取整数

示例:
FLOOR(3.1415926)=3

number

number

其他ceil

ceil(number)

向上取整数

示例:
CEIL(10.1)=11

number

number

其他coalesce

coalesce(expression1, expression2, expressionN)
获取多个表达式中的第一个非 NULL 值,输入参数类型与函数输出类型仅支持 number,string,date,且所有输入参数类型需保持一致

示例:
COALESCE(column1, column2) 

根据exp而定

根据exp而定

其他round

round(double a, int d)

round(double a, int d) 返回指定精度 d 的 double 类型,维度最大保留 d 位,数值最大保留 4 位

示例:

round(6.66667,4)=6.6667, round(6.123)=6.0

number

number

日期date_sub

date_sub(date/date startdate, int/bigint days)
减少指定天数

示例:
执行时间北京时间:2023-02-04 08:46:27;days_sub(now(), 1)=2023-02-03 08:46:27

date

date

日期date_add

DATE_ADD(date/date startdate, int/bigint days)
增加指定天数

示例:
执行时间北京时间:2023-02-04 08:46:27;days_add(now(), 1)=2023-02-05 08:46:27

date

date

日期minutes_add

MINUTES_ADD(date date, int/bigint minutes)
增加指定分钟

示例:
执行时间北京时间:2023-02-04 08:46:27;minutes_add(now(),1)=2023-02-04 08:47:27

date

date

日期minutes_sub

MINUTES_SUB(date date, int/bigint minutes)
减少指定分钟

示例:
执行时间北京时间:2023-02-04 08:46:27;minutes_sub(now(),1)=2023-02-04 08:45:27

date

date

日期hours_add

HOURS_ADD(date date, int/bigint hours)
增加指定小时

示例:
执行时间北京时间:2023-02-04 08:46:27;hours_add(now(),1)=2023-02-04 09:46:27

date

date

日期hours_sub

HOURS_SUB(date date, int/bigint hours)
减少指定小时

示例:
执行时间北京时间:2023-02-04 08:46:27;hours_sub(now(),1)=2023-02-04 07:46:27

date

date

日期weeks_add

WEEKS_ADD(date date, int/bigint hours)
增加指定周数

示例:
执行时间北京时间:2023-02-04 08:46:27;weeks_add(now(), 1)=2023-02-11 08:46:27

date

date

日期weeks_sub

WEEKS_SUB(date date, int/bigint hours)
减少指定周数

示例:
执行时间北京时间:2023-02-04 08:46:27;weeks_sub(now(), 1)=2023-01-28 08:46:27

date

date

日期years_add

YEARS_ADD
增加指定年数

示例:
执行时间北京时间:2023-02-04 08:46:27;years_add(now(),1)=2024-02-04 08:46:27

date

date

日期years_sub

YEARS_SUB
增加指定年数

示例:
执行时间北京时间:2023-02-04 08:46:27;years_sub(now(),1)=2022-02-04 08:46:27

date

date

使用计算列

完成计算列的创建后,可在详情页界面预览使用,如下图所示:

  • 指标类型的计算列在指标「展示项」中设置;
  • 维度/分组类型的计算列在维度/分组的「展示项」中设置;
  • 确认勾选后,在右侧数据展示区即可预览目标计算列。

上一个
编辑业务模型
下一个
业务模型水平拼接
最近修改: 2024-12-27