菜单

业务模型计算列

计算列

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

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

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

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

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

支持类型

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

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

添加入口

业务模型计算列入口

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

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

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

管理计算列

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

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

编辑计算列

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

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

函数组成

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

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

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

内容 说明
函数 IF
字段 合同金额
运算符 >
文本表达式
  • 字符串文本:"大订单"、"小订单"
  • 数字文本:2000

函数格式与支持清单

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

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

函数分类 函数名称 语法说明(界面名称语法备注区域) 示例 参数数据类型 返回数据类型
聚合函数 SUM sum(number) 返回表达式中所有值的总和 sum([sales]) <数值 Number> <数值 Number>
聚合函数 AVG avg(number) 返回表达式中所有值的平均值 avg([sales]) <数值 Number> <数值 Number>
聚合函数 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]) <数值 Number> <数值 Number>
聚合函数 MIN min(exp) 返回表达式中所有值的最小值 min([sales]) <数值 Number> <数值 Number>
逻辑函数 CASE case <expr> when <value1> then <return1> when <value2> then <return2> ... [else <else>] end 执行逻辑测试并返回相应的值。case 函数可评估 expr,并将其与一系列值(value1、 value2 等)比较,然后返回结果。 case when [City]="上海" then [City] else null end 根据 exp 而定 根据 exp 而定
逻辑函数 WHEN case <expr> when <value1> then <return1> when <value2> then <return2> ... [else <else>] end 执行逻辑测试并返回相应的值。case 函数可评估 expr,并将其与一系列值(value1、 value2 等)比较,然后返回结果。 case when [City]="上海" then [City] else null end 根据 exp 而定 根据 exp 而定
逻辑函数 THEN case <expr> when <value1>极左; then <return1> when <value2> then <return2> ... [else <else>] end 执行逻辑测试并返回相应的值。case 函数可评估 expr,并将其与一系列值(value1、 value2 等)比较,然后返回结果。 case when [City]="上海" then [City] else null end 根据 exp 而定 根据 exp 而定
逻辑函数 ELSE case <expr> when <value1> then <return1> when <value2> then <return2> ... [else <else>] end 执行逻辑测试并返回相应的值。case 函数可评估 expr,并将其与一系列值(value1、 value2 等)比较,然后返回结果。 case when [City]="上海" then [City] else null end 根据 exp 而定 根据 exp 而定
逻辑函数 OR case when <expr1> or <expr2> then <then1> [else <else>] end 对两个表达式执行或者的条件判断。 case when ([Sales] < 0 or [Sales] = 0) then "没有盈利" else "盈利良好" end 根据 exp 而定 根据 exp 而定
逻辑函数 AND case when <expr1> and <expr2> then <then1> [else <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) 如果 <expr1> 不为 null,则返回该表达式 expr1,否则返回 <expr2>。 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) 返回指定精度 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 <日期时间 Datetime> <日期时间 Datetime>
日期 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 <日期时间 Datetime> <日期时间 Datetime>
日期 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 <日期时间 Datetime> <日期时间 Datetime>
日期 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 <日期时间 Datetime> <日期时间 Datetime>
日期 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 <日期时间 Datetime> <日期时间 Datetime>
日期 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 <日期时间 Datetime> <日期时间 Datetime>
日期 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 <日期时间 Datetime> <日期时间 Datetime>
日期 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 <日期时间 Datetime> <日期时间 Datetime>
日期 years_add YEARS_ADD 增加指定年数 执行时间北京时间:2023-02-04 08:46:27;years_add(now(),1)=2024-02-04 08:46:27 <日期时间 Datetime> <日期时间 Datetime>
日期 years_sub YEARS_SUB 增加指定年数 执行时间北京时间:2023-02-04 08:46:27;years_sub(now(),1)=2022-02-04 08:46:27 <日期时间 Datetime> <日期时间 Datetime>

使用计算列

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

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

上一个
编辑业务模型
下一个
业务模型水平拼接
最近修改: 2025-03-10