大数据量时的后台导出

<< Click to Display Table of Contents >>

当前位置:  报告分享与协同 > 报告常用操作 > 分享和协同 > 输出 

大数据量时的后台导出

复制链接

1. 概述

1.1 场景介绍

用户通过查看报告对所查数据进行下载(输出PDF/Excel/Word/Word(易编辑)/PNG/CSV/PPT)时,常常面临查询数据量大、导出时间长的问题。为了提升用户体验,产品提供了“大数据量时的后台导出”功能,将查询结果集较慢的转为后台队列任务导出,将后台查询结果转为结果集下载到服务器,用户最终通过下载文件查看结果。

该功能适用于以下场景:

大数据量报告导出:当用户需要导出包含大量数据的报告时,如年度财务报表、销售数据汇总等,传统的前端导出方式可能会因为数据量过大而导致响应缓慢或超时。

复杂查询任务:执行复杂的SQL查询或数据聚合操作时,由于计算量大,前端直接处理可能导致页面卡顿或崩溃。

多格式导出需求:用户需要根据不同需求导出多种格式的文件,如PDF、Excel、Word、PNG、CSV、PPT等,且每种格式的文件大小可能都很大。

1.2 功能简介

后台导出功能,通过设立后台队列任务机制,将查询结果集较大的导出任务转至后台处理。用户提交导出请求后,无需等待前端直接处理完成,而是可以在后台作业管理界面查看任务进度,并在任务完成后下载结果文件。该功能有效解决了大数据量导出时的性能瓶颈问题,提升了用户体验。

2. 功能说明

2.1 参数配置

bi.properties文件转后台导出相关配置项如下:

参数

说明

备注

req.timeOut=10000

请求超时时间,单位ms。默认为10000,小于10000不启动转队列,大于10000按照时间限定将查询转队列。

 

req.trans.maxrow=5000000

请求最大行数,默认为5000000。小于5000000不启动转后台,大于5000000按照行数限定将查询转后台。

 

trans.auto=false

false:超过req.timeOut的值,可在提示框中选择是否转为后台导出。后台导出任务的导出结果在消息中心或后台作业管理界面下载查看。默认为false。

true:超过req.timeOut、req.trans.maxrow参数的任一默认值,下载自动转为后台任务,后台导出任务的导出结果在消息中心或后台作业管理界面下载查看。

 

db.defense.timeOut=2400000

控制报告页面单个sql执行的最长时间。如果超过配置的该值,但未执行完毕,前端会收到 dialog 提示,本次操作取消。如果要转队列,需先配置db.defense.timeOut。

 

req.trans.export.path

查询请求超时后下载文件目录。默认为/YHDownload,与bihome平级。设置需要【绝对路径】

 

req.trans.job.interval=60000

转后台间隔时间,单位ms。未超过间隔时间,新任务会冲掉旧任务。默认配置为60000,或者不进行配置的时候,不冲掉旧任务

后面新操作每执行一次,时间间隔又会被重置。例如设置时间间隔为10s【10000】,那么再第一次触发的时候开始计时,如果在此时间内,再次进行查询,时间又会被重置10s开始计算

req.trans.job.user.space=500

每个用户默认磁盘空间大小,单位是M,默认为500M

单c节点单用户,如果是集群环境需要对每个节点下进行配置

req.trans.max.jobs=0

下载导出需求执行任务最大队列数

 

trans.to.job.req=export

query:查询请求转后台

export:输出请求转后台,默认为export

all:查询和输出请求都会后台,执行查询超过req.timeout或req.trans.maxrow也会转队列

 

download.job.ip=192.168.0.160:8080/bi/viewer

配置该参数到bi.propreties,设置负载均衡下载地址(即邮件发送的文件下载地址),配置该地址为服务器下载文件的地址,格式为ip+端口。打开链接后进入登陆页面,输入用户名和密码后就自动开始下载文件

85版本需要后面加上/bi/viewer;因为可以自定义ip的内容

req.trans.mail=false

false:导出成功后不发送邮件。

true:默认值,导出成功后以附件形式发送邮件。

无论配置false还是true,导出失败都会发邮件。

10.2及以前的版本默认值为false。

req.checkDl.interval=0.1  

0.1天去检查是否删除30天以前的文件:删除,不再需要。

在重启server的时候删除一次,之后每间隔24小时check一次。

 

req.deleteDl.circle

保留30天内的文件和job。

 

 

 

 

2.2 应用举例

2.2.1 报告下载自动转为后台队列任务

1)打开产品目录下vividime/bihome/bi.properties文件,设置req.trans.maxrow=500,req.timeOut=100,trans.auto=true。即设置转换最大行数500行,单个SQL执行最长为100ms,超过req.timeOut、req.trans.maxrow任一参数的值,下载自动转为后台队列任务。

2)重启产品。

3)打开报告。

4)导出报告数据,点击报告顶部工具栏上的“输出 > Word格式”,弹出提示预计下载时间过长,已将导出任务转为后台队列任务。

viewdb-export-queue5_zoom82

5)导出组件数据。点击组件顶部工具栏的“导出 > 导出Excel”,同样弹出提示预计下载时间过长,已将导出任务转为后台队列任务,

6)资源管理树中选择“更多 > 后台作业管理”中查看后台作业的情况。

viewdb-export-queue4_zoom57

2.2.2 报告、组件下载自行选择是否转为后台队列任务

1)打开产品目录下vividime/bihome/bi.properties文件,设置req.timeOut=100,trans.auto=false。即设置单个SQL执行最长为100ms,超过req.timeOut值,报告下载选择是否转为后台队列任务。

2)重启产品。

3)打开报告。

4)导出报告数据,点击报告顶部工具栏上的“输出 > Word格式”,提示导出时间过长,可选择取消导出,转为后台导出任务。

exporttip_zoom93

5)点击“转为后台导出”,报告导出任务转为后台导出。

6)导出组件数据:点击组件顶部工具栏上的“导出 > 导出Excel”,同样提示导出时间过长,可选择取消导出,转为后台导出任务。

7)点击“转为后台导出”,组件导出任务转为后台导出。

8)资源管理树中选择“更多 > 后台作业管理中”中查看后台作业的情况。

exporttask_zoom52

3.后台作业管理说明

资源名称:资源的全路径,方便用户识别是哪个报告或组件的导出任务。

资源类型:指明是哪种类型的资源被导出,便于用户了解每个任务的导出内容。如分析报告、大屏报告、即席分析、组合报告、卡片。

详细信息:展示具体组件或资源的导出信息,如组件“***” - 输出PDF;组件“***” - 输出CSV;组件“***” - 输出图片;输出PDF;输出PNG;输出Excel;输出Word;输出CSV;输出Word格式(易编辑);输出PPT;查看(当trans.to.job.req=all时出现)。

创建人员:记录进行导出操作的用户信息,便于追溯和管理。

创建时间:显示任务转为后台任务的具体时间。

运行时长:任务执行的时长,帮助用户评估系统性能和任务效率。

状态:提供任务的当前状态,如正在运行、待运行、完成、失败、取消

失败原因:如果任务失败,会显示失败的具体原因,帮助用户定位问题

操作:下载。下载同消息中心的下载。当任务的状态是完成时,用户可以点击下载按钮获取结果文件。

删除:用户可以选择删除已完成的任务及其对应的导出文件,以释放存储空间。

运行/停止:当任务是完成、失败、取消的时候,可以点击运行;当任务是正在运行、待运行的时候,可以点击停止。

批量运行:当有完成、失败或取消的任务选中时,可以点击批量运行。

批量停止:当有正在运行或待运行的时候,可以点击批量停止。

批量下载:当有完成的任务被选中时,可以点击批量下载。

批量删除:当有任务被选中时,可以点击批量删除。

4.多C场景

在集群环境中,导出的文件可以在每个开启调度任务的C节点上同时备份。这提高了系统的容错能力,即使其中一个C节点宕机,其他节点仍然可以继续处理导出任务并提供文件下载服务。此外,如果通过req.trans.export.path配置了共享路径,则不需要在每个C节点上进行文件备份。