请上传宽度大于 1200px,高度大于 164px 的封面图片
    调整图片尺寸与位置
    滚轮可以放大缩小图片尺寸,按住图片拖动可调整位置,多余的会自动被裁剪掉
取消
twtd4(uid:60301)
职业资格认证:尚未取得认证
关于大量明细数据直接导出功能的设计思路
问题背景: 在帆软报表的使用中,我们发现报表平台在满足用户大量明细数据导出的需求时存在性能瓶颈,尤其是在处理一些特殊导出需求(如:业务数据不可分批导出且数据的时间跨度以年为单位,总数据量高达40W+条)时常常出现内存不足问题。换言之,这类需求的存在变成了报表平台的隐患,为此我们也曾饱受折磨。 解决思路: 经过分析,我们发现报表在执行大量明细数据查询时,花费大量资源来渲染表格,而对用户来说,他们只需要导出数据,而不需要查看表格。也就是说,如果能够跳过表格渲染,直接让用户获得Excel文件,则不仅能够加快用户获取数据的效率,同时也能大大减轻报表平台的压力。 为此,我们前后设计了3套方案: 方案一:利用报表平台的定时任务,后台导出Excel并通过邮件的方式发送给用户。这样可以避免用户在报表使用的高峰期将服务器拖垮。 在数据量不太大的情况下,这种方案是奏效的,但是一旦数据量过大,则会面临两个问题:①服务器空闲时间也没有足够资源导出相关数据(服务器配置已经不低了) ②导出的Excel文件过大,邮件无法发送。因此该方案不可取。 方案二: 利用Vertica数据库的导出命令,在服务器上写python脚本,通过paramiko操纵数据库导出CSV文件(由于VSQL不支持Excel的导出方式,只要采用CSV)。这种方法最初极为奏效,因为40W条数据用VSQL命令导出只需要2秒,非常神奇。但是这种方案对数据质量有着极高的要求,一旦数据中出现逗号、竖线等特殊字符,极易出现错行问题。由于数据量极大,错行问题难以排查,因此导出的数据对用户来说没有价值。 方案三: 利用Pandas(python的大数据处理工具)的大数据特性,将数据通过SQL查询出来存放到Pandas的 dataframe里面,然后利用pandas的 toExcel()方法将数据写到Excel文件中。经实验,此方案能够奏效,虽然速度比方案二慢了不少,但由于dataframe本身就是二维结构的,因此可以有效避免错行问题。更重要的是,这个方案为我们提供了巨大的想象空间。 在确定了第三套方案以后,我们在方案的基础上做了一系列的完善工作: 1、利用Flask框架将方案三中的处理逻辑做成Restful API的形式,为该方案与帆软报表进行集成提供了可能。 2、在帆软报表中,通过参数面板的开发,加入“直接导出”按钮,并在按钮事件中加入ajax代码,将用户在参数面板上选择的参数传递给API。 3、对集成方式进行进一步优化,实现“直接导出”功能的组件化开发,报表开发人员 只需要将样例模板中的相关组件复制过去,并根据实际需求进行简单修改即可完成该功能的无缝植入。 总结: 这套方案实现了对帆软现有平台功能短板的完美补充,对于大量数据导出的需求,合不合理是一回事,能不能满足是另外一回事。况且,在企业信息化逐步完善的过程中,将明细数据导出进行手工处理的场景短时间内是难以避免的,因此该方案在相当长的实际内仍存在价值。 编辑于 2018-1-22 16:40
一个靠帆软报表吹牛的程序猿
熊衍 江苏洋河酒厂股份有限公司 洋河酒厂在中国的白酒行业是一块金字招牌,信息化建设的水平在行业内也是名声在外的。随着这几年信息化建设工作的推进,数据越积累越多。可是前几年我们的报表应用水平却可以用“刀耕火种”来形容。 我是一个程序猿,一个专注做报表的程序猿。那几年,我们一直在寻找,一直在尝试。用过各式免费的报表工具。做的很苦很累,而且用过的这些工具各自有各自的问题,一言难尽。 我开始考虑寻找一个专业的报表平台来专门用于业务分析报表的开发。于是开始了并不算漫长的寻访过程,先后找到两家提供专业报表平台的公司,其中一家便是帆软。 选择帆软的理由其实很简单:图表。并不是说帆软报表平台只有图表,其实在后来与Finereport朝夕相处的日子里,他给了我很多惊喜。 帆软的图表有很多可以说道的地方。 我第一门精通的语言是ActionScript3 也就是Flash,学了3年Flash,后来Flash突然就死了。 在选择专业报表平台的时候,我制定了一些选择标准,其中“排除Flash图表”这一条是我特意加进去的。并不是因为我讨厌Flash图表,而是因为我对Flash太了解了,太知道它有多坑爹了。 帆软的JS图表像一股甘泉,让仿如坠身沙漠的我感到相见恨晚,我爱死了柱形图里面的那个SliderBar了。 帆软报表平台让我做到了一直想做却始终未能如愿的事:建立洋河的报表体系。之所以做不到,是因为缺乏统一报表平台支撑,每套系统的报表开发运维各自为战,这里面弊端横生,错综复杂。我在参加帆软BI产品南京站发布会曾经详细的聊过这事,后来帆软还把我的发言稿给上了头条(今日头条)。 后来,我一步一步的做到了。我带着我的Team一起踹开了很多扇们,我们建立了自己的统一权限分配机制、实现了不同业务模块报表的分类管理、实现了与企业门户的无缝集成、实现了帆软与SAP系统RFC的函数调用。这个过程中踩了很多的坑,也积累了很多经验。开发帆软报表不是我的核心技能,但却是我最愿意拿出来吹牛的话题。 以前,如果有业务部门的领导来找我提报表需求,我的内心独白大概是:“靠,这怎么搞!”现在,同样的场景下,我的反应大概是: “领导,我给你做一个这个怎么样?我再给你做一个那个怎么样?” 哈哈哈! 54109 54153
动态自由组合SQL参数模板
本帖最后由 twtd4 于 2016-12-22 14:50 编辑 模板特点说明: 1、该模板支持用户自行选择字段及对应值,并组合起来作为报表的查询条件。适用于用户要求的查询条件较多的场景。 2、用户可以根据当前所选择条件对应的值类型来动态选择查询字段值的输入控件。 3、用户在选择了查询字段并输入字段值之后,点击“添加查询条件”按钮,将条件加入文本框中。为了方便用户理解查询条件,模板将SQL语句进行了汉化处理。 4、当用户选择了多个查询条件进行多次查询时,可以在下方的多选下拉框中对已选条件进行自由组合,能够使用户有效避免进行多次繁冗的操作。 注意事项: 1、此模板的语法主要针对Oracle语法,但可以在“添加查询条件”按钮的点击事件中按照实际需要进行修改。 2、关于日期字段,由于某些情况下表中的日期字段是Varchar2类型,因此在组装SQL的时候使用 to_date(xxx,'yyyy-mm-dd.....') between to_date('1111-11-11','yyyy-mm-dd.....') and to_date('1111-11-11','yyyy-mm-dd.....') +1 的方式。(这种查询条件容易导致表索引失效,慎用!) ,因此您也可以在“添加查询条件”按钮的点击事件中按照实际需要进行修改。 3、在模板数据集中SQL组装时,由于用户选择的查询条件开头总会有一个AND关键字,因此推荐如下语法: select col1,col2,... from table where 1=1 ${Condition} 。 4、查询按钮的点击事件中有一个调用alert函数,是为了方便报表设计师们所选择条件的真实代码进行查阅,在实际上线时应将其注释掉。
V8地图BUG整理
V8地图存在问题 1、中国地图没有标出青海省 2、新疆没有标出乌鲁木齐市 3、北京城区几个的几个区没有画出来 4、上海的行政区划与实际情况不吻合
个人成就
内容被浏览113,439
加入社区9年165天
返回顶部