【辰哥小课堂】如何在BI中分析附件图像表元?

3130
5

辰哥 管理员

发表于2018-12-10 11:16

楼主
       在i@Report中,用户通过填报采集附件、图像数据,并将这些数据存放在数据库中,但是这些附件、图片数据采集到数据库后,在BI中又是如何分析附件、图像表元?附件、图像表元中采集的内容能否实现下载查看?怎样下载呢?

需求分析1. 数据存储
如下,在i@Report中设计了2个表元,一个是附件类型,一个是图像类型。这2项存放在数据库中会分为两个字段。


数据库表中存储如下(一般2个字段会紧挨着存储):


其中:
第一个字段用来记录附件的摘要信息,字段类型:字符串,包含文件大小,源文件名 ,格式为:
filesize=xxx;length=xxx;filename=xxx

另一个字段记录附件内容,字段类型:BLOB,二进制流。

2. BI中如何展现?
附件类型
对于附件类型,如果直接在BI中拾取BLOB这种大字段的类型字段进行分析,展示出来的是大字段的大小信息,无法直接展示不能实现,故只能通过下载的方式查看文件内容



图像类型
对于图像类型,BI分析表中可设置表元类型为“图像”即可。


但是直接去展示图像显然相对会浪费内存,也可以通过下载图片的方式去实现。

解决方案
解决方案有两种方式,一种是对于图像表元直接展示图片,另外一种是实现附件、图像下载后查看。

直接分析展示图像
表样设计如下图所示:


拾取图像对应的大字段,并设置表元D2的数据类型为“图像”。

注意:
在设置表样时浮动维表元要设置分组类型为只选择不分组因为大字段blob类型没有办法进行SQL分组,如求和,求最大值等。

效果如下:



点击“下载”相应附件、图像

表样设计如下图所示:



在表样中增加一列,用来点击下载。
注意,浮动维表元也是要设置分组类型为只选择不分组。
为增加的列“点击下载”设置钻取链接【万能式】,写钻取表达式如下所示:


window.lastclickevent= getEvent();_showfile('FJTX.A_243',['userid_','bbq_'],['<#=B2.value#>','<#=A2.value#>'],'<#=C2.value_filename#>');
window.lastclickevent= getEvent();_showfile('B0.A_19',['userid_','bbq_'],['<#=B2.value#>','<#=A2.value#>'],'<#=C2.value_filename#>');
其中:FJTX是主题表名称,A_243是附件的大字段,C2获取filename的值。

效果如下:

好处:
使用下载函数实现附件、图像下载,BLOB流字段不参与 SQL拼写,可节约内存。
下载附件函数说明
_showfile(blobfield,[keyfield1,keyfield2],[keyvalue1,keyvalue2],destfile,format)
参数说明:
  • blobfield 表示需要下载附件的大字段的名;
  • [keyfield1,keyfield2],[keyvalue1,keyvalue2]     表示下载附件所需要的关键字以及关键字的值,下载附件时的SQL中where条件需要;
  • destfile 附件下载时 显示的文件名;
  • format 默认为空 ,表示附件的压缩方式,目前暂不用,用来扩展。

       当然,还有一种方式,是使用宏表达式来实现按照上传时的名称命名下载后的文件,这就要用到数据库中附件摘要字段中的filename,其用法是在做分析表时,增加一列C作为文件名存放列,直接拾取摘要字段,设置其显示表达式 显示文件名称,表达式如下:
self.value_filename
函数中文件名称参数以宏表达式的方式获取,如下:
_showfile('B0.A_19',['bbq_','userid_'],['<#=A1.value#>','<#=B1.value#>'],'<#=C1.value_filename#>');
或者是
_showfile('B0.A_19',['bbq_','userid_'],['<#=A1.value#>','<#=B1.value#>'],'<#=C1.txt#>');



5个回答

只看楼主

韦韬然 数据老手Lv5

发表于2018-12-10 13:57

只看该作者

取消 关注该作者的回复

沙发

kira110 数据达人Lv4

发表于2020-5-25 10:48

只看该作者

取消 关注该作者的回复

板凳

请问为什么下载内容为0byte呀,

   

kira110 数据达人Lv4

发表于2020-5-25 10:48

只看该作者

取消 关注该作者的回复

地板

kira110 发表于 2020-5-25 10:48
请问为什么下载内容为0byte呀,

补充一句,我用的是ABI5.1.4

小亿 管理员

发表于2020-5-25 10:49

只看该作者

取消 关注该作者的回复

5#

kira110 发表于 2020-5-25 10:48
补充一句,我用的是ABI5.1.4

ABI和BI还是有区别呢?您的问题可直接先开提问帖让工程师帮您解决!

kira110 数据达人Lv4

发表于2020-5-25 10:52

只看该作者

取消 关注该作者的回复

6#

小亿 发表于 2020-5-25 10:49
ABI和BI还是有区别呢?您的问题可直接先开提问帖让工程师帮您解决!

好滴谢谢小亿

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号