报表生成方法及装置制造方法及图纸

技术编号:10418514 阅读:140 留言:0更新日期:2014-09-12 10:37
本发明专利技术实施例公开了一种报表生成方法及装置。该方法包括:接收用户发出的新建报表指令;展示第一交互界面,以提示用户输入数据源、布局形式和SQL查询语句;接收用户在输入数据源、布局形式和SQL查询语句后发出的用于执行SQL查询语句的执行指令;执行SQL查询语句,从数据源中获得报表所基于的目标数据集;展示目标数据集所对应的第二交互界面,以提示用户为目标数据集中的所有列选择相应的抽象列;接收用户在选择抽象列后发出的报表生成指令;依据目标数据集、目标数据集中的所有列所对应的抽象列和布局形式,生成目标数据集所对应的报表。利用本方案可以达到降低报表生成的操作难度且简化操作步骤的目的。

【技术实现步骤摘要】
报表生成方法及装置
本专利技术涉及报表处理领域,特别涉及一种报表生成方法及装置。
技术介绍
报表是企业应用系统中不可缺少的一种数据展现方式,它可以为用户特别是企业中高层用户提供直观的数据视图(进行自动的统计计算、如求和、求平均、对分组进行小计与合计等),为用户制定商业计划和决策提供基础和依据。报表同时也是商业智能(BI)应用中实现数据可视化的方式之一。特别在当今大数据时代,企业需要对海量数据进行提取、分析、监控并挖掘出潜在的商业机遇,其中也特别需要对数据可视化呈现,这些都成为了当前重要的研究课题。因此一套灵活且功能强大的报表系统可以为企业(特别是大数据时代的互联网及移动互联网企业)带来生产力的巨大提升。现有技术中,报表的生成过程包括两大核心部分:报表结构定义以及生成。具体的,用户通过报表设计器(一种可视化编辑工具)预先定义成结构相对固定的报表结构文件(如XML等元数据描述文件),然后由报表生成引擎从数据源中获取数据并填充到报表结构文件中,最终呈现出可展示与打印的报表。但是,现有的报表生成方法中,生成每一种格式的报表均需要用户事先通过报表设计器来定义报表结构,由于定义报表结构的过程专业化较强,导致这对于普通用户无疑具有较大的操作难度且操作较为繁琐。
技术实现思路
基于上述问题,本专利技术实施例公开了一种报表生成方法及装置,以降低报表生成的操作难度且简化操作步骤。技术方案如下:第一方面,本专利技术实施例提供了一种报表生成方法,包括:接收用户发出的新建报表指令;响应所述新建报表指令,展示第一交互界面,其中,所述第一交互界面至少展示有用于指示用户输入报表所依据数据源的第一提示信息、用于指示用户输入所述报表所需的布局形式的第二提示信息、用于指示用户输入SQL查询语句的第三提示信息,所述SQL查询语句用于从所述数据源中提取所述报表所基于的目标数据集;接收所述用户在输入数据源、布局形式和SQL查询语句后基于所述第一交互界面发出的用于执行所述SQL查询语句的执行指令;响应所述执行指令,执行所述SQL查询语句,从所述数据源中获得所述报表所基于的目标数据集;展示所述目标数据集所对应的第二交互界面,其中,所述第二交互界面至少展示有用于指示用户为所述目标数据集中的所有列选择相应的抽象列的第四提示信息;接收用户在选择抽象列后基于所述第二交互界面发出的报表生成指令;响应所述报表生成指令,依据所述目标数据集、所述目标数据集中的所有列所对应的抽象列和所述布局形式,生成所述目标数据集所对应的报表。可选的,所述布局形式的类型包括:横向布局和纵向布局。可选的,所述抽象列的类型包括:布局列、维度列和统计列;其中,所述布局列的数据填充方式包括:纵向填充和横向填充;其中,所述维度列用于聚类展示,能够跨行与跨列填充数据;其中,所述统计列中的数据填充在所述布局列和所述维度列的交叉单元格中。可选的,所述依据所述目标数据集、所述目标数据集中的所有列所对应的抽象列和所述布局形式,生成所述目标数据集所对应的报表,包括:判断所述报表的布局形式的类型;当判断出所述报表的布局形式的类型为横向布局时,按照第一预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表;当判断出所述报表的布局形式的类型为纵向布局时,按照第二预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表。可选的,所述按照第一预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表,包括:依据每一布局列中的值和每一统计列中的值,生成第一数据树;并按照树型结构的遍历算法遍历所述第一数据树,计算出所述第一数据树中每个结点的子结点数及根结点到该结点的路径;按照从上至下且左到右的遍历顺序,读取所述第一树形结构中所有结点的值,为每层结点分别生成报表中的一行,将每层中的各个结点的值确定为该行中相应列的值,并依据各个结点的子结点数设置列的跨列属性,以此生成报表的表头结构;依据每一维度列中的值,生成第二数据树;并按照树型结构的遍历算法遍历所述第二数据树,计算出所述第二数据树中每个结点的子结点数及根结点到该结点的路径;将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总行数,将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总列数;将所述目标数据集转换为key/value集合,其中,按照先行再列的方式,逐个读取所述第一数据树和第二数据树中的结点的值与路径,将每行中的结点的路径与每列中结点的路径组合成所述key/value集合中的字符串key,并将所述目标数据集中每行的统计列的值构成所述key/value集合中的数据值value ;依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成所述目标数据集所对应的报表;其中,在进行填充处理时,所述布局列的填充方式为横向填充,所述维度列的填充方式为纵向填充。可选的,依据每一布局列中的值和每一统计列中的值,生成第一数据树,包括:将所有布局列中的第一列中所有的值去重复处理后作为树的根结点,第二列所有的值去重复处理后作为第一层树结点,并以此类推,直至最后一个布局列;并且,将统计列的值作为叶子结点追加到最后一个布局列生成的所有树结点下,以形成第一数据树;所述依据每一维度列中的值,生成第二数据树,包括:将所有维度列中的第一列中所有的值去重复处理后作为树的根节点,第二列中的所有值去重复处理后作为第一层树结点,以此类推,直至最后一个维度列,以此形成第二数据树。可选的,所述按照第二预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表,包括:依据每一维度列中的值和每一统计列中的值,生成第一数据树;并按照树型结构的遍历算法遍历所述第一数据树,计算出所述第一数据树中每个结点的子结点数及根结点到该结点的路径;按照从上至下且左到右的遍历顺序,读取所述第一树形结构中所有结点的值,为每层结点分别生成报表中的一行,将每层中的各个结点的值确定为该行中相应列的值,并依据各个结点的子结点数设置列的跨列属性,以此生成报表的表头结构;依据每一布局列中的值,生成第二数据树;并按照树型结构的遍历算法遍历所述第二数据树,计算出所述第二数据树中每个结点的子结点数及根结点到该结点的路径;将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总行数,将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总列数;将所述目标数据集转换为key/value集合,其中,按照先行再列的方式,逐个读取所述第一数据树和第二数据树中的结点的值与路径,将每行中的结点的路径与每列中结点的路径组合成所述key/value集合中的字符串key,并将所述目标数据集中每行的统计列的值构成所述key/value集合中的数据值value ;[0041 ] 依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成所述目标数据集所对应的报表;其中,在进行填充处理时,所述布局列的填充方式为横向填充,所述维度列的填充本文档来自技高网...
报表生成方法及装置

【技术保护点】
一种报表生成方法,其特征在于,包括:接收用户发出的新建报表指令;响应所述新建报表指令,展示第一交互界面,其中,所述第一交互界面至少展示有用于指示用户输入报表所依据数据源的第一提示信息、用于指示用户输入所述报表所需的布局形式的第二提示信息、用于指示用户输入SQL查询语句的第三提示信息,所述SQL查询语句用于从所述数据源中提取所述报表所基于的目标数据集;接收所述用户在输入数据源、布局形式和SQL查询语句后基于所述第一交互界面发出的用于执行所述SQL查询语句的执行指令;响应所述执行指令,执行所述SQL查询语句,从所述数据源中获得所述报表所基于的目标数据集;展示所述目标数据集所对应的第二交互界面,其中,所述第二交互界面至少展示有用于指示用户为所述目标数据集中的所有列选择相应的抽象列的第四提示信息;接收用户在选择抽象列后基于所述第二交互界面发出的报表生成指令;响应所述报表生成指令,依据所述目标数据集、所述目标数据集中的所有列所对应的抽象列和所述布局形式,生成所述目标数据集所对应的报表。

【技术特征摘要】
1.一种报表生成方法,其特征在于,包括: 接收用户发出的新建报表指令; 响应所述新建报表指令,展示第一交互界面,其中,所述第一交互界面至少展示有用于指示用户输入报表所依据数据源的第一提示信息、用于指示用户输入所述报表所需的布局形式的第二提示信息、用于指示用户输入SQL查询语句的第三提示信息,所述SQL查询语句用于从所述数据源中提取所述报表所基于的目标数据集; 接收所述用户在输入数据源、布局形式和SQL查询语句后基于所述第一交互界面发出的用于执行所述SQL查询语句的执行指令; 响应所述执行指令,执行所述SQL查询语句,从所述数据源中获得所述报表所基于的目标数据集; 展示所述目标数据集所对应的第二交互界面,其中,所述第二交互界面至少展示有用于指示用户为所述目标数据集中的所有列选择相应的抽象列的第四提示信息; 接收用户在选择抽象列后基于所述第二交互界面发出的报表生成指令; 响应所述报表生成指令,依据所述目标数据集、所述目标数据集中的所有列所对应的抽象列和所述布局形式,生成所述目标数据集所对应的报表。2.根据权利要求1所述的方法,其特征在于,所述布局形式的类型包括:横向布局和纵向布局。3.根据权利要求2所述的方法,其特征在于,所述抽象列的类型包括:布局列、维度列和统计列; 其中,所述布局列的数据填充方式包括:纵向填充和横向填充; 其中,所述维度列用于聚类展示,能够跨行与跨列填充数据; 其中,所述统计列中的数据填充在所述布局列和所述维度列的交叉单元格中。4.根据权利要求3所述的方法,其特征在于,所述依据所述目标数据集、所述目标数据集中的所有列所对应的抽象列和所述布局形式,生成所述目标数据集所对应的报表,包括: 判断所述报表的布局形式的类型; 当判断出所述报表的布局形式的类型为横向布局时,按照第一预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表; 当判断出所述报表的布局形式的类型为纵向布局时,按照第二预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表。5.根据权利要求4所述的方法,其特征在于,所述按照第一预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表,包括: 依据每一布局列中的值和每一统计列中的值,生成第一数据树;并按照树型结构的遍历算法遍历所述第一数据树,计算出所述第一数据树中每个结点的子结点数及根结点到该结点的路径; 按照从上至下且左到右的遍历顺序,读取所述第一树形结构中所有结点的值,为每层结点分别生成报表中的一行,将每层中的各个结点的值确定为该行中相应列的值,并依据各个结点的子结点数设置列的跨列属性,以此生成报表的表头结构; 依据每一维度列中的值,生成第二数据树;并按照树型结构的遍历算法遍历所述第二数据树,计算出所述第二数据树中每个结点的子结点数及根结点到该结点的路径; 将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总行数,将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总列数; 将所述目标数据集转换为key/value集合,其中,按照先行再列的方式,逐个读取所述第一数据树和第二数据树中的结点的值与路径,将每行中的结点的路径与每列中结点的路径组合成所述key/value集合中的字符串key,并将所述目标数据集中每行的统计列的值构成所述key/value集合中的数据值value ; 依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成所述目标数据集所对应的报表; 其中,在进行填充处理时,所述布局列的填充方式为横向填充,所述维度列的填充方式为纵向填充。6.根据权利要求5所述的方法,其特征在于,依据每一布局列中的值和每一统计列中的值,生成第一数据树,包括: 将所有布局列中的第一列中所有的值去重复处理后作为树的根结点,第二列所有的值去重复处理后作为第一层树结点,并以此类推,直至最后一个布局列;并且,将统计列的值作为叶子结点追加到最 后一个布局列生成的所有树结点下,以形成第一数据树; 所述依据每一维度列中的值,生成第二数据树,包括: 将所有维度列中的第一列中所有的值去重复处理后作为树的根节点,第二列中的所有值去重复处理后作为第一层树结点,以此类推,直至最后一个维度列,以此形成第二数据树。7.根据权利要求4所述的方法,其特征在于,所述按照第二预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表,包括: 依据每一维度列中的值和每一统计列中的值,生成第一数据树;并按照树型结构的遍历算法遍历所述第一数据树,计算出所述第一数据树中每个结点的子结点数及根结点到该结点的路径; 按照从上至下且左到右的遍历顺序,读取所述第一树形结构中所有结点的值,为每层结点分别生成报表中的一行,将每层中的各个结点的值确定为该行中相应列的值,并依据各个结点的子结点数设置列的跨列属性,以此生成报表的表头结构; 依据每一布局列中的值,生成第二数据树;并按照树型结构的遍历算法遍历所述第二数据树,计算出所述第二数据树中每个结点的子结点数及根结点到该结点的路径; 将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总行数,将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总列数; 将所述目标数据集转换为key/value集合,其中,按照先行再列的方式,逐个读取所述第一数据树和第二数据树中的结点的值与路径,将每行中的结点的路径与每列中结点的路径组合成所述key/value集合中的字符串key,并将所述目标数据集中每行的统计列的值构成所述key/value集合中的数据值value ; 依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成所述目标数据集所对应的报表; 其中,在进行填充处理时,所述布局列的填充方式为横向填充,所述维度列的填充方式为纵向填充。8.根据权利要求7所述的方法,其特征在于,依据每一维度列中的值和每一统计列中的值,生成第一数据树,包括: 将所有维度列中的第一列中所有的值去重复处理后作为树的根结点,第二列所有的值去重复处理后作为第一层树结点,并以此类推,直至最后一个维度列;并且,将统计列的值作为叶子结点追加到最后一个维度列生成的所有树结点下,以形成第一数据树; 所述依据每一布局列中的值,生成第二数据树,包括: 将所有布局列中的第一列中所有的值去重复处理后作为树的根节点,第二列中的所有值去重复处理后作为第一层树结点,以此类推,直至最后一个布局列,以此形成第二数据树。9.一种报表生成装置,...

【专利技术属性】
技术研发人员:韦水生邓智伟林维志
申请(专利权)人:贝壳网际北京安全技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1