精华内容
下载资源
问答
  • 团队需要分享、沟通,数据分析师需要洞察数据、分析结果分享给企业领导、团队同事、大众媒体及更多的利益相关方,Word/PowerPoint/...使用同一份模板,定期的分析报告只需要修改日期条件,几分钟内就能得到一份全新的

    团队需要分享、沟通,数据分析师需要洞察数据、分析结果分享给企业领导、团队同事、大众媒体及更多的利益相关方,Word/PowerPoint/WPS仍然是最常见的分享形式。通过分析报告,数据分析师可以轻松的将Smartbi Insight中的分析结果融入日常办公中。

    数据分析师需要做定期的报告,例如每周、每月的市场营销报告、财务绩效报告、行业数据报告等等,以往这些报告耗时耗力,Smartbi Insight能够极大的简化工作、提高效率。使用同一份模板,定期的分析报告只需要修改日期条件,几分钟内就能得到一份全新的报告。

    Smartbi Insight提供一体化的闭环工作方式,数据分析师可以利用Smartbi Insight的数据集、透视分析报表、多维分析报表等资源,完成分析过程,将数据的洞察结果变为简洁的报表、美观的图形。用户在部署分析报告后,可以登录Smartbi Insight服务器,查看分析结果,将表格、图形插入Office中。

    Smartbi Insight支持报告模板功能,数据分析师可以制作格式固定,但具体内容可变的Office模板,每周、月制作报告时,只需要修改报告月份、日期等条件,就能快速制作一份全新的报告,大大提高工作效率,告别复制黏贴的苦力活。同时能够结合产品的计划任务功能,做到报告定时生成与发送。

    以Microsoft Office为例,分析报告分为Word分析报告、PPT分析报告。

    Word分析报告

    在这里插入图片描述

    PPT分析报告

    在这里插入图片描述

    对象:适用业务分析人员、管理层。

    特点:

    1、将BI扩展到Office终端

    ● 利用Office插件,将Smartbi的资源添加到Word、PPT、WPS文字或WPS演示中,制作动态分析报告。

    2、分析报告制作可视化

    ● 通过拖拽或双击导入图形、表格、参数等。

    ● 可视化挑选单元格。

    3、定时生成报告

    ● 利用计划任务的功能,可以定时自动生成报告。

    Smartbi Insight以中国式报表、多维度分析、可视化仪表盘为核心,满足报表需求的功能,以“真Excel”为特色,将Office Excel和WPS表格变为企业级WEB报表设计器,表格样式与计算逻辑的灵活性不言而喻。

    展开全文
  • 大部分的数据分析师都或多或少掉入这样的陷阱:每天大部分的工作都花在查数上,干着干着变成了“查数菇”。看上去帮老板或其他同事查数据是数据分析师天经地义的任务...老板在做决策缺一项数做判断依据,要快速查询...

    大部分的数据分析师都或多或少掉入这样的陷阱:每天大部分的工作都花在查数上,干着干着变成了“查数菇”。看上去帮老板或其他同事查数据是数据分析师天经地义的任务,怎么会成为陷阱呢?我来给你分析分析:

    • 业务部门需求多,查数据的任务量特别大。
    • 查数据的任务急。运营做了一天活动想第二天早上就看到活动的效果数据;产品新上线了一个新功能,想第一时间看看功能的使用数据;老板在做决策缺一项数做判断依据,要快速查询.....大部分的查数需求都是很急的,业务会一遍又一遍的催。
    • 手工查数据特别容易出错。无论多么简单的查询步骤,手工操作都可能导致失误,尤其是对于频繁操作又很急迫的查数据任务来说,错误发生的可能性就更大了。
    • 单纯的查数不能做很好的数据展示。因为任务琐碎且紧急,所以时间往往不允许我们静下心来做数据可视化展现,而是生硬的给出一些数字,这对一般的业务人员不是特别友好,他们可能不能给充分理解数字背后的业务含义,更不可能要求他们自己完成对数据的二次处理以求得出一些进一步的分析,数据应该起到的价值因此会大打折扣。
    • 查数据对分析师的成长无益。查数据的具体工作基本就是一些SQL和Excel的机械操作,数据分析师在其中即不能提升技能,也不会增长分析经验,长久来看,多做无益。

    所以,查数据就是这样一个费时耗精力、低价值、容易错、零成长的任务,而且因为它的紧急性,你可能很容易把它放在任务清单的最前面去执行,直到你把一大堆查数据任务都完成之后,已经疲惫不堪的你会发现时间已经很晚,而那些真正有价值的分析任务你只能留到明天,可到了明天又会出现很多新的查数据任务,就这样周而复始,恶性循环!

    有什么办法摆脱这样的恶性循环吗?答案是:不做!可不做那些业务人员怎么办,他们还急着要数据啊,答案是:不自己做!那谁来做呢?答案是:交给自动化报表来做

    Excel半自动化报表

    简单而机械的任务不适合人工手动完成但却很适合机器自动完成,即便你目前除了Excel外一无所有,至少也可以通过搭建半自动Excel模板的方式将所有的查数据需求整合成一张数据报表,这种报表仅需要通过复制粘贴的方式将数据源输入模板,之后的数据处理和展现都能自动完成。

    这里我以一个人的健身数据为例,具体操作如下:

    • 梳理出平时经常要查询的数据需求。

     

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

     

    • 将搜集来的数据源整理成一维表,一般从系统导出或SQL查询的数据直接就是一维表,所以复制过来就行。有几个数据源就建几个sheet。(当然这个案例比较特殊,是需要手动记录的)

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

    • 新建一个sheet起名“展现”,在里面建立一个时间筛选器

     

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

    • 在新建一个sheet起名“后台”,将刚才时间筛选器筛选的时间引用过来。

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

    • 利用sumif函数,将不同数据源的数据合并在一起,通过时间筛选器引用过来的日期控制显示的日期行。

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

    • 根据这些合并好的数据,创建图表放入“展现”里,再美化一下,做成一个数据展现看板。

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

    python自动化报表

    当然,上述的解决方案还不够完美,因为毕竟还得每天复制粘贴一遍,只能算是半自动化报表,还有一方法就是用python 代码来操控excel进行相似性很高或者重复性、繁琐的工作。

    具体的过程需要用到3个工具包:

    1.xlrd:从Excel电子表格中提取数据  
    2.xlwt:将数据写入Excel电子表格  
    3.xlutils:提供一组处理Excel文件的实用程序 

    python操作excel的相关工具包可以具体到操作指定单元格的填充样式、数值类型、数值大小等,但是这个过程需要一定pandas数据处理功底。具体操作步骤如下:

    1.从指定文件路径读取excel表格,进行一定操作,然后保存到另一个excel文件:result.xlsx

    import xlwt
    import xlrd
    from xlutils.copy import copy
    import pandas as pd
    from pandas import DataFrame,Series
    import os
    os.chdir('./')
    # 从指定文件路径读取excel表格
    df = pd.read_excel('D:/mypaper/data/data.xlsx')
    # 查看df内容

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

    # 根据age算出出生年份,增加一列
    import datetime
    import os
    year = datetime.datetime.now().year#获取当前系统时间对应的年份
    df['birth'] = year-df['age']
    df.to_excel('result.xlsx')#保存到当前工作目录,可以用os.getcwd()查看
    #查看下此时df的内容,可以看到已经生成了birth这一列

     

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

    2.单元格操作

    
    
    # 定义方法:读取指定目录下Excel文件某个sheet单元格的值
    def excel_read(file_path,table,x,y):
         data = xlrd.open_workbook(file_path)
         table = data.sheet_by_name(table)
         return table.cell(y,x).value
    
    # 定义方法:单元格值及样式
    write_obj_list = []
    def concat_obj(cols,rows,value):
        write_obj_list.append({'cols':cols,'rows':rows,'value':value,\
    'style':xlwt.easyxf('font: name 宋体,height 280;alignment: horiz centre')})
    
    # 定义方法:合并单元格
    def merge_unit(srows,erows,scols,ecols,value):
        write_obj_list.append({'id':'merge','srows':srows,'erows':erows,'scols':scols,\
    'ecols':ecols,'value':value,'style':xlwt.easyxf('font: name 宋体,height 280;alignment: horiz centre')})
    
    # 定义方法:更新excel
    excel_update(file_path,write_obj_list,new_path):
        old_excel = xlrd.open_workbook(file_path, formatting_info=True)
        #管道作用
        new_excel = copy(old_excel)
        '''
        通过get_sheet()获取的sheet有write()方法
        '''
        sheet1 = new_excel.get_sheet(0)
        '''
        1代表是修改第几个工作表里,从0开始算是第一个。此处修改第一个工作表
        '''
        for item in write_obj_list:
            if 'id' not in item.keys():
                if 'style' in item.keys():
                    sheet1.write(item['rows'], item['cols'], item['value'],item['style'])
                else:
                    sheet1.write(item['rows'], item['cols'], item['value'])
            else:
                if 'style' in item.keys():
                    sheet1.write_merge(item['srows'],item['erows'],item['scols'], item['ecols'], item['value'],item['style'])
                else:
                    sheet1.write_merge(item['srows'],item['erows'],item['scols'], item['ecols'], item['value'])
        '''
        如果报错 dict_items has no attributes sort
        把syle源码中--alist.sort() 修改为----> sorted(alist) 
        一共修改2次
        '''
        new_excel.save(file_path)
    
    #参数详解
    # srows:合并的起始行数
    # erows:合并的结束行数
    # scols:合并的起始列数
    # ecols:合并的结束列数 
    # value:合并单元格后的填充值
    # style:合并后填充风格:
    #     font: name 宋体
    #     height 280;
    #     alignment: horiz centre
    #     ... 与excel操作基本保持一致
    
    注意:该方法仅仅是将需要直行的动作保存到一个list中,真正的动作还未执行,执行动作是发生在excel_update方法中

    最终调用excel_update方法,传入每个单元格需要进行的操作和填充值的write_obj_list以及文件保存路径file_path,就可以在当前工作目录下生成想要的Excel结果文件。

    BI数据自动化解决方案

    用python实现自动化的确比excel省力多了,但是对于代码能不好的人来说,想要快速上手python并且实现这样的自动化报表没那么容易。因此,我建议采用BI等工具实现真正的数据自动化,一能解决大数据量的问题,二能解决报表模版制作的问题

    市场上BI工具比较多,个人比较熟悉的是FineBI,国内的一款BI工具,个人版免费,企业版收费,不过对企业来说,买软件花的钱和浪费掉的人工成本相比还是划算的)。

    相对于Excel,FineBI的好处是:

    • 可以直连数仓,免去了人工调取的麻烦。
    • 支持大数据量处理
    • 数据分析流程简单,不用写代码,拖拖拽拽就能生成可视化图表
    • 模板完成后能够导出成pdf,或者生成demo链接直接发给同事和领导,他们每天打开网页就能自己看的数据。
    • FineBI具备很强的交互性,制作完成的模版可根据自己的需求进行筛选、排序、数据下钻等功能。

    下面从数据源链接、数据可视化和模版分享三个方面具体说说

    数据链接

    就上文章开头说的,业务要各种各样的数据表,数据分析师就要到各种系统中去取数,有些公司的数据管理混乱,数据分散在各个业务系统总,此时取数将是一个十分浩大的工程,用FineBI就可以很好的解决取数问题,它可以直接和多种数据库链接,也可以导入excel数据集。

    另外,FineBI支持两种模式获取数据,可以将数据库的数据抽取到引擎存储,离线使用,也可以实时获取数据库,数据表中的数据实时更新。

     

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

    数据可视化

    FineBI制作数据可视化图表的过程十分简单,不用写代码,把需要分析字段拖拽到横纵坐标轴,图表就可以自动生成,就相当于一个更加高级的Excel数据透视表。

    创建图表组件,把纬度和指标拖拽到横纵、纵轴,系统会根据选择的纬度和指标数量自动推荐图表,而且,FineBI图表类型很丰富,支持柱形图,折线图,饼图,雷达图,散点图,圆环图,条形图,仪表盘、堆积图、面积图、组合图,气泡图、地图、GIS地图、热力地图、流向地图等多种图表类型和图表:

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

    FineBI的仪表板采用的是画布式的界面,可以随意添加组件,拖拽自由布局,灵活程度高

    下面是用FineBI制作的仪表板,数据可以实时刷新,不用重复做表:

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

    模版分享

    完成了模版制作之后,我们就要把模版发送给业务需求方查看,FineBI可以将仪表版生成公共链接,以链接的形式分享给同事。对于一些定期要发布的模版,比如周报、月报之类,可以通过定时调度功能,设定定时任务,服务器会在指定的时间自动生成所需的仪表板,并且可以将生成的结果以邮件、短信、平台消息通知的方式通知对应的业务需求方,实现邮件自动化。

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

    一个模版让报表自动生成,领导:这才是数据分析人该干的事

     

    以上,就是今天关于自动化报表的分享,想要获取更多报表制作及数据分析讲解资料,私信我“数据分析”获得

    展开全文
  • 龙源期刊网http://www.qikan.com.cn基于Python的图书馆业务报表自动生成研究作者:辛海滨来源:《电脑知识与技术》2016年第27期摘要:针对图书馆日常工作中需要定期总结、汇报业务数据的问题,该文利用Python实现了...

    龙源期刊网

    http://www.qikan.com.cn

    基于

    Python

    的图书馆业务报表自动生成研

    作者:辛海滨

    来源:《电脑知识与技术》

    2016

    年第

    27

    摘要:针对图书馆日常工作中需要定期总结、汇报业务数据的问题,该文利用

    Python

    现了业务报表的自动生成。

    Python

    丰富的标准库提供了强大的网络处理和文本分析功能。该文

    通过分析报表生成的基本工作原理,利用

    Python

    实现模拟登陆、获取

    HTML

    文件、提取数

    据,最终汇总形成报表。

    关键词:图书馆;业务统计;

    Python

    ;自动生成

    中图分类号:

    TP315

    文献标识码:

    A

    文章编号:

    1009-3044

    2016

    27-0072-03

    信息技术快速发展的今天,国内大部分图书馆都已经配备了计算机系统,使图书馆基本业

    务实现了自动化,给图书馆工作带来了极大的便利。但除这些基本业务活动外,各个业务部门

    在日常工作中还要定期总结、汇报业务数据(如周报、月报等),使管理层能够及时掌握业务

    部门的运行情况。以报刊借阅室为例,业务数据包括阅览人次、流通人数、期刊外借册次以及

    新刊记到种数、册数等。这些数据存在于图书馆业务管理系统的不同功能模块下。当获取某一

    项业务数据时,我们需要逐层展开系统功能模块,找到相应业务统计功能,选择各项查询条

    件,如开始日期、结束日期和部门代码等,等待系统输出统计数据,并将之记录下来。其他业

    务数据的统计也遵循同样的流程。最后我们将获取的所有业务数据汇总到一个文件中,行成业

    务报表。这些工作具有重复、繁琐的特点,消耗了工作人员相当大的精力去细心、耐心对待。

    Python

    是一种解释型编程语言,提供了功能强大的用于网络处理的标准库。可以利用

    Python

    提供的这些库登陆系统、获取数据,实现业务报表的自动生成。这可以减少人为失误,提升业

    务数据统计的准确度、提高工作人员的工作效率。

    1

    基本工作原理

    当前存在多种图书馆业务管理系统被不同图书馆应用,

    Interlib

    采用基于

    web

    Internet

    B/S

    模式,实现了图书馆业务在线管理,具有代表性,因此本文选取

    Interlib

    进行操作。生成业

    务报表的基本工作原理如图

    1

    所示。我们首先通过浏览器进行系统登录,登录成功后,找到相

    应业务统计功能,获得存储数据的页面,利用正则表达式提取数据并汇总形成报表。

    登录时,在浏览器中打开

    interlib

    系统登录页面,工作人员输入用户名、密码等登录信

    息,提交给服务器。服务器响应,返回包含数据的网页。从浏览器层面看,浏览器提交包含

    URL

    cookies

    post

    表单等必要信息的请求,服务器响应,返回包含数据的

    HTML

    文件。其

    URL

    Uniform Resource Locator

    )是统一资源定位符,是资源在互联网上位置和访问方法的

    展开全文
  • MySQL 测试数据快速生成

    万次阅读 2019-04-21 15:58:01
    MySQL 测试数据快速生成 一、前言 在我们进行大数据量的报表测试以及性能测试时,需要数据库中存在大量的基础测试数据,但是依赖于系统本身大多数情况下都无法快速产生大量适合的测试数据,这就需要我们手动生成...

     

                                  MySQL 测试数据快速生成

    一、前言

            在我们进行大数据量的报表测试以及性能测试时,需要数据库中存在大量的基础测试数据,但是依赖于系统本身大多数情况下都无法快速产生大量适合的测试数据,这就需要我们手动生成一些测试数据。

    目前生成数据的方式有:

    1、使用存储过程实现(需要开发了解PL/SQL语法)

    2、多线程 + jdbc批量提交

    3、使用性能测试工具(loadrunner或jemter产生,需要了解这两个工具的脚本预言)

    4、使用QUEST  Datafactory、TestDataBuilder等,只需简单的配置

    二、利用存储过程实现测试数据快速生成

    2.1  创建存储过程

    -- 清空数据表
    truncate table user1;
    -- 如果存在存储过程 `add_user1`,先删除再创建
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `add_user1`;
    CREATE PROCEDURE `add_user1` ( IN n INT ) 
    BEGIN
    	DECLARE i INT DEFAULT 1;
        DECLARE password VARCHAR(100) DEFAULT '';
        DECLARE create_date VARCHAR(255) DEFAULT '';
    	start transaction; -- 整个存储过程指定为一个事务
    	 WHILE ( i <= n ) DO
            set password =  substring_index( substring_index('123;456;789;321', ';', -FLOOR( rand( ) * 4+1 ) ), ';', 1 );
            set create_date = CONCAT(
    		date(from_unixtime(
    			unix_timestamp('2019-01-01')
    			+ floor(
    				rand() * ( unix_timestamp(now()) - unix_timestamp('2019-01-01') + 1 )
    			)
    		)) ,
    		' ',
    		LPAD( FLOOR( 9 + ( RAND( ) * 10 ) ), 2, 0 ),-- 时 0-23  LPAD( FLOOR( 0 + ( RAND( ) * 24 ) ), 2, 0 ),; 9-18 LPAD( FLOOR( 9 + ( RAND( ) * 1 ) ), 2, 0 ),
    		':',
    		LPAD( FLOOR( 0 + ( RAND( ) * 60 ) ), 2, 0 ),-- 分 0-59
    		':',
    		LPAD( FLOOR( 0 + ( RAND( ) * 60 ) ), 2, 0 ) -- 秒 0-59
    	);
    	INSERT INTO `user1` VALUES(
    		i,
    		'oyc',
    		'oyc',
    		password,
          -- create_date,
    		CONCAT(-- 	FLOOR( 1990 + ( RAND( ) * 25 ) ),
    			'2019-',-- 年
    			LPAD( FLOOR( 1 + ( RAND( ) * 12 ) ), 2, 0 ),-- 月
    			'-',
    			LPAD( FLOOR( 3 + ( RAND( ) * 8 ) ), 2, 0 ),-- 日
    			' ',
    			LPAD( FLOOR( 0 + ( RAND( ) * 23 ) ), 2, 0 ),-- 时
    			':',
    			LPAD( FLOOR( 0 + ( RAND( ) * 59 ) ), 2, 0 ),-- 分
    			':',
    			LPAD( FLOOR( 0 + ( RAND( ) * 59 ) ), 2, 0 ) -- 秒
    		 ) 
    		);
    	    SET i = i + 1;
    	END WHILE;
    	commit; -- 必须主动提交
    END $$
     
    CALL add_user1 (10 );

    大量插入数据时,必须加上事务处理,可以提高插入速度。

    2.2  执行存储过程

    执行可以通过navicat的函数执行,也可以直接执行CALL add_user1 (10 ) 命令。

    2.2.1 函数可视化执行:

    填入执行函数值,这里我设置为10,点击确定即可完成。

    执行完成,耗时0.188s

    2.2.2 CALL add_user1 (10 ) 命令

    2.3 利用mysql 函数生成一下随机内容

    1. 修改引擎
    ALTER TABLE user1 ENGINE = INNODB/ MyISAM; 

    1. 清空数据表
    truncate table user1;

    3.从数组中随机获取一个内容
    SELECT 
        substring_index(substring_index('学富五车;足智多谋;仗义执言;火眼金睛;见多识广;责任担当;乐观积极', ';',- FLOOR( rand( ) * 7+1 ) ), ';', 1 )
     AS report_content;

    4. 从两个数组中随机获取相同索引下的内容
    select desc_index, CONCAT(desc_index, 
        '\"desc\": {\"label\":\"', 
        substring_index(substring_index('学富五车;足智多谋;仗义执言;火眼金睛;见多识广;责任担当;乐观积极',';',temp.desc_index),';',1),'\"',
    ',\"description\": \"', 
    substring_index(substring_index('再美的气质,也掩盖不了你才华本质;脑力使用积极分子,非你莫属;你的见解,面面俱到,深入人心;独特的洞察力,总能获悉一切;最美的阅历,就是沿路的风景;先天下之忧而忧,后天下之乐而乐;爱笑的你运气一定不会差',';',temp.desc_index),';',1),
    '\"}'
    ) as report_content from (select -FLOOR(rand()*7+1) as desc_index limit 100000) temp

    5.随机年月日 时分秒
    SELECT
        CONCAT(
        FLOOR(2010 + (RAND()*10)),-- 年
        '-',
        LPAD(FLOOR( 1 + (RAND() * 12 )), 2, 0),-- 月
        '-',
        LPAD(FLOOR( 3 + (RAND() * 8)), 2, 0),-- 日
        ' ',
        LPAD(FLOOR( 0 + (RAND() * 23)), 2, 0),-- 时
        ':',
        LPAD(FLOOR( 0 + (RAND() * 59)), 2, 0),-- 分
        ':',
        LPAD(FLOOR( 0 + (RAND() * 59)), 2, 0) -- 秒
        )

    SELECT FLOOR(7 + (RAND() * 6));     取7到12的随机整数,包括7到12

    SELECT FLOOR(12+(rand()*13));   取12到24的随机整数,包括12到24

    LPAD(FLOOR(0 + (RAND() * 23)),2,0)  取0-24之间的随机数,不够2位的前补0

    格式 : 2008-12-11 17:43:11

    举例:

    给用户赋一个随机入职日期,年份为1990-2014

    select CONCAT(FLOOR(1990 + (RAND() * 25)),'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(3 + (RAND() * 8)),2,0))

    结果:1999-10-07

    select CONCAT(LPAD(FLOOR(0 + (RAND() * 23)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0),':',LPAD(FLOOR(0 + (RAND() * 59)),2,0))
    
    

    结果:15:39:18

    一段时间:

    select DATE_ADD(DATE_FORMAT('2019-01-01 00:00:00','%Y-%m-%d %H:%i:%s'),INTERVAL FLOOR(1+RAND()*((ABS(UNIX_TIMESTAMP(DATE_FORMAT('2019-04-21 23:59:59','%Y-%m-%d %H:%i:%s'))-UNIX_TIMESTAMP(DATE_FORMAT('2019-01-01 00:00:00','%Y-%m-%d %H:%i:%s'))))-1)) SECOND);

    结果: 

    2019-02-16 13:40:00

    存储过程获取一段时间:

    DELIMITER $$
    CREATE
        FUNCTION `RandomDateTime`(sd DATETIME,ed DATETIME)
        RETURNS DATETIME
        BEGIN
        RETURN DATE_ADD(sd,INTERVAL FLOOR(1+RAND()*((ABS(UNIX_TIMESTAMP(ed)-UNIX_TIMESTAMP(sd)))-1)) SECOND);
        END$$
    DELIMITER ;
    
    SELECT RandomDateTime(DATE_FORMAT('2019-01-01 00:00:00','%Y-%m-%d %H:%i:%s'),DATE_FORMAT('2019-04-21 23:59:59','%Y-%m-%d %H:%i:%s')) AS t;

    获取一段时间:

    select CONCAT(date(from_unixtime(
     unix_timestamp('2017-01-01') 
     + floor(
       rand() * ( unix_timestamp('2018-08-08') - unix_timestamp('2017-01-01') + 1 )
     )
    )) ,' ', 
    LPAD( FLOOR( 9 + ( RAND( ) * 8) ), 2, 0 ),-- 时 0-23  LPAD( FLOOR( 0 + ( RAND( ) * 23 ) ), 2, 0 ),; 9-17 LPAD( FLOOR( 9 + ( RAND( ) * 8 ) ), 2, 0 ),
                    ':',
                    LPAD( FLOOR( 0 + ( RAND( ) * 59 ) ), 2, 0 ),-- 分 0-59
                    ':',
                    LPAD( FLOOR( 0 + ( RAND( ) * 59 ) ), 2, 0 ) -- 秒 0-59
    );

     

    三、利用Datafactory实现测试数据快速生成

    3.1 Datafactory简介

            Datafactory(数据工厂)工具是Quest公司(http://www.quest.com)旗下的产品,顾名思义,数据工厂是生产数据的,主要应用领域是性能测试中的大数据量测试, 也就是性能测试数据准备阶段。

            DataFactory 是一种快速的,易于产生测试数据的带有直觉用户介面的工具,它能建模复杂数据关系。DataFactory是一种强大的数据产生器,它允许开发人员和QA很容易产生百万行有意义的正确的测试数据库,该工具支持DB2、Oracle、Sybase、SQL Server数据库,支持ODBC连接方式,无法直接使用MySQL数据库。它能够根据用户定制,产生或导入需要的数据,插入相应的数据表或导出至外部文件。

    3.2  Datafactory原理

           通过和数据库进行连接后,对选定表的字段设定一定的插入规则,然后批量插入记录。Datafactory支持各种主流数据库(Oracle、DB2、MS SQL),甚至excel、access等。

    3.3 软件安装

    3.3.1 DataFactory安装

            下载DataFactory并进行安装,下载地址:链接:https://pan.baidu.com/share/init?surl=0PiqHxa4CpCUKaqAb-n99w 提取码:wq47 。

    3.3.2 ODBC驱动安装

            下载MySQL-ODBC驱动并安装,下载安装myodbc32驱动 : https://dev.mysql.com/downloads/connector/odbc/

    3.3.3 基本配置

            a. 启动DataFactory,通过ODBC连接MySQL数据库,如图所示:

            

            b.选择DBC Administrator对ODBC用户DSN的配置,如下图所示:

           

            c. 进入ODBC数据源管理器,通过点击“添加”来新增用户数据源,页面如下:

           

    • MySQL ODBC 5.3 ANSI Driver:只针对有限的字符集的范围
    • MySQL ODBC 5.3 Unicode Driver:提供了多语言的支持

         d. 配置MySQL连接信息,页面如下:   

           

          e. 配置好数据源后返回到步骤2的页面,此时需要选择数据源,由于新建的数据源此时还无法进行选择,因此取消此安装流程,重新打开一个新的连接流程即可;  

           

            f. 选择相应数据表,页面如下:

           

            g. 选择user1,并进入下一步,指定执行名称为:add_user1,页面如下:

           

            h. 完成配置,页面如下:

           

    3.3.4 简单使用

            以上 ,我们已经完成了配置,下面我们可以定义出入数据的规则,完成数据的生成了。选中表的字段,不同类型,提供不同数据产生的设置。

    字段为Field.Text时:
            Insert value from a data table:从系统数据表中获取数据插入
            Insert value from an SQL database:编写SQL语句从数据库中获取数据插入
            Insert text from a file:外部文件数据插入
            Insert random characters:随机值插入
            Insert a string constant:常量值插入
            Build a composite field:组合值插入
    字段为Field.Numeric时:
            Insert value from a data table:从系统数据表中获取数据插入
            Insert value from an SQL database:编写SQL语句从数据库中获取数据插入
            Insert value from an arithmetic expression:表达式产生数据插入
            Insert sequential values:自增长数据插入
            Insert random values:随机值插入
            Insert a constant value:常量值插入
    字段为Field.Date时:
            Insert value from a data table:从系统数据表中获取数据插入
            Insert value from an SQL database:编写SQL语句从数据库中获取数据插入
            Insert sequential values:连续的时间插入
            Insert random values:随机的时间插入
            Insert the curent system data:当前系统时间插入

           1)将id设置为自动生成

                

           2)将name设置成长度为5的随机字符串

                

           3)将username设置成长度为3-8的随机字符串

               

           4)password设置为123456

             

           5)createtime为datetime类型,这里设定设定一个随机的时间,时间跨度为2019-4-21 01:12:58到-2019-4-21 04:12:58。

             

           6)点击Run,提示成功 

           

          7)查看数据,插入了100条数据。

             

    注:要修改插入条数,可以修改下图中的ecords。

              

    展开全文
  • 1、常见的PDF报表生成方式 1.1 iText iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText 不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText...
  • Struts+iText生成Pdf报表

    千次阅读 2006-04-21 08:54:00
    Struts+iText生成Pdf报表 作者: jfish 发表日期: 2006-01-16 09:21 文章属性: 原创 复制链接 Struts+iText生成Pdf报表1.iText简介iText是一个能够快速产生PDF文件的java类
  • 传统的Excel工作统计量大、耗费时间长、容易漏掉或是重复统计,数据不易及时更新,而且查询不便。严重阻碍了工作效率,浪费时间。...使用类Excel设计器,容易上手操作简单,就算你是从零开始学做报表,也能够快速
  • Stimulsoft Reports.Net是一个基于.NET框架的报表生成器,能够帮助你创建结构、功能丰富的报表。StimulReport.Net 的报表设计器不仅界面友好,而且使用便捷,能够让你轻松创建所有报表;该报表设计器在报表设计过程...
  • 用Python自动生成Excel报表

    千次阅读 2020-11-06 10:04:25
    在日常工作中,可能会有一些重复无聊的任务,比如说,从 Excel 或数据库中收集一些数据,设置相应的数据格式并做成报表。 类似这种重复无聊的任务,我们完全可以交给 Python 去自动完成,只要第一次把 Python 代码写...
  • 解析和生成Excel报表方法汇总(转)

    千次阅读 2010-09-12 06:09:00
    原文:http://terryli.blog.51cto.com/704315/372820昨天在医院... 其实不仅仅是.NET平台,其他的任务开发平台和EXCEL报表交互,最终都会面临2个问题:如何解析EXCEL报表和如何生成EXCEL报表。下面就以这2个问题为出发
  • Delphi程序执行时实时生成报表

    千次阅读 2001-12-03 09:19:00
    刘建华 Delphi程序执行时实时生成报表当前,在软件开发工具中,Delphi以其控件多、面向对象编程功能强、代码执行速度快和简单易用等特点,结合可视化开发环境和当前最快的编译器技术,已成为全球公认的快速应用开发...
  • 如何快速制作名片/卡片式报表

    千次阅读 2018-11-07 19:24:49
    在我们日常生活或工作中,经常会看到这样一个个小卡片,上面记载着某件商品或者某个人的基本... 下面,我们一起来看一下怎样利用报表神器—润乾报表,来简单轻松地生成这类报表: 首先(第一步),打开报表设计器,...
  • 一旦你知道你数据中的最大值和最小值日期就可以使用CALENDAR来生成日期,即使两个值在不同的表里面如下: DateDimension = CALENDAR(MIN(‘Stock‘[PurchaseDate]), MAX(‘Invoices‘[InvoiceDate])) 或者,你...
  • 利用 SQL Server Reporting Services 从应用程序生成用户友好的报表 发布日期: 09/03/2004 | 更新日期: 09/03/2004John C. Hancock 本文讨论:•Reporting•设计和部署报表•使用 Reporting Services 的 Web
  • “字段”窗格 - 显示表格字段 接下来通过一个例子,让我们快速用数据做出可视化报表,体验一把Power BI。 4.实操案例 下面的Excel表里记录了某电商平台上用户的购物记录。表中含有的字段:用户名称、订单号、商品...
  • 秒级展现的百万级大清单报表怎么做 原文地址:http://c.raqsoft.com.cn/article/1570700820741?r=CGQ 数据查询业务中,有时会碰到数据量很大的清单报表。由于用户输入的查询条件可能很宽泛,因此会从数据库中...
  • 利用 SQL Server Reporting Services 从应用程序生成用户友好的报表 发布日期: 09/03/2004 | 更新日期: 09/03/2004John C. Hancock ...
  • 利用 SQL Server Reporting Services 从应用程序生成用户友好的报表 发布日期: 09/03/2004 | 更新日期: 09/03/2004John C. Hancock ...
  •  self.write_center(self.worksheet, "D6", "测试日期", self.workbook)  self.write_center(self.worksheet, "E3", data1['test_sum'], self.workbook)  self.write_center(self.worksheet, "E4", data1['...
  • Vfp控制Excel快速报表示例

    千次阅读 2006-07-12 16:55:00
    Vfp控制Excel快速报表示例先将数据库文件导出到Excel文件,再设置Excel文件的标题、表头、纸张属性、页眉、页脚、(左、右、上、下边距)等,报表速度比用for...endf、scan...ends导出报表要快的多。 程序源码如下...
  • 永思报表设计器是一个简单快速报表开发工具,轻松实现报表显示、过滤、打印、导出等一体化集成功能。提供VB.net、C#丰富使用例子,报表如何调用一目了然。 工具特点: 1、可根据SQL语句自动生成报表格式,打印格式...
  • 昨天在医院检查身体时,一个朋友打过来电话,咨询EXCEL报表开发都有哪些方法,他们要... 其实不仅仅是.NET平台,其他的任务开发平台和EXCEL报表交互,最终都会面临2个问题:如何解析EXCEL报表和如何生成EXCEL报表。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,374
精华内容 4,549
关键字:

报表如何快速生成日期