CN110019224A - 一种基于树搜索的交叉表头生成方法 - Google Patents
一种基于树搜索的交叉表头生成方法 Download PDFInfo
- Publication number
- CN110019224A CN110019224A CN201711392534.3A CN201711392534A CN110019224A CN 110019224 A CN110019224 A CN 110019224A CN 201711392534 A CN201711392534 A CN 201711392534A CN 110019224 A CN110019224 A CN 110019224A
- Authority
- CN
- China
- Prior art keywords
- gauge outfit
- crosstab
- tree
- data
- generation method
- 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.)
- Pending
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2264—Multidimensional index structures
-
- 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/2282—Tablespace storage structures; Management thereof
Abstract
一种基于树搜索的交叉表头生成方法,先查询维度的原始数据;再对查询的信息进行结构变换和规则应用;最后生成表头数据;所述结构变换和规则应用的步骤包括生成中间树。本申请的有益效果是:用中间树结构做交换,代替数组操作,降低表头生成过程的时间复杂度和存储用量,提高了表头生成的效率;降低内存占用,能够保存节点关联关系等相关数据,用于交叉表内容填充及后续其他数据分析。
Description
技术领域
本申请属于数据处理技术领域,具体地说,涉及一种基于树搜索的交叉表头生成方法。
背景技术
交叉表是将多个维度作为表头按照设定规则分布在横/纵两个方向,并将相应数据填充到表头交叉点的一种报表展现形式,交叉表生成过程中需要对相同表头进行合并,在表头合并生成过程中需要将度量名称填入表头的指定位置。现有的表头合并过程采用数组操作,需要频繁计算合并规则和计算表头单元格数量,造成了表头生成过程复杂的问题;且对于交叉表头,具有相同父级并且内容相同的表头,在二维数组中由于需要保持数组长度对齐,需要申请内存来存储这些相同的内容,所以存储用量非常大,造成资源浪费。在需要额外插入指定表头的场景中(例如,在指定的位置插入度量名称),由于需要重新计算插入内容后的数组宽度,从而需要重新申请更大块的内存,并将旧数组内存按规则复制到新数组中,复制过程需要通过映射关系计算写入位置,造成内存资源的浪费。
发明内容
有鉴于此,本申请所要解决的技术问题是提供了一种基于树搜索的交叉表头生成方法,能够用中间树结构做交换,代替数组操作,降低表头生成过程的时间复杂度和存储用量,提高了表头生成的效率。
为了解决上述技术问题,本申请公开了一种基于树搜索的交叉表头生成方法,并采用以下技术方案来实现。
一种基于树搜索的交叉表头生成方法,先查询维度的原始数据;再对查询的信息进行结构变换和规则应用;最后生成表头数据;所述结构变换和规则应用的步骤包括生成中间树。
进一步的,所述中间树内保存节点关联关系、层级高度和/或子节点数量。
进一步的,生成所述中间树时,将在目标表头中存在且在所述原始数据中不存在的节点插入到所述中间树中。
进一步的,所述查询维度的原始数据包括两个步骤,分别为获取横表头原始数据和去除所述横表头中的重复行。
进一步的,所述生成表头数据包括两个步骤,分别为将所述中间树的结构转换为横表头二维数组和将所述二维数组的数据填充进所述表头的单元格。
更进一步的,生成所述表头数据时,根据所述单元格内数据的引用是否相同来判断是否需要合并单元格,将相同引用的单元格进行合并。
与现有技术相比,本申请可以获得包括以下技术效果:用中间树结构做交换,代替数组操作,降低表头生成过程的时间复杂度和存储用量,提高了表头生成的效率;降低内存占用,能够保存节点关联关系等相关数据,用于交叉表内容填充及后续其他数据分析(例如单元格数据钻取、子表生成等)。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请一个实施例的交叉表头生成过程示意图。
图2是本申请一个具体实施例的交叉表头生成过程示意图。
图3是本申请一个具体实施例的中间树结构示意图。
图4是本申请一个具体实施例的插入度量节点示意图。
具体实施方式
以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
一种基于树搜索的交叉表头生成方法,如图1所示,先查询维度的原始数据;再对查询的信息进行结构变换和规则应用;最终生成表头数据。
本发明主要针对“结构变换和规则应用”的过程进行优化,增加“生成中间树”,将对数组的相关变换操作转换成树结构变换操作。树结构能够保存节点关联关系、层级高度、子节点数量等内容,对应于交叉表头的关系为上下级表头关系、表头层级数量、字级表头宽度等内容。相比于二维数组搜索,树结构搜索能够更快速定位目标数据节点,从而降低扫描次数,提高速度。
在树结构中,对于具有相同父级并且内容相同的交叉表头,不需要为了保持数组长度对齐而申请过多的内存来存储一些相同的内容,只需要一个节点来保存该内容,从而减少内存占用量。
在需要额外插入指定表头的场景中(例如,在指定的位置插入度量名称),利用本发明中的中间树结构,插入额外表头的操作简化为在树结构的指定层级上插入一层新节点,并修改节点关联关系,从而提高了插入效率。
以下举实例说明:将“表格1原始数据表”转换为“表格2目标交叉表”的横表头。表格1和表格2如下所示:
表1原始数据表
表2目标交叉表
由表1的原始数据生成表2的目标交叉表的过程如图2所示,先查询维度的原始数据;再对查询的信息进行结构变换和规则应用;最终生成表头数据。
查询维度的原始数据经过两步,一是获取横表头原始数据,二是去除横表头中的重复行。结构变换和规则应用也分两步,一是按行读取去重后的横表头原始数据并生成中间树结构,二是在中间树的第三层插入“平均数学”和“平均语文”两个节点。生成表头数据也分为两步,一是创建最终表头二维数组,二是写入单元格数据。
S1、从原始表获取横表头所需的原始表头数据,并去除重复行,得到的结果如表3所示:
实验小学 | 一年级 | 一年一班 |
实验小学 | 一年级 | 一年二班 |
实验小学 | 一年级 | 一年三班 |
实验小学 | 二年级 | 二年一班 |
实验小学 | 二年级 | 二年二班 |
实验小学 | 二年级 | 二年三班 |
红旗小学 | 一年级 | 一年一班 |
红旗小学 | 一年级 | 一年二班 |
红旗小学 | 一年级 | 一年三班 |
红旗小学 | 二年级 | 二年一班 |
红旗小学 | 二年级 | 二年二班 |
红旗小学 | 二年级 | 二年三班 |
表3去重的表头原始数据
S2、将原始数据生成的中间树结构如图3所示。根节点为第一级节点;根节点包含两个第一级叶子节点,分别为实验小学和红旗小学。每个第一级叶子节点分别包含两个第二级叶子节点,且第二级叶子节点分别为一年级和二年级。
S3、对每一个第二级叶子节点分别插入两个第三级叶子节点,分别为平均数学和平均语文,如图4所示。
S4、将中间树结构转换为最终的横表头二维数组,并将二维数组数据填充进表头单元格;
S41、计算二维数组的高度H和宽度W;
高度H为中间树高度减1(根节点不属于表头),即H=hight(tree)-1,本示例中H=4-1=3。
宽度W为中间树叶子节点最多的一级的叶子节点的总个数,本示例指的是最低级叶子节点的总个数,用leaf表示,即W=count(leaf),本示例中W=8(即第三级叶子节点的个数)。
S42、创建二维数组TitleArray[H][W]。
S43、填充表头单元格;从叶子节点按列填充表头单元格,填充过程如下:
(1)从中间树中获取全部叶子节点数组LeafArray[],循环参数i=H,j=1;
(2)填充叶子节点Leaf=LeafArray[j]及其父节点(根节点除外);
a Node=Leaf;
b IF Node!=NULL;TitleArray[i][j]=Node;else return;
c Node=Node.ParentNode;i=i-1;
d goto b;
(3)j=j-1;
(4)判断j≤W是否成立,如果成立跳转至(2)过程继续执行,否则结束;
(5)填充结束。
填充完的结果如表4所示。
实验小学 | 实验小学 | 实验小学 | 实验小学 | 红旗小学 | 红旗小学 | 红旗小学 | 红旗小学 |
一年级 | 一年级 | 二年级 | 二年级 | 一年级 | 一年级 | 二年级 | 二年级 |
平均数学 | 平均语文 | 平均数学 | 平均语文 | 平均数学 | 平均语文 | 平均数学 | 平均语文 |
表4表头二维数组填充结果
S44、根据单元格内数据的引用是否相同来判断是否需要合并单元格,需要合并的单元进行合并,并显示输出。
在该填充结果中,包含重复内容,在内存的实际存储结构中(以C语言为例)为指针引用,即四个“实验小学”的单元格是存储的相同的指针引用,占用内存量较低。最终输出到显示设备时,可以根据指针引用是否相同来判断是否需要合并单元格。
表头的输出显示格式如表5所示:
表5输出显示格式
本申请的有益效果是:用中间树结构做交换,代替数组操作,降低表头生成过程的时间复杂度和存储用量,提高了表头生成的效率;降低内存占用,能够保存节点关联关系等相关数据,用于交叉表内容填充及后续其他数据分析(例如单元格数据钻取、子表生成等)。
以上对本申请实施例所提供的一种基于树搜索的交叉表头生成方法,进行了详细介绍。以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”、“包括”均为开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述申请构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。
Claims (9)
1.一种基于树搜索的交叉表头生成方法,先查询维度的原始数据;再对查询的信息进行结构变换和规则应用;最后生成表头数据;其特征在于:所述结构变换和规则应用的步骤包括生成中间树。
2.根据权利要求1所述基于树搜索的交叉表头生成方法,其特征在于:所述中间树保存节点关联关系、层级高度和/或子节点数量。
3.根据权利要求1或2所述基于树搜索的交叉表头生成方法,其特征在于:生成所述中间树时,将在目标表头中存在且在所述原始数据中不存在的节点插入到所述中间树中。
4.根据权利要求1或2所述基于树搜索的交叉表头生成方法,其特征在于:所述查询维度的原始数据包括两个步骤,分别为获取横表头原始数据和去除所述横表头中的重复行。
5.根据权利要求3所述基于树搜索的交叉表头生成方法,其特征在于:所述查询维度的原始数据包括两个步骤,分别为获取横表头原始数据和去除所述横表头中的重复行。
6.根据权利要求1或2所述基于树搜索的交叉表头生成方法,其特征在于:所述生成表头数据包括两个步骤,分别为将所述中间树的结构转换为横表头二维数组和将所述二维数组的数据填充进所述表头的单元格。
7.根据权利要求3所述基于树搜索的交叉表头生成方法,其特征在于:所述生成表头数据包括两个步骤,分别为将所述中间树的结构转换为横表头二维数组和将所述二维数组的数据填充进所述表头的单元格。
8.根据权利要求6所述基于树搜索的交叉表头生成方法,其特征在于:生成所述表头数据时,根据所述单元格内数据的引用是否相同来判断是否需要合并单元格,将相同引用的单元格进行合并。
9.根据权利要求7所述基于树搜索的交叉表头生成方法,其特征在于:生成所述表头数据时,根据所述单元格内数据的引用是否相同来判断是否需要合并单元格,将相同引用的单元格进行合并。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711392534.3A CN110019224A (zh) | 2017-12-21 | 2017-12-21 | 一种基于树搜索的交叉表头生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711392534.3A CN110019224A (zh) | 2017-12-21 | 2017-12-21 | 一种基于树搜索的交叉表头生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110019224A true CN110019224A (zh) | 2019-07-16 |
Family
ID=67187038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711392534.3A Pending CN110019224A (zh) | 2017-12-21 | 2017-12-21 | 一种基于树搜索的交叉表头生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110019224A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782658A (zh) * | 2020-07-08 | 2020-10-16 | 支付宝(杭州)信息技术有限公司 | 交叉表处理方法、装置、电子设备及存储介质 |
CN112115683A (zh) * | 2020-09-29 | 2020-12-22 | 深圳市汉云科技有限公司 | 一种基于二维报表转换的数据统计方法、装置及终端设备 |
WO2021022553A1 (en) * | 2019-08-08 | 2021-02-11 | Microsoft Technology Licensing, Llc | Spreadsheet table transformation |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007045013A1 (en) * | 2005-10-17 | 2007-04-26 | Middlemarch Holdings Pty Ltd | A method and apparatus for improved processing and analysis of complex hierarchic data |
CN101620636A (zh) * | 2009-08-21 | 2010-01-06 | 腾讯科技(北京)有限公司 | 一种显示表格数据的方法和装置 |
CN103886023A (zh) * | 2014-02-24 | 2014-06-25 | 国家电网公司 | Excel数据表的存储、提取方法及系统 |
CN104036040A (zh) * | 2014-06-30 | 2014-09-10 | 贝壳网际(北京)安全技术有限公司 | 报表生成方法及装置 |
CN104142952A (zh) * | 2013-05-10 | 2014-11-12 | 中国电信股份有限公司 | 报表展示方法和装置 |
CN105488073A (zh) * | 2014-09-26 | 2016-04-13 | 北京神州泰岳软件股份有限公司 | 一种生成报表表头的方法和装置 |
-
2017
- 2017-12-21 CN CN201711392534.3A patent/CN110019224A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007045013A1 (en) * | 2005-10-17 | 2007-04-26 | Middlemarch Holdings Pty Ltd | A method and apparatus for improved processing and analysis of complex hierarchic data |
CN101620636A (zh) * | 2009-08-21 | 2010-01-06 | 腾讯科技(北京)有限公司 | 一种显示表格数据的方法和装置 |
CN104142952A (zh) * | 2013-05-10 | 2014-11-12 | 中国电信股份有限公司 | 报表展示方法和装置 |
CN103886023A (zh) * | 2014-02-24 | 2014-06-25 | 国家电网公司 | Excel数据表的存储、提取方法及系统 |
CN104036040A (zh) * | 2014-06-30 | 2014-09-10 | 贝壳网际(北京)安全技术有限公司 | 报表生成方法及装置 |
CN105488073A (zh) * | 2014-09-26 | 2016-04-13 | 北京神州泰岳软件股份有限公司 | 一种生成报表表头的方法和装置 |
Non-Patent Citations (2)
Title |
---|
LIU HAORAN: "Efficient mining algorithm for uncertain data in probabilistic frequent itemsets", 《JOURNAL OF COMPUTER APPLICATIONS》 * |
郑志蕴等: "SpringSide交叉报表构造模型研究", 《计算机应用与软件》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021022553A1 (en) * | 2019-08-08 | 2021-02-11 | Microsoft Technology Licensing, Llc | Spreadsheet table transformation |
US11836445B2 (en) | 2019-08-08 | 2023-12-05 | Microsoft Technology Licensing, Llc | Spreadsheet table transformation |
CN111782658A (zh) * | 2020-07-08 | 2020-10-16 | 支付宝(杭州)信息技术有限公司 | 交叉表处理方法、装置、电子设备及存储介质 |
CN112115683A (zh) * | 2020-09-29 | 2020-12-22 | 深圳市汉云科技有限公司 | 一种基于二维报表转换的数据统计方法、装置及终端设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110968667B (zh) | 一种基于文本状态特征的期刊文献表格抽取方法 | |
CN106156239B (zh) | 一种表格抽取方法和装置 | |
CN104573050A (zh) | 一种基于Canopy聚类和BIRCH层次聚类的连续属性离散化方法 | |
CN110019224A (zh) | 一种基于树搜索的交叉表头生成方法 | |
US20190333256A1 (en) | Methods and Systems For Simplified Graphical Depictions of Bipartite Graphs | |
US8146031B2 (en) | Method for generating and evaluating a table model for circuit simulation | |
CN104992022A (zh) | 一种基于模型的航空电子系统接口管理方法 | |
CN104951623A (zh) | 一种基于模型的航空电子系统接口管理系统 | |
CN110516221A (zh) | 提取pdf文档中图表数据的方法、设备和存储介质 | |
US11074276B2 (en) | Methods and systems for optimized visual summarization for sequences of temporal event data | |
CN114443855A (zh) | 一种基于图表示学习的知识图谱跨语言对齐方法 | |
CN104516870B (zh) | 一种译文检查方法及其系统 | |
CN106874469A (zh) | 一种新闻综述生成方法与系统 | |
CN105224630A (zh) | 基于语义网本体数据的集成方法 | |
CN109308311A (zh) | 一种多源异构数据融合系统 | |
CN114444274B (zh) | 一种从非结构网格中重构原结构网格的方法、介质及装置 | |
CN103999079A (zh) | 对准文档的字段的注解 | |
CN110929509B (zh) | 一种基于louvain社区发现算法的领域事件触发词聚类方法 | |
CN104636324B (zh) | 话题溯源方法和系统 | |
CN106815320A (zh) | 基于拓展三维直方图的调研大数据可视化建模方法及系统 | |
CN112131291B (zh) | 基于json数据的结构化解析方法、装置、设备及存储介质 | |
CN106557564A (zh) | 一种对象数据分析方法及装置 | |
CN106909645A (zh) | 一种可扩展定义的时空数据统一组织方法 | |
CN103064923B (zh) | 一种基于维度层次结构特征的olap查询间距离计算方法 | |
CN109241774B (zh) | 一种差分隐私空间分解方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190716 |
|
WD01 | Invention patent application deemed withdrawn after publication |