<< Click to Display Table of Contents >> 替换数据集复制链接 |
1. 概述
1.1 应用场景
用户制作报表时,需要在不重新制作报表的前提下替换其他数据集。例如用户使用测试数据集制作好报表美化,再替换为实际数据集。
1.2 功能介绍
如果制作好的报告中不只一个组件的数据集需要替换为其他数据集,可以使用报告级别的替换数据集。
2. 替换数据集
1)在制作报告界面的顶部工具栏中选择【替换数据集】。
2)选择新的数据集后,编辑替换数据列为新列。
3) 点击“确定”,查看替换数据集后的报告。
➢说明:
若多个组件都绑定了“Sales”、“Produnct Type”、“Product”、“Profit”列,替换数据集后,所有组件上的绑定的对应数据列都会替换为“产品种类”、“销售额、“产品名称”、“利润”。
3. 替换结果
替换新数据集后,有两种结果:直接替换成功和弹出提示信息。原始列和新列的数据类型不匹配,弹提示信息不等于替换失败。
3.1 直接替换成功
如果报告所使用到的原始数据集的字段在新数据集中全部包含,并且结构数据类型一致,替换数据成功,数据集和数据都直接变为新数据集。
3.2 弹出提示信息
如果报告中已使用的原数据集字段在新数据集中不存在,则提示数据列不存在。
➢注意:
替换数据集时,可以不指定新列,后台执行时会自动匹配相同列名或别名的列进行数据替换,主要有以下几种场景:
•存在设置“别名”的场景
原数据集 |
新数据集 |
结果 |
|||
---|---|---|---|---|---|
列名 |
别名 |
列名 |
别名 |
备注 |
|
MARKET |
a |
MARKET |
无 |
替换成功,数据更换为新数据集相同列名的数据 |
|
MARKET |
a |
MARKET |
b |
替换成功,数据更换为新数据集相同列名的数据 |
|
MARKET |
MARKET_SIZE |
MARKET_SIZE |
无 |
查询中不存在列名为MARKET的列,也无别名为MARKET的列 |
替换成功,数据更换为新数据集的MARKET_SIZE |
MARKET |
MARKET_SIZE |
MARKET_SIZE |
无 |
查询中不存在列名为MARKET的列,存在别名为MARKET的列 |
替换成功,数据更换为新数据集的MARKET_SIZE |
MARKET |
MARKET_SIZE |
MARKET_SIZE |
无 |
查询中存在列名为MARKET的列,不管此列是否有别名 |
替换成功,数据更换为新数据集的MARKET |
MARKET |
a |
MARKET_SIZE |
a |
查询中不存在列名为MARKET的列 |
替换成功,数据更换为新数据集的MARKET_SIZE |
SALES |
AREA_CODE |
查询中存在列名为SALES和AREA_CODE的列 |
替换成功,数据更换为新数据集的SALES |
1)当存在相同的列名时,会直接替换为同名的列;
2)若不存在相同的列名,会优先拿新数据集的列名匹配原数据集别名,若不存在相同的,再拿新数据集别名匹配原数据集别名,同名的可以直接替换成功。
•存在使用“表达式”的场景
1)数据集上的表达式:
若原报告内绑定了数据集端新建的表达式列,替换数据集时会按表达式引用到的列去进行匹配,例如原数据集有:计算列1=col['SALES']-100),替换后,若新数据集存在列SALES,则绑定的表达式能正常执行,且数据会按新的SALES计算,但不会自动生成一个计算列1;若新数据集不存在列SALES,则绑定的表达式不能正常执行,会报列不存在,此时您需要修改列名或者替换其他数据集。详细场景参考下表:
原数据集 |
新数据集 |
结果 |
||
原始列 |
表达式列 |
原始列 |
表达式列 |
|
SALES |
表达式a(例如col['SALES']-100) |
SALES |
无 |
报告端不会生成表达式a,若原数据集端的列绑定到了组件上,替换后能正常按原表达式显示数据,计算时表达式里面的SALES会使用新数据集里面的SALES |
SALES |
表达式a(例如col['SALES']/100) |
替换成功,直接替换为新的表达式a |
||
无 |
无 |
提示列不存在,继续替换后,提示所依赖的列不存在 |
||
ID |
表达式a(例如col[ID']/1000) |
替换成功,直接替换为新的表达式a |
||
无 |
表达式b(例如now()) |
无 |
无 |
报告端不会生成表达式b,若原数据集端的列绑定到了组件上,替换后能正常按原表达式显示数据 |
无 |
表达式b(例如today()) |
替换成功,直接替换为新的表达式b |
2)报告上的表达式:
若原报告内绑定了报告端新建的表达式列,替换数据集时会按表达式引用到的列去进行匹配,并在报告端生成一个表达式列,若存在一个同名的表达式列则不再生成。例如原报告有:计算列1=col['SALES']-100),替换后,会自动生成一个计算列1,若新数据集存在列SALES,则绑定的表达式能正常执行,且数据会按新的SALES计算;若新数据集不存在列SALES,需要编辑计算列1,把引用到的列SALES替换为一个存在的列,详细场景参考下表:
原数据集 |
新数据集 |
结果 |
||
原始列 |
表达式列 |
原始列 |
表达式列 |
|
SALES |
表达式a(例如col['SALES']-100) |
SALES |
无 |
报告端会生成表达式a,计算时表达式里面的SALES会使用新数据集里面的SALES |
SALES |
表达式a(例如col['SALES']/100) |
替换成功,直接替换为新的表达式a |
||
无 |
无 |
提示列不存在,继续替换后,报告端会生成表达式a,表达式前面会有红色感叹号,此时需要编辑表达式内的SALES为一个存在的列才能正常执行 |
||
ID |
表达式a(例如col[ID']/1000) |
替换成功,直接替换为新的表达式a |
||
无 |
表达式b(例如now()) |
无 |
无 |
替换成功,报告端会生成表达式b,若原数据集端的列绑定到了组件上,替换后能正常按原表达式显示数据 |
无 |
表达式b(例如today()) |
替换成功,直接替换为新的表达式b |
4. 其他说明
如果制作好的报告中只需替换单个组件的的数据集,可以使用组件级别的替换数据集,详情请参考组件级别替换数据集。