<< Click to Display Table of Contents >> 计算列快速入门复制链接 |
1.概述
计算列允许利用数据集中已存在的数据列创建新的数据列。即基于已有列,创建一个新的列(或字段),其值或成员由所控制的计算来确定。
在永洪中,数据集和报表都可以创建新的计算列,在数据集上创建的计算列,存储于数据集中,在报告中创建的计算列,存储于报告中。新的计算列可用于图表、文本、参数、过滤等组件绑定数据。
➢说明:
原始数据保持不变。
2.为什么使用计算
由于很多原因,需要使用计算字段。
➢示例:
•将数据分割
•转换字段的数据类型,例如将字符串转换为日期。
•聚合数据
•筛选结果
•计算占比
常见的场景如下:
2.1数据集中缺少分析所需的数据列
➢例如:
如果数据集中有【销售额】和【利润】字段,想要计算【成本】,则可以使用类似于以下内容的公式创建【成本】字段。
2.2想要在组件中转换数据
➢例如:
要计算不同市场的销售额占比,可以使用动态计算,如下图所示:
2.3想要快速对数据分类
➢例如:
如果想要快速将可视化项中的利润数据着色为利润达成和利润未达成。您可以使用类似于以下的计算来创建计算字段,然后将其添加到“标记组”卡上的“颜色”。
IF SUM(col["利润"]) > 50000
THEN "达成"
ELSE "未达成"
END
3.创建、使用和编辑计算列
确定了您要使用的计算类型之后,是该创建计算列的时候了。
3.1数据集上新增计算列
3.1.1创建
在元数据和数据详情页面中,都可以基于某一个已有列来创建计算列。
•在元数据页面中创建计算列。
•在数据详情页面中创建计算列。
选择新建计算列,即可弹出计算列对话框。
3.1.2编辑
在元数据和数据详情页面,对于创建的计算列,可以再次编辑。
3.1.3使用
保存数据集,基于此数据集创建报告,添加图表等数据组件,即可以将数据集上创建好的计算列拖入组件中。
➢注意:
数据集上创建的计算列,在报告端不能被重新编辑,只能在数据集上编辑。
3.2在报告中新增计算列
3.2.1创建
在绑定区域中,选择绑定的数据集,点击更多图标,选择新建计算列。
即可弹出计算列对话框。可以看到函数列表包括基本计算和多粒度表达式计算。
3.2.2编辑
对于报告上创建的计算列,可以再次编辑。
3.2.3使用
直接将创建好的计算列拖入组件中即可。同一个报告里的不同组件使用此数据集的话,也能看到此数据集上在报告端创建的计算列。
3.3组件动态计算中的计算
3.3.1快速计算列
在组件绑定页面上,选择汇总列的下拉菜单按钮,选择预定义的动态计算器,即可以使用预定义的动态计算,组件数据会根据选择的计算来重新计算。
更多动态计算的说明,请参考数据处理与分析->动态计算。
3.3.2添加定制动态计算列
在汇总列上,点击添加动态计算。
在打开的动态计算对话框中,选择定制。
在弹出的计算列对话框中,输入计算的内容。可以看到函数列表里包括基本计算和动态计算。
点击确定输入动态计算名称
点击确定,组件的绑定列即变成动态计算列,组件的数据根据定义的计算来重新计算。
更多动态计算函数的说明,请参考动态计算函数。
3.4填报表格上使用计算列
在填报表格中,如果某一列要入库的数据不需要手动填入,而是需要从填入的数据中计算而来,就可以使用计算表达式来做计算。填报表格组件上选择某一列,入口如下。
计算表达式对话框如下。可以看到函数列表里包含基本计算。数据列只会列出组件上绑定的列,也就是只能基于组件上数据列填入的数据进行计算。比如数据库表中有销售额,利润,成本字段,要录入销售额,利润,成本填入此数据库表中。创建SQL数据集基于此数据表,将销售额、利润、成本绑定到填报组件上,成本列可以通过“销售额-利润”计算而来,不需要手动填入。
更多填报说明请查看:数据填报。
3.5其它说明
8.8之前和8.8之后,产品支持的计算列函数和处理逻辑不同。从8.8开始,永洪对计算列函数做了增强优化。主要优化点为:
•入口优化。
报告中新建计算列的时候,以前有两个入口:“新建表达式”和“新建聚合表达式”。在8.8及以后版本中,统一为一个入口:新建计算列。
•去掉数据类型选择框。
以前需要选择计算列返回的数据类型。在8.8及以后版本中,不需要再选择数据类型,产品自动判断返回的数据类型。
•改变计算引擎。
以前分为SQL表达式和非SQL表达式(采用JavaScript语法)。在8.8及以后版本中,分为基础函数、SQL语句、Mongo管道语句。基础函数即永洪产品支持的函数,采用产品规定语法,如果是直连数据库,可以转为SQL语法下推数据库执行。SQL语句需按照SQL语法写入,产品不做转换,直接将写入的内容合入到SQL语句中下推数据库执行。Mongo管道语句是对Mongo数据集来说,支持按Mongo管道语句支持的语法写入,产品不做转换,直接将写入的内容合入到管道语句中下推到数据库执行。
•性能优化。
以前非SQL表达式都采用JavaScript引擎处理,计算列全部在内存中计算。8.8及以后版本中,对于基础函数也进行了下推数据库处理,性能更优。