1 概述
计算列:即符合当前数据源SQL列定义语法规则的,在已有表中,用已有字段和SQL支持函数构造出的新的列;
有时,数据表中的原始维度和度量并不能满足我们的需求,需要使用公式或函数进行数据加工处理,这是就可以使用计算列。计算列:添加到数据模型表或查询中的一个新列,对每一行都计算值。
如果当前分析的数据不包含获取期望结果所需的特定字段,可以使用公式或已封装的函数进行数据加工处理,定义新的列。计算列适用场景如下:
- 数据补充:计算列可以通过基于表中已有的列进行计算,生成新的列来补充数据。例如,可以根据产品的单价和销售数量计算销售额,并将该计算结果存储在计算列中;
- 数据转换:计算列可以用于将数据格式化或转换为其他形式。例如,可以将日期时间列分解为年、月、日等部分,并存储在计算列中,以便后续按时间进行分析;
- 数据筛选:计算列可以用于根据特定条件对数据进行筛选和标记。例如,可以创建一个计算列来标记销售额超过某个阈值的产品。
信息 | ||
---|---|---|
| ||
1、计算列是表中新建一列,所以只能针对表或者模型的查询创建,并且只能在单表新建,无法跨表/查询创建。1、计算列是在表中新建一列,所以只能针对表或者模型的查询创建,支持单表新建,或跨表/查询创建,详细可参考:跨表创建计算列。 2、新建列 不支持聚合函数,如果手动输入的聚合表达式,预览数据或在报表层会报错。 3、在新建列的的表达式编辑框中,当前所在数据源支持的函数和表达式语法都可以使用。 4、目前编辑器只支持英文的标点符号,如果在编写计算字段表达式的时候,中英文引号、逗号和小括号等标点符号混用,可能会导致语法解析出错。 6、已添加的计算列,支持二次引用,比如引用到,如果在编辑器中手动输入的聚合表达式比如sum、count、avg等,预览数据或在报表层会报错。 3、计算列不支持窗口函数(原因:计算列是对当前行数据进行计算,而窗口函数是需要知道表全部数据的)、不支持INTERVAL关键字。 4、新建的计算列字段名称(在表字段属性查看):字段名+(查询名称)。 5、在新建列的的表达式编辑框中,支持解析当前使用数据库支持的函数、语法;开启数据模型引擎V2.0时,如果要使用数据库的原生函数需要在函数前面增加@。 6、目前编辑器只支持英文的标点符号,如果在编写计算字段表达式的时候,中英文引号、逗号和小括号等标点符号混用,可能会导致语法解析出错。 7、已添加的计算列,支持二次引用,比如引用到计算度量、计算命名集、计算成员。 7、如果要把已建的 8、如果要把已建的 计算列 作为度量,需要手动标记为度量。 8、报表层支持创建计算列:9、报表层支持创建计算列:在报表层创建的计算列只会保存在对应的报表中,不会保存在模型中;如果要保存在模型中供其他报表使用,需在模型中创建;报表层创建计算列详细可参考:透视分析创建计算列。 9、计算列,暂不支持参数。 10、在抽取模式创建的计算列需要先抽取才能正常预览数据。 11、计算列不支持 聚合函数比如sum、count、avg等,如果在表达式中手写加上了聚合函数,在预览或者报表呈现时会提示错误信息。 |
...
10、在抽取模式创建的计算列需要先抽取才能正常预览数据。 11、计算列支持快速“复制“。 12、计算列: 抽取模式下,会在日志中提示哪个计算列报错; 在直连模式下,不勾选它还是会报错。 13、跨表创建计算列,可参考:跨表创建计算列。 14、在计算列的语法定义中,仅支持单引号( 15、 计算列, 判断相等用一个=,不能用两个==。 |
2 示例说明(不跨表)
Smartbi 提供了添加计算列的功能,实现对已存在的字段再计算,从而可以得到新的字段。
...
2、在模型中创建 计算列 ,命名为 CityState
选项 | 内容 |
---|---|
入口 | 在关系视图中选择 表或查询,右键菜单 新建计算列。 |
名称 | 给新建列起一个比较符合业务的 名称。 |
数据格式 | 新建列支持字符串、数值型、日期、时间格式。 |
表达式编辑器 |
|
字段区域 |
|
函数区域 |
|
...
3、填写好基本信息以及表达式 点击 确定 之后,可以在维度区 对应的表或查询目录下看到新建的计算列CityState,以及预览对应的计算列数据(如果是抽取模式,则需要先 抽取 才能正常预览):
注意:新建的计算列字段名称:字段名+(查询名称)。
4、构建完模型并保存成功,并去建交互式仪表盘,最终效果如下:
...
5、构建完模型并保存成功,并去建交互式仪表盘,最终效果如下:
2.3 跨表创建计算列
详细可查看:跨表创建计算列。
3 计算列支持的函数
目前计算列除了以下产品封装的函数,还支持当前所在数据源支持的函数: