CN104036040B - 报表生成方法及装置 - Google Patents
报表生成方法及装置 Download PDFInfo
- Publication number
- CN104036040B CN104036040B CN201410307583.2A CN201410307583A CN104036040B CN 104036040 B CN104036040 B CN 104036040B CN 201410307583 A CN201410307583 A CN 201410307583A CN 104036040 B CN104036040 B CN 104036040B
- Authority
- CN
- China
- Prior art keywords
- row
- value
- tree
- node
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2425—Iterative querying; Query formulation based on the results of a preceding query
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种报表生成方法及装置。该方法包括:接收用户发出的新建报表指令;展示第一交互界面,以提示用户输入数据源、布局形式和SQL查询语句;接收用户在输入数据源、布局形式和SQL查询语句后发出的用于执行SQL查询语句的执行指令;执行SQL查询语句,从数据源中获得报表所基于的目标数据集;展示目标数据集所对应的第二交互界面,以提示用户为目标数据集中的所有列选择相应的抽象列;接收用户在选择抽象列后发出的报表生成指令;依据目标数据集、目标数据集中的所有列所对应的抽象列和布局形式,生成目标数据集所对应的报表。利用本方案可以达到降低报表生成的操作难度且简化操作步骤的目的。
Description
技术领域
本发明涉及报表处理领域,特别涉及一种报表生成方法及装置。
背景技术
报表是企业应用系统中不可缺少的一种数据展现方式,它可以为用户特别是企业中高层用户提供直观的数据视图(进行自动的统计计算、如求和、求平均、对分组进行小计与合计等),为用户制定商业计划和决策提供基础和依据。报表同时也是商业智能(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;
依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成所述目标数据集所对应的报表;
其中,在进行填充处理时,所述布局列的填充方式为横向填充,所述维度列的填充方式为纵向填充。
可选的,依据每一维度列中的值和每一统计列中的值,生成第一数据树,包括:
将所有维度列中的第一列中所有的值去重复处理后作为树的根结点,第二列所有的值去重复处理后作为第一层树结点,并以此类推,直至最后一个维度列;并且,将统计列的值作为叶子结点追加到最后一个维度列生成的所有树结点下,以形成第一数据树;
所述依据每一布局列中的值,生成第二数据树,包括:
将所有布局列中的第一列中所有的值去重复处理后作为树的根节点,第二列中的所有值去重复处理后作为第一层树结点,以此类推,直至最后一个布局列,以此形成第二数据树。
第二方面,本发明实施例还提供了一种报表生成装置,包括:
新建报表指令接收模块,用于接收用户发出的新建报表指令;
新建报表指令响应模块,用于响应所述新建报表指令,展示第一交互界面,其中,所述第一交互界面至少展示有用于指示用户输入报表所依据数据源的第一提示信息、用于指示用户输入所述报表所需的布局形式的第二提示信息、用于指示用户输入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;
依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成所述目标数据集所对应的报表;
其中,在进行填充处理时,所述布局列的填充方式为横向填充,所述维度列的填充方式为纵向填充。
可选的,所述第二报表生成单元依据每一维度列中的值和每一统计列中的值,生成第一数据树,包括:
将所有维度列中的第一列中所有的值去重复处理后作为树的根结点,第二列所有的值去重复处理后作为第一层树结点,并以此类推,直至最后一个维度列;并且,将统计列的值作为叶子结点追加到最后一个维度列生成的所有树结点下,以形成第一数据树;
所述第二报表生成单元依据每一布局列中的值,生成第二数据树,包括:
将所有布局列中的第一列中所有的值去重复处理后作为树的根节点,第二列中的所有值去重复处理后作为第一层树结点,以此类推,直至最后一个布局列,以此形成第二数据树。
本发明实施例中,通过执行用户输入的SQL查询语句从报表所依据的数据源中确定报表所基于的目标数据集,并指示用户为目标数据集中的所有列选择相应的抽象列,进而依据用户为目标数据集中的所有列选择相应的抽象列、用户为报表设定的布局形式以及目标数据集,生成目标数据集所对应的报表。可见,与现有技术相比,本方案无需专门的报表设计器定义报表的结构,而是通过简单的报表配置管理工具就能生成报表,达到了降低报表生成的操作难度且简化操作步骤的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的一种报表生成方法的第一种流程图;
图2为本发明实施例所提供的一种报表生成方法的第二种流程图;
图3为本发明实施例所提供的一种报表生成方法的第三种流程图;
图4为本发明实施例所提供的报表生成方法所对应具体实例的第一种界面示意图;
图5为本发明实施例所提供的报表生成方法所对应具体实例的第二种界面示意图;
图6为本发明实施例所提供的报表生成方法所对应具体实例的第三种界面示意图;
图7为本发明实施例所提供的报表生成方法所对应具体实例的第四种界面示意图;
图8为本发明实施例所提供的报表生成方法所对应具体实例的第五种界面示意图;
图9为本发明实施例所提供的报表生成方法所对应具体实例的第六种界面示意图;
图10为本发明实施例所提供的报表生成方法所对应具体实例的第七种界面示意图;
图11为本发明实施例所提供的一种报表生成装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了达到降低报表生成的操作难度且简化操作步骤的目的,本发明实施例提供了一种报表生成方法及装置。
下面首先对本发明实施例所提供的报表生成方法进行介绍。
其中,本发明实施例所提供的报表生成方法应用于电子设备中。在实际应用中,该电子设备可以为笔记本电脑、台式电脑或平板电脑等。需要说明的是,实现本发明实施例所提供的报表生成方法的功能软件可以为专门的报表软件。
进一步需要强调的是,本发明实施例所提供的报表生成方法的技术原理如下:
任何表格式报表(非图表式)都可以用HTML语言的Table(表格)、TR(行)、TD(列)、ColSpan(跨列数)、RowSpan(跨行数)标签组成并表现。然而,人们日常所用的数据存储软件通常为关系型数据库(如:Mysql,SqlServer,Oracle等),尽管在当前大数据时代很多企业用非关系型数据库(Hadoop、Redis、MongoDB等)存储数据,但是通常会使用关系型数据库存储从非关系型数据库中提取或统计分析出的结构化数据,最终利用关系型数据库的优势,在其之上查询与分析数据或开发相关应用系统。因此、报表中的数据通常是从关系型数据库查询得出的。虽然查询出的数据集也是以表格的形式展现的,但是该表格的结构与表格式报表的结构有以下不同之处:
(1)关系型数据库表格只有行与列,没有跨行与跨列,报表表格不仅有行列还存在跨行与跨列。
(2)由于关系型数据库表格不能跨行与跨列,也就不能对表格中的数据进行聚类统计与展示,这也恰好是报表需要完成功能。
因此,本发明实施例所提供的报表生成方法的核心为:把报表的数据源(通常为关系数据库)中查询出的表格数据结构转换成HTML中的Table数据结构,并进行聚类统计与展示,最终利用网页浏览器呈现给用户。
如图1所示,一种报表生成方法,可以包括:
S101,接收用户发出的新建报表指令;
当用户希望新建报表时,可以通过点击特定界面中的用于指示新建报表的按钮,从而向电子设备发出新建报表指令;而电子设备可以接收到该新建报表指令,进而执行后续的响应处理。
S102,响应该新建报表指令,展示第一交互界面;
在接收到用户发出的新建报表指令后,该电子设备可以响应该新建报表指令,展示第一交互界面,其中,该第一交互界面至少展示有用于指示用户输入报表所依据数据源的第一提示信息、用于指示用户输入该报表所需的布局形式的第二提示信息、用于指示用户输入SQL查询语句的第三提示信息,该SQL查询语句用于从该数据源中提取该报表所基于的目标数据集。
需要强调的是,用于指示用户输入报表所依据数据源的第一提示信息可以为包括文本输入框的提示信息以使得用户可以手动输入数据源,或者,包括关于各个数据源的下拉列表的提示信息以使得用户选择所需的数据源即可。同样的,用于指示用户输入该报表所需的布局形式的第二提示信息可以为包括文本输入框的提示信息以使得用户可以手动输入布局形式,或者,包括关于布局形式的下拉列表的提示信息以使得用户选择所需的布局形式即可。而用于指示用户输入SQL查询语句的第三提示信息可以为包括SQL查询语句编辑界面的提示信息以使得用户在该编辑界面中输入该SQL查询语句。
具体的,该数据源可以为预先已建立的关系型数据库;所述布局形式的类型可以包括:横向布局和纵向布局;SQL查询语句可以与现有技术中查询数据库的SQL查询语句的语法结构相同,不同的目标数据集所对应的SQL查询语句不同。
可以理解的是,该第一交互界面中还可以展示其他信息,例如:用于指示执行该SQL查询语句的按钮、用于指示输入报表名称的提示信息、用于指示当前状态的提示信息(例如:编辑状态)等,这都是合理的。
S103,接收该用户在输入数据源、布局形式和SQL查询语句后基于该第一交互界面发出的用于执行该SQL查询语句的执行指令;
其中,在用户输入数据源、布局形式和SQL查询语句后,可以基于该第一交互界面发出用于执行该SQL查询语句的执行指令。所谓基于该第一交互界面发出执行指令可以为:点击该第一交互界面中的用于指示执行该SQL查询语句的按钮,当然并不局限于此。
S104,响应该执行指令,执行该SQL查询语句,从该数据源中获得该报表所基于的目标数据集;
其中,在接收到该执行指令后,该电子设备可以执行该SQL查询语句,通过执行该查询语句可以从该数据源中获得该报表所基于的目标数据集。其中,该目标数据集可以为数据源的部分或全部内容,具体的依据SQL查询语句确定。
S105,展示该目标数据集所对应的第二交互界面;
在获得目标数据集后,该电子设备可以展示目标数据集所对应的第二交互界面。其中,该第二交互界面至少展示有用于指示用户为该目标数据集中的所有列选择相应的抽象列的第四提示信息。
具体的,所述抽象列的类型可以包括:布局列、维度列和统计列;其中,该布局列的数据填充方式可以包括:纵向填充和横向填充;该维度列用于聚类展示,能够跨行与跨列填充数据;该统计列中的数据填充在所述布局列和所述维度列的交叉单元格中。并且,对于一个报表而言,其布局列采用纵向填充还是横向填充基于该报表的布局形式确定,具体的,当报表的布局形式为横向填充时,报表的布局列的数据填充方式为横向填充,而当报表的布局形式为纵向填充时,报表的布局列的数据填充方式为纵向填充。进一步的,对于一个报表而言,其维度列的数据填充方式基于该报表的布局列的数据填充方式确定,具体的,当布局列的数据填充方式为横向填充时,维度列的数据填充方式则为纵向填充,而当布局列的数据填充方式为纵向填充时,维度列的数据填充方式则为横向填充。
需要强调的是,在实际应用中,该第二交互界面展示有用于指示用户为该目标数据集中的所有列选择相应的抽象列的第四提示信息,其具体展现形式可以为:展示出目标数据集的所有列的列名称,每一列名称关联有抽象列的下拉菜单,从而使得用户可以为每一列选择相应的抽象列。
在实际应用中,该第二交互界面中还可以展示用于指示生成报表的按钮。并且,更进一步的,该第二交互界面中还可以展示用于指示用户修改列名称的提示信息,以使得用户为每一列进行重命名处理;当然,该第二交互界面中还可以展示对每一列的一些配置信息,从而实现对该列的所有数据的配置,其中,配置信息可以涉及到:小计、可选、百分比、邮件显示、合计、日环比、周同比、月同比等中的一项或多项。可以理解的是,小计具体指分组时的组内合计;日环比具体指与上一日比较,周同比和月同比具体指与历史同时期比较。
S106,接收用户在选择抽象列后基于该第二交互界面发出的报表生成指令;
其中,在用户为目标数据集中的所有列选择相应的抽象列后,可以基于该第二交互界面发出的报表生成指令;该电子设备可以接收到该报表生成指令,进而响应该报表生成指令。具体的,基于该第二交互界面发出的报表生成指令可以为:用户点击展示在第二交互界面的用于指示生成报表的按钮。
需要强调的是,第二交互界面可以为与第一交互界面完全不同的界面;当然,第二交互界面中的显示内容也可以包括第一交互界面中的显示内容,也就是,在第一交互界面的基础上增加一些显示内容从而生成第二交互界面,从而使得用户可以选择性修改曾经在第一交互界面中所输入的信息,例如:布局形式、报表名称等。
S107,响应该报表生成指令,依据该目标数据集、该目标数据集中的所有列所对应的抽象列和该布局形式,生成该目标数据集所对应的报表。
在接收到用户发出的报表生成指令后,该电子设备可以响应该报表生成指令,进而依据该目标数据集、该目标数据集中的所有列所对应的抽象列和该布局形式,生成该目标数据集所对应的报表。
其中,所述依据该目标数据集、该目标数据集中的所有列所对应的抽象列和该布局形式,生成该目标数据集所对应的报表,可以包括:
判断该报表的布局形式的类型;
当判断出该报表的布局形式的类型为横向布局时,按照第一预设构建算法,依据该目标数据集和该目标数据集中的所有列所对应的抽象列,生成该目标数据集所对应的报表;
当判断出该报表的布局形式的类型为纵向布局时,按照第二预设构建算法,依据该目标数据集和该目标数据集中的所有列所对应的抽象列,生成该目标数据集所对应的报表。
对于该报表的布局形式为横向布局的情况:
具体的,所述按照第一预设构建算法,依据该目标数据集和该目标数据集中的所有列所对应的抽象列,生成该目标数据集所对应的报表,如图2所示,可以包括:
S201,依据每一布局列中的值和每一统计列中的值,生成第一数据树;并按照树型结构的遍历算法遍历该第一数据树,计算出该第一数据树中每个结点的子结点数及根结点到该结点的路径;
具体的,依据每一布局列中的值和每一统计列中的值,生成第一数据树,可以包括:
将所有布局列中的第一列中所有的值去重复处理后作为树的根结点,第二列所有的值去重复处理后作为第一层树结点,并以此类推,直至最后一个布局列;并且,将统计列的值作为叶子结点追加到最后一个布局列生成的所有树结点下,以形成第一数据树。
S202,按照从上至下且左到右的遍历顺序,读取该第一树形结构中所有结点的值,为每层结点分别生成报表中的一行,将每层中的各个结点的值确定为该行中相应列的值,并依据各个结点的子结点数设置列的跨列属性,以此生成报表的表头结构;
S203,依据每一维度列中的值,生成第二数据树;并按照树型结构的遍历算法遍历所述第二数据树,计算出所述第二数据树中每个结点的子结点数及根结点到该结点的路径;
具体的,依据每一维度列中的值,生成第二数据树,可以包括:
将所有维度列中的第一列中所有的值去重复处理后作为树的根节点,第二列中的所有值去重复处理后作为第一层树结点,以此类推,直至最后一个维度列,以此形成第二数据树。
S204,将该第二数据树中的最后一层的结点总数作为该报表的表体的总行数,将第二数据树中的最后一层的结点总数作为该报表的表体的总列数;
S205,将该目标数据集转换为key/value集合,其中,按照先行再列的方式,逐个读取所述第一数据树和第二数据树中的结点的值与路径,将每行中的结点的路径与每列中结点的路径组合成该key/value集合中的字符串key,并将该目标数据集中每行的统计列的值构成该key/value集合中的数据值value;
S206,依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成该目标数据集所对应的报表。
其中,在进行填充处理时,所述布局列的填充方式为横向填充,所述维度列的填充方式为纵向填充。
对于该报表的布局形式为横向布局的情况:
具体的,所述按照第二预设构建算法,依据该目标数据集和该目标数据集中的所有列所对应的抽象列,生成该目标数据集所对应的报表,如图3所示,可以包括:
S301,依据每一维度列中的值和每一统计列中的值,生成第一数据树;并按照树型结构的遍历算法遍历该第一数据树,计算出该第一数据树中每个结点的子结点数及根结点到该结点的路径;
具体的,依据每一维度列中的值和每一统计列中的值,生成第一数据树,可以包括:
将所有维度列中的第一列中所有的值去重复处理后作为树的根结点,第二列所有的值去重复处理后作为第一层树结点,并以此类推,直至最后一个维度列;并且,将统计列的值作为叶子结点追加到最后一个维度列生成的所有树结点下,以形成第一数据树。
S302,按照从上至下且左到右的遍历顺序,读取该第一树形结构中所有结点的值,为每层结点分别生成报表中的一行,将每层中的各个结点的值确定为该行中相应列的值,并依据各个结点的子结点数设置列的跨列属性,以此生成报表的表头结构;
S303,依据每一布局列中的值,生成第二数据树;并按照树型结构的遍历算法遍历该第二数据树,计算出该第二数据树中每个结点的子结点数及根结点到该结点的路径;
具体的,所述依据每一布局列中的值,生成第二数据树,可以包括:
将所有布局列中的第一列中所有的值去重复处理后作为树的根节点,第二列中的所有值去重复处理后作为第一层树结点,以此类推,直至最后一个布局列,以此形成第二数据树。
S304,将该第二数据树中的最后一层的结点总数作为该报表的表体的总行数,将该第二数据树中的最后一层的结点总数作为该报表的表体的总列数;
S305,将该目标数据集转换为key/value集合,其中,按照先行再列的方式,逐个读取该第一数据树和第二数据树中的结点的值与路径,将每行中的结点的路径与每列中结点的路径组合成该key/value集合中的字符串key,并将该目标数据集中每行的统计列的值构成该key/value集合中的数据值value;
S306,依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成该目标数据集所对应的报表。
其中,在进行填充处理时,该布局列的填充方式为横向填充,该维度列的填充方式为纵向填充。
本发明实施例中,通过执行用户输入的SQL查询语句从报表所依据的数据源中确定报表所基于的目标数据集,并指示用户为目标数据集中的所有列选择相应的抽象列,进而依据用户为目标数据集中的所有列选择相应的抽象列、用户为报表设定的布局形式以及目标数据集,生成目标数据集所对应的报表。可见,与现有技术相比,本方案无需专门的报表设计器定义报表的结构,而是通过简单的报表配置管理工具就能生成报表,达到了降低报表生成的操作难度且简化操作步骤的目的。
并且,用户可以通过对报表的布局形式的设置来切换报表中数据的展现形式,不需要重新利用报表设计器定义新的报表结构;而存在多层级表头或多层级报表的表体的报表只需要通过将维度列与布局列合成树形结构即可实现,同时还可以配置维度列的顺序来改变报表的多层级表头或多层级表体的展示结构,有效解决了现有技术中固定了列的顺序且只能通过报表设计器重新定义的问题,极大提高了报表展示的灵活性;同时,本发明实施例所提供的报表生成方法主要利用了关系型数据库表格与HTM语言表格结构之间的异同,把关系型数据库表格结构有效的转换成HTML中表格,并能实现报表的聚类汇总和展示,由于HTML语言是互联网的重要基础,所以该方法能够更好的应用于大数据时代的互联网或移动互联网报表统计与分析领域。
下面结合具体的应用实例,对本发明实施例所提供的报表生成方法进行介绍。
属于关系型数据库的CM报表海外数据源中包括如图4所示的数据表:student,现需要建立该数据表所对应的报表。建立过程如下:
(1)电子设备接收用户点击界面中的用于新建报表的按钮后所发出的新建报表指令。
(2)电子设备响应该新建报表指令,展示如图5所示的第一交互界面,以指示用户选择数据源、选择布局形式和输入SQL查询语句、输入报表名称等。
其中,用户选择CM报表海外数据源作为报表所依据的数据源、横向为布局形式,并且,输入报表名称“学生成绩报表”和SQL查询语句“SELECT number,name,course,scoreFROM`student`order by number”。在这些动作完成后,用户可以点击第一交互界面中的“执行SQL”按钮以发出执行指令。
(3)电子设备在接收到执行指令后,响应该执行指令,从该CM报表海外数据源中获得该报表所基于的目标数据集(如图4所示数据表),并展示如图6所示的第二交互界面,以指示用户为该目标数据集中的所有列选择相应的抽象列、重命名各列。
其中,如图6和图7所示:用户将number列重命名为学号列、name列重命名为姓名列、course列重命名课程列,score列未重命名处理,且将学号列设置为维度列,姓名列设置为维度列,课程列设置为布局列,score设置为统计列。并且,用户在修改各列的名称和为各列选择相应的抽象列后,可以点击第二交互界面中的“报表预览”按钮,从而发出报表生成指令。
其中,第二交互界面包括第一交互界面的内容,使得在点击“执行SQL”按钮后,用户仍可以修改报表名称、布局形式等信息。
(4)电子设备在接收到报表生成指令后,可以依据该目标数据集、该目标数据集中的所有列所对应的抽象列和该布局形式,生成该目标数据集所对应的报表,如图8所示。
具体的生成过程可以采用上述实施例所描述的过程,在此不作介绍。
进一步的,基于上述具体实施例而言,在展示第二交互界面后,如图9所示,用户也可以将布局形式设置为纵向、学号列设置为布局列、姓名列设置为布局列、课程列设置为布局列、score列设置为统计列,进而在点击“报表预览”按钮后,生成如图10所示的报表,以通过修改布局形式和各列所对应的抽象列来修改报表的结构。
相应于上述方法实施例,本发明实施例提供了一种报表生成装置,如图11所示,可以包括:
新建报表指令接收模块1110,用于接收用户发出的新建报表指令;
新建报表指令响应模块1120,用于响应所述新建报表指令,展示第一交互界面,其中,所述第一交互界面至少展示有用于指示用户输入报表所依据数据源的第一提示信息、用于指示用户输入所述报表所需的布局形式的第二提示信息、用于指示用户输入SQL查询语句的第三提示信息,所述SQL查询语句用于从所述数据源中提取所述报表所基于的目标数据集;
执行指令接收模块1130,用于接收所述用户在输入数据源、布局形式和SQL查询语句后基于所述第一交互界面发出的用于执行所述SQL查询语句的执行指令;
执行指令响应模块1140,用于响应所述执行指令,执行所述SQL查询语句,从所述数据源中获得所述报表所基于的目标数据集;
交互界面展示模块1150,用于展示所述目标数据集所对应的第二交互界面,其中,所述第二交互界面至少展示有用于指示用户为所述目标数据集中的所有列选择相应的抽象列的第四提示信息;
报表生成指令接收模块1160,用于接收用户在选择抽象列后基于所述第二交互界面发出的报表生成指令;
报表生成指令响应模块1170,用于响应所述报表生成指令,依据所述目标数据集、所述目标数据集中的所有列所对应的抽象列和所述布局形式,生成所述目标数据集所对应的报表。
本发明实施例中,通过执行用户输入的SQL查询语句从报表所依据的数据源中确定报表所基于的目标数据集,并指示用户为目标数据集中的所有列选择相应的抽象列,进而依据用户为目标数据集中的所有列选择相应的抽象列、用户为报表设定的布局形式以及目标数据集,生成目标数据集所对应的报表。可见,与现有技术相比,本方案无需专门的报表设计器定义报表的结构,而是通过简单的报表配置管理工具就能生成报表,达到了降低报表生成的操作难度且简化操作步骤的目的。
具体的,所述布局形式的类型可以包括:横向布局和纵向布局。
具体的,所述抽象列的类型可以包括:布局列、维度列和统计列;
其中,所述布局列的数据填充方式包括:纵向填充和横向填充;
其中,所述维度列用于聚类展示,能够跨行与跨列填充数据;
其中,所述统计列中的数据填充在所述布局列和所述维度列的交叉单元格中。
具体的,所述报表生成指令响应模块1170,可以包括:
判断单元,用于判断所述报表的布局形式的类型;
第一报表生成单元,用于当判断出所述报表的布局形式的类型为横向布局时,按照第一预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表;
第二报表生成单元,用于当判断出所述报表的布局形式的类型为纵向布局时,按照第二预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表。
具体的,所述第一报表生成单元,具体用于:
依据每一布局列中的值和每一统计列中的值,生成第一数据树;并按照树型结构的遍历算法遍历所述第一数据树,计算出所述第一数据树中每个结点的子结点数及根结点到该结点的路径;
按照从上至下且左到右的遍历顺序,读取所述第一树形结构中所有结点的值,为每层结点分别生成报表中的一行,将每层中的各个结点的值确定为该行中相应列的值,并依据各个结点的子结点数设置列的跨列属性,以此生成报表的表头结构;
依据每一维度列中的值,生成第二数据树;并按照树型结构的遍历算法遍历所述第二数据树,计算出所述第二数据树中每个结点的子结点数及根结点到该结点的路径;
将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总行数,将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总列数;
将所述目标数据集转换为key/value集合,其中,按照先行再列的方式,逐个读取所述第一数据树和第二数据树中的结点的值与路径,将每行中的结点的路径与每列中结点的路径组合成所述key/value集合中的字符串key,并将所述目标数据集中每行的统计列的值构成所述key/value集合中的数据值value;
依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成所述目标数据集所对应的报表;
其中,在进行填充处理时,所述布局列的填充方式为横向填充,所述维度列的填充方式为纵向填充。
更进一步的,所述第一报表生成单元依据每一布局列中的值和每一统计列中的值,生成第一数据树,可以包括:
将所有布局列中的第一列中所有的值去重复处理后作为树的根结点,第二列所有的值去重复处理后作为第一层树结点,并以此类推,直至最后一个布局列;并且,将统计列的值作为叶子结点追加到最后一个布局列生成的所有树结点下,以形成第一数据树;
所述第一报表生成单元依据每一维度列中的值,生成第二数据树,包括:
将所有维度列中的第一列中所有的值去重复处理后作为树的根节点,第二列中的所有值去重复处理后作为第一层树结点,以此类推,直至最后一个维度列,以此形成第二数据树。
具体的,所述第二报表生成单元,具体用于:
依据每一维度列中的值和每一统计列中的值,生成第一数据树;并按照树型结构的遍历算法遍历所述第一数据树,计算出所述第一数据树中每个结点的子结点数及根结点到该结点的路径;
按照从上至下且左到右的遍历顺序,读取所述第一树形结构中所有结点的值,为每层结点分别生成报表中的一行,将每层中的各个结点的值确定为该行中相应列的值,并依据各个结点的子结点数设置列的跨列属性,以此生成报表的表头结构;
依据每一布局列中的值,生成第二数据树;并按照树型结构的遍历算法遍历所述第二数据树,计算出所述第二数据树中每个结点的子结点数及根结点到该结点的路径;
将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总行数,将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总列数;
将所述目标数据集转换为key/value集合,其中,按照先行再列的方式,逐个读取所述第一数据树和第二数据树中的结点的值与路径,将每行中的结点的路径与每列中结点的路径组合成所述key/value集合中的字符串key,并将所述目标数据集中每行的统计列的值构成所述key/value集合中的数据值value;
依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成所述目标数据集所对应的报表;
其中,在进行填充处理时,所述布局列的填充方式为横向填充,所述维度列的填充方式为纵向填充。
更进一步的,所述第二报表生成单元依据每一维度列中的值和每一统计列中的值,生成第一数据树,可以包括:
将所有维度列中的第一列中所有的值去重复处理后作为树的根结点,第二列所有的值去重复处理后作为第一层树结点,并以此类推,直至最后一个维度列;并且,将统计列的值作为叶子结点追加到最后一个维度列生成的所有树结点下,以形成第一数据树;
所述第二报表生成单元依据每一布局列中的值,生成第二数据树,包括:
将所有布局列中的第一列中所有的值去重复处理后作为树的根节点,第二列中的所有值去重复处理后作为第一层树结点,以此类推,直至最后一个布局列,以此形成第二数据树。
对于系统或装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种报表生成方法,其特征在于,包括:
接收用户发出的新建报表指令;
响应所述新建报表指令,展示第一交互界面,其中,所述第一交互界面至少展示有用于指示用户输入报表所依据数据源的第一提示信息、用于指示用户输入所述报表所需的布局形式的第二提示信息、用于指示用户输入SQL查询语句的第三提示信息,所述SQL查询语句用于从所述数据源中提取所述报表所基于的目标数据集;
接收所述用户在输入数据源、布局形式和SQL查询语句后基于所述第一交互界面发出的用于执行所述SQL查询语句的执行指令;
响应所述执行指令,执行所述SQL查询语句,从所述数据源中获得所述报表所基于的目标数据集;
展示所述目标数据集所对应的第二交互界面,其中,所述第二交互界面至少展示有用于指示用户为所述目标数据集中的所有列选择相应的抽象列的第四提示信息;
接收用户在选择抽象列后基于所述第二交互界面发出的报表生成指令;
响应所述报表生成指令,依据所述目标数据集、所述目标数据集中的所有列所对应的抽象列和所述布局形式,生成所述目标数据集所对应的报表;
其中,所述布局形式的类型包括:横向布局和纵向布局;
其中,所述抽象列的类型包括:布局列、维度列和统计列;
其中,所述布局列的数据填充方式包括:纵向填充和横向填充;
其中,所述维度列用于聚类展示,能够跨行与跨列填充数据;
其中,所述统计列中的数据填充在所述布局列和所述维度列的交叉单元格中。
2.根据权利要求1所述的方法,其特征在于,所述依据所述目标数据集、所述目标数据集中的所有列所对应的抽象列和所述布局形式,生成所述目标数据集所对应的报表,包括:
判断所述报表的布局形式的类型;
当判断出所述报表的布局形式的类型为横向布局时,按照第一预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表;
当判断出所述报表的布局形式的类型为纵向布局时,按照第二预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表。
3.根据权利要求2所述的方法,其特征在于,所述按照第一预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表,包括:
依据每一布局列中的值和每一统计列中的值,生成第一数据树;并按照树型结构的遍历算法遍历所述第一数据树,计算出所述第一数据树中每个结点的子结点数及根结点到该结点的路径;
按照从上至下且左到右的遍历顺序,读取所述第一数据树中所有结点的值,为每层结点分别生成报表中的一行,将每层中的各个结点的值确定为该行中相应列的值,并依据各个结点的子结点数设置列的跨列属性,以此生成报表的表头结构;
依据每一维度列中的值,生成第二数据树;并按照树型结构的遍历算法遍历所述第二数据树,计算出所述第二数据树中每个结点的子结点数及根结点到该结点的路径;
将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总行数,将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总列数;
将所述目标数据集转换为key/value集合,其中,按照先行再列的方式,逐个读取所述第一数据树和第二数据树中的结点的值与路径,将每行中的结点的路径与每列中结点的路径组合成所述key/value集合中的字符串key,并将所述目标数据集中每行的统计列的值构成所述key/value集合中的数据值value;
依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成所述目标数据集所对应的报表;
其中,在进行填充处理时,所述布局列的填充方式为横向填充,所述维度列的填充方式为纵向填充;
其中,依据每一布局列中的值和每一统计列中的值,生成第一数据树,包括:
将所有布局列中的第一列中所有的值去重复处理后作为树的根结点,第二列所有的值去重复处理后作为第一层树结点,并以此类推,直至最后一个布局列;并且,将统计列的值作为叶子结点追加到最后一个布局列生成的所有树结点下,以形成第一数据树;
所述依据每一维度列中的值,生成第二数据树,包括:
将所有维度列中的第一列中所有的值去重复处理后作为树的根节点,第二列中的所有值去重复处理后作为第一层树结点,以此类推,直至最后一个维度列,以此形成第二数据树。
4.根据权利要求2所述的方法,其特征在于,所述按照第二预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表,包括:
依据每一维度列中的值和每一统计列中的值,生成第一数据树;并按照树型结构的遍历算法遍历所述第一数据树,计算出所述第一数据树中每个结点的子结点数及根结点到该结点的路径;
按照从上至下且左到右的遍历顺序,读取所述第一数据树中所有结点的值,为每层结点分别生成报表中的一行,将每层中的各个结点的值确定为该行中相应列的值,并依据各个结点的子结点数设置列的跨列属性,以此生成报表的表头结构;
依据每一布局列中的值,生成第二数据树;并按照树型结构的遍历算法遍历所述第二数据树,计算出所述第二数据树中每个结点的子结点数及根结点到该结点的路径;
将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总行数,将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总列数;
将所述目标数据集转换为key/value集合,其中,按照先行再列的方式,逐个读取所述第一数据树和第二数据树中的结点的值与路径,将每行中的结点的路径与每列中结点的路径组合成所述key/value集合中的字符串key,并将所述目标数据集中每行的统计列的值构成所述key/value集合中的数据值value;
依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成所述目标数据集所对应的报表;
其中,在进行填充处理时,所述布局列的填充方式为横向填充,所述维度列的填充方式为纵向填充;
其中,依据每一维度列中的值和每一统计列中的值,生成第一数据树,包括:
将所有维度列中的第一列中所有的值去重复处理后作为树的根结点,第二列所有的值去重复处理后作为第一层树结点,并以此类推,直至最后一个维度列;并且,将统计列的值作为叶子结点追加到最后一个维度列生成的所有树结点下,以形成第一数据树;
所述依据每一布局列中的值,生成第二数据树,包括:
将所有布局列中的第一列中所有的值去重复处理后作为树的根节点,第二列中的所有值去重复处理后作为第一层树结点,以此类推,直至最后一个布局列,以此形成第二数据树。
5.一种报表生成装置,其特征在于,包括:
新建报表指令接收模块,用于接收用户发出的新建报表指令;
新建报表指令响应模块,用于响应所述新建报表指令,展示第一交互界面,其中,所述第一交互界面至少展示有用于指示用户输入报表所依据数据源的第一提示信息、用于指示用户输入所述报表所需的布局形式的第二提示信息、用于指示用户输入SQL查询语句的第三提示信息,所述SQL查询语句用于从所述数据源中提取所述报表所基于的目标数据集;
执行指令接收模块,用于接收所述用户在输入数据源、布局形式和SQL查询语句后基于所述第一交互界面发出的用于执行所述SQL查询语句的执行指令;
执行指令响应模块,用于响应所述执行指令,执行所述SQL查询语句,从所述数据源中获得所述报表所基于的目标数据集;
交互界面展示模块,用于展示所述目标数据集所对应的第二交互界面,其中,所述第二交互界面至少展示有用于指示用户为所述目标数据集中的所有列选择相应的抽象列的第四提示信息;
报表生成指令接收模块,用于接收用户在选择抽象列后基于所述第二交互界面发出的报表生成指令;
报表生成指令响应模块,用于响应所述报表生成指令,依据所述目标数据集、所述目标数据集中的所有列所对应的抽象列和所述布局形式,生成所述目标数据集所对应的报表;
其中,所述布局形式的类型包括:横向布局和纵向布局;
其中,所述抽象列的类型包括:布局列、维度列和统计列;
其中,所述布局列的数据填充方式包括:纵向填充和横向填充;
其中,所述维度列用于聚类展示,能够跨行与跨列填充数据;
其中,所述统计列中的数据填充在所述布局列和所述维度列的交叉单元格中。
6.根据权利要求5所述的装置,其特征在于,所述报表生成指令响应模块,包括:
判断单元,用于判断所述报表的布局形式的类型;
第一报表生成单元,用于当判断出所述报表的布局形式的类型为横向布局时,按照第一预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表;
第二报表生成单元,用于当判断出所述报表的布局形式的类型为纵向布局时,按照第二预设构建算法,依据所述目标数据集和所述目标数据集中的所有列所对应的抽象列,生成所述目标数据集所对应的报表。
7.根据权利要求6所述的装置,其特征在于,所述第一报表生成单元,具体用于:
依据每一布局列中的值和每一统计列中的值,生成第一数据树;并按照树型结构的遍历算法遍历所述第一数据树,计算出所述第一数据树中每个结点的子结点数及根结点到该结点的路径;
按照从上至下且左到右的遍历顺序,读取所述第一数据树中所有结点的值,为每层结点分别生成报表中的一行,将每层中的各个结点的值确定为该行中相应列的值,并依据各个结点的子结点数设置列的跨列属性,以此生成报表的表头结构;
依据每一维度列中的值,生成第二数据树;并按照树型结构的遍历算法遍历所述第二数据树,计算出所述第二数据树中每个结点的子结点数及根结点到该结点的路径;
将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总行数,将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总列数;
将所述目标数据集转换为key/value集合,其中,按照先行再列的方式,逐个读取所述第一数据树和第二数据树中的结点的值与路径,将每行中的结点的路径与每列中结点的路径组合成所述key/value集合中的字符串key,并将所述目标数据集中每行的统计列的值构成所述key/value集合中的数据值value;
依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成所述目标数据集所对应的报表;
其中,在进行填充处理时,所述布局列的填充方式为横向填充,所述维度列的填充方式为纵向填充;
其中,所述第一报表生成单元依据每一布局列中的值和每一统计列中的值,生成第一数据树,包括:
将所有布局列中的第一列中所有的值去重复处理后作为树的根结点,第二列所有的值去重复处理后作为第一层树结点,并以此类推,直至最后一个布局列;并且,将统计列的值作为叶子结点追加到最后一个布局列生成的所有树结点下,以形成第一数据树;
所述第一报表生成单元依据每一维度列中的值,生成第二数据树,包括:
将所有维度列中的第一列中所有的值去重复处理后作为树的根节点,第二列中的所有值去重复处理后作为第一层树结点,以此类推,直至最后一个维度列,以此形成第二数据树。
8.根据权利要求6所述的装置,其特征在于,所述第二报表生成单元,具体用于:
依据每一维度列中的值和每一统计列中的值,生成第一数据树;并按照树型结构的遍历算法遍历所述第一数据树,计算出所述第一数据树中每个结点的子结点数及根结点到该结点的路径;
按照从上至下且左到右的遍历顺序,读取所述第一数据树中所有结点的值,为每层结点分别生成报表中的一行,将每层中的各个结点的值确定为该行中相应列的值,并依据各个结点的子结点数设置列的跨列属性,以此生成报表的表头结构;
依据每一布局列中的值,生成第二数据树;并按照树型结构的遍历算法遍历所述第二数据树,计算出所述第二数据树中每个结点的子结点数及根结点到该结点的路径;
将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总行数,将所述第二数据树中的最后一层的结点总数作为所述报表的表体的总列数;
将所述目标数据集转换为key/value集合,其中,按照先行再列的方式,逐个读取所述第一数据树和第二数据树中的结点的值与路径,将每行中的结点的路径与每列中结点的路径组合成所述key/value集合中的字符串key,并将所述目标数据集中每行的统计列的值构成所述key/value集合中的数据值value;
依据Key/value集合中的字符串key和数据值value,确定报表的表体中的每个单元格的值,并进行填充处理,以形成所述目标数据集所对应的报表;
其中,在进行填充处理时,所述布局列的填充方式为横向填充,所述维度列的填充方式为纵向填充;
其中,所述第二报表生成单元依据每一维度列中的值和每一统计列中的值,生成第一数据树,包括:
将所有维度列中的第一列中所有的值去重复处理后作为树的根结点,第二列所有的值去重复处理后作为第一层树结点,并以此类推,直至最后一个维度列;并且,将统计列的值作为叶子结点追加到最后一个维度列生成的所有树结点下,以形成第一数据树;
所述第二报表生成单元依据每一布局列中的值,生成第二数据树,包括:
将所有布局列中的第一列中所有的值去重复处理后作为树的根节点,第二列中的所有值去重复处理后作为第一层树结点,以此类推,直至最后一个布局列,以此形成第二数据树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410307583.2A CN104036040B (zh) | 2014-06-30 | 2014-06-30 | 报表生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410307583.2A CN104036040B (zh) | 2014-06-30 | 2014-06-30 | 报表生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104036040A CN104036040A (zh) | 2014-09-10 |
CN104036040B true CN104036040B (zh) | 2017-11-03 |
Family
ID=51466810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410307583.2A Active CN104036040B (zh) | 2014-06-30 | 2014-06-30 | 报表生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104036040B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106406835A (zh) * | 2015-07-30 | 2017-02-15 | 大唐软件技术股份有限公司 | 一种报表生成方法和报表生成装置 |
CN106372048A (zh) * | 2016-08-30 | 2017-02-01 | 北京北信源软件股份有限公司 | 一种报表生成系统及报表生成方法 |
CN106372148B (zh) * | 2016-08-30 | 2020-01-10 | 成都科来软件有限公司 | 一种基于统计数据对报表进行配置和展现的方法 |
CN106407171B (zh) * | 2016-11-03 | 2023-09-26 | 华能澜沧江水电股份有限公司 | 基于树形结构的安全监测自定义报表的生成系统及方法 |
CN108268480A (zh) * | 2016-12-30 | 2018-07-10 | 亿阳信通股份有限公司 | 一种大数据的展现方法和装置 |
CN107766309B (zh) * | 2017-08-29 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 数据表格生成方法、装置以及存储介质、电子装置 |
CN107609131B (zh) * | 2017-09-18 | 2020-04-17 | 中国银行股份有限公司 | 一种报表文件生成方法及装置 |
CN109582936B (zh) * | 2017-09-28 | 2023-07-07 | 北京国双科技有限公司 | 配置报表信息的方法和装置 |
CN109582937A (zh) * | 2017-09-28 | 2019-04-05 | 北京国双科技有限公司 | 报表生成方法、装置、存储介质和处理器 |
CN110019224A (zh) * | 2017-12-21 | 2019-07-16 | 天津数观科技有限公司 | 一种基于树搜索的交叉表头生成方法 |
CN108399093B (zh) * | 2018-02-28 | 2021-10-29 | 南京天溯自动化控制系统有限公司 | 节点处理方法、装置及电子设备 |
CN110427599A (zh) * | 2019-06-06 | 2019-11-08 | 北京辰森世纪科技股份有限公司 | 报表小计的统计方法及装置、存储介质、电子装置 |
CN110728126A (zh) * | 2019-10-24 | 2020-01-24 | 北京新氧万维科技咨询有限公司 | 一种报表生成方法、装置及设备 |
CN111367945A (zh) * | 2020-02-28 | 2020-07-03 | 平安医疗健康管理股份有限公司 | 报表查询方法、装置、设备及计算机可读存储介质 |
CN112667630B (zh) * | 2020-12-24 | 2023-06-02 | 平安科技(深圳)有限公司 | 整合业务报表的方法、装置、设备以及存储介质 |
CN113434612B (zh) * | 2021-07-09 | 2024-01-26 | 青岛海尔科技有限公司 | 数据统计方法及装置、存储介质及电子装置 |
CN113836879B (zh) * | 2021-09-26 | 2024-03-22 | 新华三大数据技术有限公司 | 一种报表填充方法及装置 |
CN114722790B (zh) * | 2022-04-24 | 2023-09-05 | 北京京航计算通讯研究所 | 一种非嵌入式的全面预算管理方法和系统 |
CN115221849B (zh) * | 2022-07-12 | 2023-07-18 | 平安科技(深圳)有限公司 | 一种报表填充方法、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101308490A (zh) * | 2008-04-28 | 2008-11-19 | 北京航空航天大学 | 一种动态报表生成方法及平台 |
CN101609473A (zh) * | 2009-07-30 | 2009-12-23 | 金蝶软件(中国)有限公司 | 一种重构报表查询的结构化查询语言的方法及装置 |
CN103064689A (zh) * | 2013-01-04 | 2013-04-24 | 大唐软件技术股份有限公司 | 一种动态生成报表页面的实现方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010037268A1 (en) * | 1997-05-08 | 2001-11-01 | Miller David S. | Fully-automated system for tax reporting, payment and refund and system for accessing tax information |
-
2014
- 2014-06-30 CN CN201410307583.2A patent/CN104036040B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101308490A (zh) * | 2008-04-28 | 2008-11-19 | 北京航空航天大学 | 一种动态报表生成方法及平台 |
CN101609473A (zh) * | 2009-07-30 | 2009-12-23 | 金蝶软件(中国)有限公司 | 一种重构报表查询的结构化查询语言的方法及装置 |
CN103064689A (zh) * | 2013-01-04 | 2013-04-24 | 大唐软件技术股份有限公司 | 一种动态生成报表页面的实现方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104036040A (zh) | 2014-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104036040B (zh) | 报表生成方法及装置 | |
CN107111639A (zh) | 构建报表 | |
US10354002B2 (en) | Interaction relationship building and explorer for dashboard | |
CN102456067B (zh) | 用于传送二次选择反馈的方法和设备 | |
US9465523B2 (en) | Visual exploration of multidimensional data | |
CN103729337B (zh) | 报表转换方法及装置 | |
CN105843945A (zh) | 一种报表生成方法及系统 | |
Parent et al. | The MurMur project: Modeling and querying multi-representation spatio-temporal databases | |
US20140214495A1 (en) | Business intelligence systems and methods | |
US20120151393A1 (en) | Manipulation of elements and their attributes in graphical user interfaces | |
CN116225429A (zh) | 基于拖拽式组件框架的ipage网页式低代码开发平台 | |
Ochs et al. | A unified software framework for deriving, visualizing, and exploring abstraction networks for ontologies | |
JP6132698B2 (ja) | 表形式多次元データ変換方法及び装置 | |
CN102707949A (zh) | 一种基于本体的可视化概念建模方法 | |
US20220138413A1 (en) | Computer implemented method, computer program and physical computing environment | |
Weaver | Multidimensional data dissection using attribute relationship graphs | |
Bimonte et al. | Spatial olap and map generalization: Model and algebra | |
US20090125828A1 (en) | Automatic Creation of Data Relationships | |
CN107122171A (zh) | 自动生成业务流程中数据操作的方法及系统 | |
US8832601B2 (en) | ETL tool utilizing dimension trees | |
CN110413765A (zh) | 一种海量数据集分析和展示的交互式系统及其方法 | |
Soni et al. | A survey on automatic dashboard recommendation systems | |
CN103544338B (zh) | 一种面向三维装配指令发布的工艺信息建模方法 | |
CN111784192A (zh) | 一种基于动态演化的工业园区应急预案可执行化系统 | |
CN104537047B (zh) | 一种基于Lucene的服装基样板检索系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 100041 Beijing, Shijingshan District Xing Xing street, building 30, No. 3, building 2, A-0071 Applicant after: Beijing cheetah Mobile Technology Co., Ltd. Address before: 100041 Beijing city Shijingshan District Badachu high tech Park West Wells Road No. 3 Building No. 3 1100A Applicant before: SHELL INTERNET (BEIJING) SECURITY TECHNOLOGY CO., LTD. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |