CN114416738B - 一种基于关系型数据库的数据聚合方法以及装置 - Google Patents
一种基于关系型数据库的数据聚合方法以及装置 Download PDFInfo
- Publication number
- CN114416738B CN114416738B CN202210015180.5A CN202210015180A CN114416738B CN 114416738 B CN114416738 B CN 114416738B CN 202210015180 A CN202210015180 A CN 202210015180A CN 114416738 B CN114416738 B CN 114416738B
- Authority
- CN
- China
- Prior art keywords
- dimension
- data base
- aggregation
- base table
- clickhouse
- 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
Images
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/221—Column-oriented storage; Management thereof
-
- 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
-
- 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/2433—Query languages
- G06F16/244—Grouping and aggregation
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于ClickHouse的数据聚合方法以及装置,该方法包括:获取到数据立方体的维度结构,其中,维度结构包括至少两个维度,每个维度包括至少一个层级,每个层级包括至少一个成员;基于将维度结构中的每个维度的每个层级映射到ClickHouse明细数据底表中的相应字段,根据映射关系创建ClickHouse明细数据底表;向ClickHouse明细数据底表插入数据,并且设置ClickHouse明细数据底表中每个成员的权重;将ClickHouse明细数据底表进行聚合计算,得到聚合结果。解决了现有多层级成员维度的聚合计算方案不支持设置权重以及聚合计算效率低的技术问题。
Description
技术领域
本发明涉及数据处理领域,尤其是涉及一种基于ClickHouse的数据聚合方法以及装置。
背景技术
近年,数字化驱动的业务转型是目前大多数企业的普遍需求。使用OLAP数据分析技术,可以帮助管理人员快速、准确地了解财务和运营结果是否达到预计目标,分析识别关键趋势,以此帮助企业快速调整,正确决策,获得更好的经营表现。
多层级成员维度上的聚合计算是OLAP数据分析产品的必备功能之一。现有的OLAP分析引擎产品有三大类:第一类是以Mondrian为代表的开源的基于关系型数据库的ROLAP产品,该类产品将OLAP数据模型中的多维立方体,维度,成员层级,成员等概念映射到关系型数据库中的星型模型的数据表上,计算时将OLAP分析场景转换成SQL在数据库上执行;第二类是以Kylin为代表的开源的基于Hadoop生态大数据平台的OLAP引擎,Kylin使用了预计算的机制,获取聚合数据前需要触发预计算;第三类是以IBM PA为代表的MOLAP产品,该产品是商业闭源产品。
现有基于关系型数据库实现的ROLAP引擎,例如Mondrian支持多层级成员维度,在功能上不支持设置维度成员的计算权重;基于Hadoop生态大数据平台的Kylin OLAP分析引擎同样没有提供设置维度成员权重的能力,Kylin平台使用的预计算机制需要计算所有可能的维度组合,会占用很高的内存和磁盘空间资源,此外,预计算机制导致查看到的聚合计算不是最新数据,聚合结果始终有延迟,不能满足实时性要求;基于原生多维度分析即MOLAP引擎的产品,例如IBM PA,虽然提供了多层级加权维度的OLAP聚合能力,但是该平台是商业闭源产品,并且聚合计算效率较低。
有鉴于此,提出本发明。
发明内容
本发明提供了一种基于ClickHouse的数据聚合方法以及装置,以解决现有多层级成员维度的聚合计算方案不支持设置权重以及聚合计算效率低的技术问题。
根据本发明的第一方面,提供了一种基于ClickHouse的数据聚合方法,该方法包括:获取到数据立方体的维度结构,其中,维度结构包括至少两个维度,每个维度包括至少一个层级,每个层级包括至少一个成员;基于将维度结构中的每个维度的每个层级映射到ClickHouse明细数据底表中的相应字段,根据映射关系创建ClickHouse明细数据底表;向ClickHouse明细数据底表插入数据,并且设置ClickHouse明细数据底表中每个成员的权重;将ClickHouse明细数据底表进行聚合计算,得到聚合结果。
进一步地,根据映射关系创建ClickHouse明细数据底表包括:基于映射关系按照预设顺序向二维表中添加与数据立方体中的每个维度的每个层级对应的字段以及度量值字段,其中,每个层级对应一个计算权重字段。
进一步地,将ClickHouse明细数据底表进行聚合计算包括:基于ClickHouse明细数据底表中第一类型的维度的成员计算得到ClickHouse明细数据底表中的基础聚合数据;基于基础聚合数据计算得到ClickHouse明细数据底表中第二类型的维度中第一层级成员的第一加权聚合值,并且将第一加权聚合值存入预先创建的ClickHouse聚合结果表中;基于第N加权聚合值计算得到ClickHouse明细数据底表中第二类型的维度中第N+1层级成员的第N+1加权聚合值,并将第N+1加权聚合值存入ClickHouse聚合结果表中,其中,N∈[1,M-1],M为ClickHouse明细数据底表中第二类型维度的层级数,N、M均为正整数。
进一步地,创建ClickHouse聚合结果表包括:按照预设顺序向二维表中添加第二类型的维度的各个层级对应的字段;向二维表中添加度量值字段,度量值字段用于存储各个聚合层级的加权聚合值。
进一步地,第一类型的维度至少包括如下一项或者多项:年维度、月维度、日维度、物料细分维度、物料大类维度以及科目维度;第二类型的维度为组织维度。
根据本发明的第二方面,提供了一种基于ClickHouse的数据聚合装置,该装置包括:获取单元,用于获取到数据立方体的维度结构,其中,维度结构包括至少两个维度,每个维度包括至少一个层级,每个层级包括至少一个成员;第一创建单元,用于基于将维度结构中的每个维度的每个层级映射到ClickHouse明细数据底表中的相应字段,根据映射关系创建ClickHouse明细数据底表;数据插入单元,用于向ClickHouse明细数据底表插入数据,并且设置ClickHouse明细数据底表中每个成员的权重;计算单元,将ClickHouse明细数据底表进行聚合计算,得到聚合结果。
进一步地,第一创建单元包括:添加模块,用于基于映射关系按照预设顺序向二维表中添加与数据立方体中的每个维度的每个层级对应的字段以及度量值字段,其中,每个层级对应一个计算权重字段。
进一步地,计算单元包括:第一计算模块,用于基于ClickHouse明细数据底表中第一类型的维度的成员计算得到明细数据底表中的基础聚合数据;第二计算模块,用于基于基础聚合数据计算得到ClickHouse明细数据底表中第二类型的维度中第一层级成员的第一加权聚合值,并且将第一加权聚合值存入预先创建的ClickHouse聚合结果表中;第三计算模块,用于基于第N加权聚合值计算得到ClickHouse明细数据底表中第二类型的维度中第N+1层级成员的第N+1加权聚合值,并将第N+1加权聚合值存入ClickHouse聚合结果表中,其中,N∈[1,M-1],M为ClickHouse明细数据底表中第二类型维度的层级数,N、M均为正整数。
进一步地,装置还包括:第二创建单元,用于按照预设顺序向二维表中添加第二类型的维度的各个层级对应的字段,并且向二维表中添加度量值字段,度量值字段用于存储各个聚合层级的加权聚合值。
进一步地,第一类型的维度至少包括如下一项或者多项:年维度、月维度、日维度、物料细分维度、物料大类维度以及科目维度;第二类型的维度为组织维度。
根据本发明的第三方面,提供了一种计算机设备,包括存储器和处理器,存储器上存储有计算机指令,计算机指令在由处理器执行时导致上述任一项方法被执行。
根据本发明的第四方面,提供了一种非暂时性计算机可读存储介质,其上存储有计算机程序,计算机程序在由处理器执行时导致上述任一项方法被执行。
本发明提供了一种基于ClickHouse的数据聚合方法以及装置,该方法包括:获取到数据立方体的维度结构,其中,维度结构包括至少两个维度,每个维度包括至少一个层级,每个层级包括至少一个成员;基于将维度结构中的每个维度的每个层级映射到ClickHouse明细数据底表中的相应字段,根据映射关系创建ClickHouse明细数据底表;向ClickHouse明细数据底表插入数据,并且设置ClickHouse明细数据底表中每个成员的权重;将ClickHouse明细数据底表进行聚合计算,得到聚合结果。解决了现有多层级成员维度的聚合计算方案不支持设置权重以及聚合计算效率低的技术问题。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的基于ClickHouse的数据聚合方法的流程图;
图2.1至2.8为本发明实施例的多维立方体OLAP Cube的每个维度的结构示意图;
图3为本发明实施例的ClickHouse明细数据底表的一个示例;
图4是本发明实施例的创建ClickHouse明细数据底表的流程示意图;
图5是本发明实施例的对应ClickHouse的聚合结果表的应用层的报表示例;
图6是本发明实施例的ClickHouse明细数据底表进行聚合计算的流程的示意图;
图7是本发明实施例的ClickHouse明细数据底表进行聚合计算的更为具体的示意图;
图8是本发明实施例的ClickHouse聚合结果表的示例;
图9是本发明实施例的创建ClickHouse聚合结果表的一种具体的流程示意图;
图10是本发明实施例的基于ClickHouse的数据聚合装置的示意图。
具体实施方式
为了使本发明的上述以及其他特征和优点更加清楚,下面结合附图进一步描述本发明。应当理解,本文给出的具体实施例是出于向本领域技术人员解释的目的,仅是示例性的,而非限制性的。
在以下描述中,阐述了许多具体细节以提供对本发明的透彻理解。然而,对于本领域普通技术人员来说,明显的是,不需要采用具体细节来实践本发明。在其他情况下,未详细描述众所周知的步骤或操作,以避免模糊本发明。
实施例一
本发明提供了一种基于ClickHouse的数据聚合方法,如图1所示,该方法包括:
步骤S11,获取到数据立方体的维度结构,其中,维度结构包括至少两个维度,每个维度至少包含一个层级,每个层级包括至少一个成员。
具体的,在本方案中,可以由服务器等具有数据处理功能的设备作为本方案的方法的执行主体,上述数据立方体可以为多维立方体OLAP Cube,本方案可以先获取到数据立方体并且确定里面的维度结构,即本方案可以确定多维立方体都包括哪些维度以及每个维度都包括哪些层级,每个层级都包含哪些成员。
下面以名称为example_cube的多维立方体OLAP Cube为例,结合图2.1,在example_cube中,共有7个维度。从上到下依次是year(年),month(月),day(日),org(组织),item_group(物料细分类别),item_type(物料大类),account(科目)维度。图2.2是年维度的结构,共分2层,从低到高分别是具体年份层和汇总层。图2.3是月维度的结构,共分2层,从低到高分别是具体月份层和汇总层。图2.4是日维度的结构,共分2层,从低到高分别是具体天数层和汇总层。图2.5是组织维度的结构,共分6层,从低到高分别是部门层,公司层,业务线层,业务部层,事业群层,全集团汇总层。可以根据业务规则设置各级成员权重。图2.6是物料细分类别维度的结构,共分3层,从低到高分别是物料细分类别层,物料类别层和汇总层。图2.7是物料大类维度的结构,共分2层,从低到高分别是物料大类层和汇总层。图2.8是科目维度的结构,共分1层,即科目类别层,包含收入和成本两个成员,权重分别是1和-1。即在本方案的数据立方体包括多个维度,每个维度可以包括多个层级,每个层级包括成员。
步骤S12,基于将维度结构中的每个维度的每个层级映射到ClickHouse明细数据底表中的相应字段,根据映射关系创建ClickHouse明细数据底表。
具体的,在本方案中,可以将每个维度按层级逐级展开到末级叶子成员后映射到ClickHouse明细数据底表中,需要说明的是,在映射的过程中,本方案可以考虑维度中各个层级的成员的权重,然后按相同的方法将OLAP Cube中的所有维度结构映射到同一张ClickHouse宽表(即ClickHouse明细数据底表)中。
这里需要说明的是,ClickHouse是一个列式数据库管理系统(DBMS)。在ClickHouse中,数据始终是按列存储的,包括矢量(向量或列块)执行的过程。只要有可能,操作都是基于矢量进行分派的,而不是单个的值,这被称为矢量化查询执行,它有利于降低实际的数据处理开销。
图3是ClickHouse明细数据底表的一个示例,图3的表名称是EX_DETAIL_DATA,在设计上属于宽表,共32个字段,在图3中,可以将图2中的OLAP示例Cube模型中的各个维度及其成员,以及成员属性映射到ClickHouse的二维表结构上。在OLAP Cube模型7个维度的基础上,增加了度量值字段来表示实际录入或导入数据值。该表记录所有明细数据,是多层级成员加权聚合计算的基础,在本文中也可以称该表为底表。
比如,组织维度的部门级成员映射到了ClickHouse的div_id,div_name,div_weight三个字段上,这三个字段分别表示部门ID,部门名称,部门计算权重。每一个维度的多个层级按层级从高到低的顺序依次映射到ClickHouse的对应字段上,例如组织维度按层级从高到低的顺序将事业群级,业务部级,业务线级,公司级,部门级多个层级依次映射到ClickHouse的bg_,kbu_,bu_,org_,div_字段上。每一个维度除去顶级的汇总层之外的每层成员都有对应的计算权重字段,例如组织维度有5个字段名称带有weight后缀的字段,分别表示5层成员的计算权重值。需要说明的是,在ClickHouse明细数据底表中,度量值作为最后一个字段存储明细数据的度量值。
步骤S13,向ClickHouse明细数据底表插入数据,并且设置ClickHouse明细数据底表中每个成员的权重。
具体的,本方案在创建好ClickHouse明细数据底表之后,可以将向ClickHouse明细数据底表插入数据,并且在插入数据的时候设置ClickHouse明细数据底表中每个成员的权重。
步骤S14,将ClickHouse明细数据底表进行聚合计算,得到聚合结果。
具体的,在本方案中,可以将创建之后的ClickHouse明细数据底表进行聚合计算,以得到聚合结果,本方案可以将汇总报表的业务分析场景转换成SQL语句,即第一步骤:先计算基础聚合数据,第二步骤:基于第一阶段计算出的基础聚合数据来计算更高层的聚合数据,直到计算出汇总报表的最高级别数据,整个流程的计算量主要分布在第一阶段,计算量逐层递减,分层次分步骤的计算流程提高了计算效率。
需要说明的是,在OLAP分析有些场景中要求维度成员必须支持内置的计算权重属性,使用本发明提出的建模方法和计算流程,可以支持多层级成员维度的加权聚合计算,从而能够满足这些场景的需求。因此,本方案解决了现有多层级成员维度的聚合计算方案不支持设置权重以及聚合计算效率低的技术问题。
可选的,步骤S12根据映射关系创建ClickHouse明细数据底表的步骤可以包括:
基于映射关系按照预设顺序向二维表中添加与数据立方体中的每个维度的每个层级对应的字段以及度量值字段,其中,每个层级对应一个计算权重字段。
具体的,结合图4所示,在本方案中,可以通过如下步骤实现创建ClickHouse明细数据底表:
步骤301,年维度建模,即添加年维度对应字段,包括计算权重属性字段。
步骤302,月维度建模,即添加月维度对应字段,包括计算权重属性字段。
步骤303,日维度建模,即添加日维度对应字段,包括计算权重属性字段。
步骤304,组织维度建模,即添加组织维度对应字段,该步骤分解为5个子步骤,按组织维度层级从高到低的次序依次添加各层级对应字段。该5个子步骤可以为:步骤304.1,事业群层级建模,即添加事业群层级对应字段,包括计算权重属性字段;步骤304.2,业务部层级建模,即添加业务部层级对应字段,包括计算权重属性字段;步骤304.3,业务线层级建模,即添加业务线层级对应字段,包括计算权重属性字段;步骤304.4,公司层级建模,即添加公司层级对应字段,包括计算权重属性字段;步骤304.5,部门层级建模,即添加部门层级对应字段,包括计算权重属性字段。
步骤305,物料细分类别维度建模,即添加物料细分类别维度对应字段,该步骤分解为以下2个子步骤:步骤305.1,物料细分类别层级建模,即添加物料细分类别层级对应字段,包括计算权重属性字段;步骤305.2,物料类别层级建模,即添加物料类别层级对应字段,包括计算权重属性字段。
步骤306,物料大类维度建模,即添加物料大类维度对应字段。
步骤307,科目维度建模,即添加科目维度对应字段,包括计算权重属性字段。
步骤308,添加度量值字段。
需要说明的是,本方案在OLAP Cube模型7个维度的基础上,增加了度量值字段来表示实际录入或导入数据值。
还需要说明的是,图4中的各个步骤可以对应于图3中标识的建模步骤。
图5是本方案示出的对应ClickHouse的聚合结果表的一个应用层的报表的示例。在该应用层的报表示例中,表头的年、月、日、物料细分、物料大类、科目维度均选择all成员,表示计算这些维度所有最低级别成员的聚合值;组织维度分层聚合,“组织”列显示组织维度各个层级的成员,符号--表示该成员的更低级别的子成员已经展开并在报表中可见,符号+表示该成员的更低级别的成员已经收敛,成员名的缩进表示该成员的层级,相同缩进的成员名属于同一级别的成员。例如BU0710101费用值等于Q93,S03,S06,S07,S12行的费用值之和(假设各级别组织成员的计算权重为1)。
如图6所示,步骤S14,将ClickHouse明细数据底表进行聚合计算,得到聚合结果的步骤包括:
步骤S141,基于ClickHouse明细数据底表中第一类型的维度的成员计算得到ClickHouse明细数据底表中的基础聚合数据。
具体的,在上述步骤S141,可以将计算得到的聚合结果存入ClickHouse聚合结果表中,作为基础聚合数据。
步骤S142,基于基础聚合数据计算得到ClickHouse明细数据底表中第二类型的维度中第一层级成员的第一加权聚合值,并且将第一加权聚合值存入预先创建的ClickHouse聚合结果表中。
步骤S143,基于第N加权聚合值计算得到ClickHouse明细数据底表中第二类型的维度中第N+1层级成员的第N+1加权聚合值,并将第N+1加权聚合值存入ClickHouse聚合结果表中,其中,N∈[1,M-1],M为ClickHouse明细数据底表中第二类型维度的层级数,N、M均为正整数,通过上述步骤可以将第1层的加权聚合值以及第M层的加权聚合值都计算出来,然后分别存储至上述ClickHouse聚合结果表中。
需要说明的是,上述第一类型的维度为ClickHouse明细数据底表中的除了第二类型维度之外的所有维度,本方案基于上述第一类型的维度的成员计算得到ClickHouse明细数据底表中的基础聚合数据,然后根据基础聚合数据计算得到ClickHouse明细数据底表中第二类型维度的各个层级的加权聚合值。
具体的,上述步骤S 141中的第一类型的维度为除组织维度外的其他成员,比如年维度、月维度、日维度、物料细分维度、物料大类维度以及科目维度的成员。通过上述步骤S141至步骤S143,先计算基础聚合数据,然后基于基础聚合数据来计算更高层级的聚合数据,直到计算出汇总报表的最高层级加权聚合值,并且把每次计算每个层级的聚合数据都存入预先创建的ClickHouse聚合结果表中,需要说明的是,整个流程的计算量主要分布在计算基础聚合数据的阶段,计算量逐层递减,此种分层次分步骤的计算流程提高了计算效率。
下面结合图7,介绍上述步骤S141至步骤S143的一种更为具体的实施例:
步骤501,表示从明细数据底表,聚合计算除组织外的其他维度成员的加权聚合值,以生成组织维度末级的聚合数据。该步骤中所有权重字段都参与计算,只有该步骤的计算需要涉及到权重。该步骤计算量最大,计算时间最长,占整个流程计算时间的95%以上。然后将聚合结果存入到聚合结果表中,作为基础聚合数据。
步骤502,表示在步骤501的计算结果基础上,计算组织维度末级公司级成员的加权聚合值,并且将组织维度末级公司级成员的加权聚合值存入聚合结果表中。
步骤503,表示在步骤502的计算结果基础上,计算组织维度业务线级成员的加权聚合值,并且将组织维度业务线级成员的加权聚合值存入聚合结果表中。该步骤的计算数据源使用步骤502的计算结果,减少参与计算的数据量,提高计算速度。后面步骤的过滤原理相同,都是将前一步骤的计算结果过滤出来作为下一步骤进行聚合计算的数据源。
步骤504,表示在步骤503的计算结果基础上,计算组织维度业务部级成员的加权聚合值,并且将组织维度业务部级成员的加权聚合值存入聚合结果表中。
步骤505,表示在步骤504的计算结果基础上,计算组织维度事业群级成员的加权聚合值,并且将组织维度事业群级成员的加权聚合值存入聚合结果表中。
步骤506,表示在步骤505的计算结果基础上,计算组织维度全集团汇总的加权聚合值,并且将组织维度全集团汇总的加权聚合值存入聚合结果表。
需要说明的是,图7右边部分的三角形表示各个步骤的计算量,计算量呈现逐级递减的特点。因为组织维度的各个层级之间是逐级汇总的关系,所以各个步骤的计算都是基于前一步骤的计算结果。计算逻辑复杂度和计算量逐级降低。
图7的聚合计算结果包含了组织维度各个层级的聚合计算结果值,对应于图5中的组织维度各个层级的汇总报表结果值。
可选的,创建ClickHouse聚合结果表包括:
按照预设顺序向二维表中添加第二类型的维度的各个层级对应的字段;向二维表中添加度量值字段,度量值字段用于存储各个聚合层级的加权聚合值。
具体的,图8为本方案示出的ClickHouse聚合结果表的示例,该表名称是EX_REPORT_DATA,该表结构与分级汇总报表格式对应,因为除组织维度之外的其他6个维度对应的成员值取顶层汇总成员值,成员值固定,所以这6个维度的对应字段不出现在该表中。
下面结合图9,介绍上述创建ClickHouse聚合结果表的一种具体的实施例:
步骤401,组织维度建模,即添加组织维度的各级成员的对应字段出现在该表中,添加的顺序同步骤304。
步骤402,添加聚合值字段,即添加度量值作为最后一个字段存储聚合计算的结果值。
在本申请中,第一类型的维度至少包括如下一项或者多项:年维度、月维度、日维度、物料细分维度、物料大类维度以及科目维度;第二类型的维度为组织维度。
综上,本申请提出了一种基于ClickHouse宽表模型的OLAP Cube建模方法和聚合计算流程,该模型支持多层级成员维度的表示,具体是将一个维度的多个层级的成员按层级顺序依次映射到ClickHouse宽表的多个字段上,一个成员层级对应一组字段。在本申请中,支持维度上各个层级的成员设置独立的计算权重属性,具体是每个维度的每个成员层级对应一个计算权重字段。关于上述聚合计算流程为分层次分步骤完成聚合计算,即先计算报表中的基础聚合数据,然后在此基础上逐级计算高层的聚合数据。在第一步即完成整个计算流程的绝大部分计算量,后续步骤依次在前一步骤基础上计算高一层级的聚合值,计算逻辑复杂度和计算量逐级降低。本申请结合ClickHouse业界领先的高效聚合性能,缩短了OLAP多层级加权聚合计算的周期,增强了计算结果的时效性。本申请充分利用了多层级成员维度逐级汇总的内在特性,减少了计算量。
本申请的方案支持多层级成员维度上设置成员的计算权重属性,该方式可以扩展支持维度成员更多的属性,该扩展新属性可以通过如下流程实现:首先,分析业务需求识别出新属性,其次,在ClickHouse建模时添加对应的属性字段,然后,聚合计算时根据业务需求生成相应的计算基础聚合数据的SQL语句,该SQL语句中包含了基于属性字段的过滤条件,最后,在计算基础聚合数据的基础上计算出更高层级的聚合数据。
实施例二
如图10所示,本申请还提供了一种基于ClickHouse的数据聚合装置,该装置可以执行上述实施例一的方法,该装置包括:获取单元100,用于获取到数据立方体的维度结构,其中,维度结构包括至少两个维度,每个维度包括至少一个层级,每个层级包括至少一个成员;第一创建单元110,用于基于将维度结构中的每个维度的每个层级映射到ClickHouse明细数据底表中的相应字段,根据映射关系创建ClickHouse明细数据底表;数据插入单元120,用于向ClickHouse明细数据底表插入数据,并且设置ClickHouse明细数据底表中每个成员的权重;计算单元130,将ClickHouse明细数据底表进行聚合计算,得到聚合结果。
具体的,在本方案中,可以将ClickHouse明细数据底表进行聚合计算,以得到聚合结果,本方案可以将汇总报表的业务分析场景转换成SQL语句:即第一步骤先计算基础聚合数据,第二步骤基于第一阶段计算出的基础聚合数据来计算更高层的聚合数据,直到计算出汇总报表的最高级别数据,整个流程的计算量主要分布在第一阶段,计算量逐层递减,分层次分步骤的计算流程提高了计算效率。
需要说明的是,在OLAP分析有些场景中要求维度成员必须支持内置的计算权重属性,使用本发明提出的建模方法和计算流程,可以支持多层级成员维度的加权聚合计算,从而能够满足这些场景的需求。因此,本方案解决了现有多层级成员维度的聚合计算方案不支持设置权重以及聚合计算效率低的技术问题。
上述第一创建单元包括:添加模块,用于基于映射关系按照预设顺序向二维表中添加与数据立方体中的每个维度的每个层级对应的字段以及度量值字段,其中,每个层级对应一个计算权重字段。
上述计算单元包括:第一计算模块,用于基于ClickHouse明细数据底表中第一类型的维度的成员计算得到明细数据底表中的基础聚合数据;第二计算模块,用于基于基础聚合数据计算得到ClickHouse明细数据底表中第二类型的维度中第一层级成员的第一加权聚合值,并且将第一加权聚合值存入预先创建的ClickHouse聚合结果表中;第三计算模块,用于基于第N加权聚合值计算得到ClickHouse明细数据底表中第二类型的维度中第N+1层级成员的第N+1加权聚合值,并将第N+1加权聚合值存入ClickHouse聚合结果表中,其中,N∈[1,M-1],M为ClickHouse明细数据底表中第二类型维度的层级数,N、M均为正整数。
上述装置还包括:第二创建单元,用于按照预设顺序向二维表中添加第二类型的维度的各个层级对应的字段,并且向二维表中添加度量值字段,度量值字段用于存储各个聚合层级的加权聚合值。
第一类型的维度至少包括如下一项或者多项:年维度、月维度、日维度、物料细分维度、物料大类维度以及科目维度;第二类型的维度为组织维度。
应理解,本文中前述关于本发明的方法所描述的具体特征、操作和细节也可类似地应用于本发明的装置和系统,或者,反之亦然。另外,上文描述的本发明的方法的每个步骤可由本发明的装置或系统的相应部件或单元执行。
应理解,本发明的装置的各个模块/单元可全部或部分地通过软件、硬件、固件或其组合来实现。所述各模块/单元各自可以硬件或固件形式内嵌于计算机设备的处理器中或独立于所述处理器,也可以软件形式存储于计算机设备的存储器中以供处理器调用来执行所述各模块/单元的操作。所述各模块/单元各自可以实现为独立的部件或模块,或者两个或更多个模块/单元可实现为单个部件或模块。
在一个实施例中,提供了一种计算机设备,其包括存储器和处理器,所述存储器上存储有可由处理器执行的计算机指令,所述计算机指令在由所述处理器执行时指示所述处理器执行本发明的实施例一中的方法的各步骤。该计算机设备可以广义地为服务器、终端,或任何其他具有必要的计算和/或处理能力的电子设备。在一个实施例中,该计算机设备可包括通过系统总线连接的处理器、存储器、网络接口、通信接口等。该计算机设备的处理器可用于提供必要的计算、处理和/或控制能力。该计算机设备的存储器可包括非易失性存储介质和内存储器。该非易失性存储介质中或上可存储有操作系统、计算机程序等。该内存储器可为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口和通信接口可用于与外部的设备通过网络连接和通信。该计算机程序被处理器执行时执行本发明的方法的步骤。
本发明可以实现为一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在由处理器执行时导致本发明实施例一的方法的步骤被执行。在一个实施例中,所述计算机程序被分布在网络耦合的多个计算机设备或处理器上,以使得所述计算机程序由一个或多个计算机设备或处理器以分布式方式存储、访问和执行。单个方法步骤/操作,或者两个或更多个方法步骤/操作,可以由单个计算机设备或处理器或由两个或更多个计算机设备或处理器执行。一个或多个方法步骤/操作可以由一个或多个计算机设备或处理器执行,并且一个或多个其他方法步骤/操作可以由一个或多个其他计算机设备或处理器执行。一个或多个计算机设备或处理器可以执行单个方法步骤/操作,或执行两个或更多个方法步骤/操作。
本领域普通技术人员可以理解,本发明的方法步骤可以通过计算机程序来指示相关的硬件如计算机设备或处理器完成,所述的计算机程序可存储于非暂时性计算机可读存储介质中,该计算机程序被执行时导致本发明的步骤被执行。根据情况,本文中对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。非易失性存储器的示例包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘等。易失性存储器的示例包括随机存取存储器(RAM)、外部高速缓冲存储器等。
以上描述的各技术特征可以任意地组合。尽管未对这些技术特征的所有可能组合进行描述,但这些技术特征的任何组合都应当被认为由本说明书涵盖,只要这样的组合不存在矛盾。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (12)
1.一种基于ClickHouse的数据聚合方法,其特征在于,所述方法包括:
获取到数据立方体的维度结构,其中,所述维度结构包括至少两个维度,每个维度包括至少一个层级,每个层级包括至少一个成员;
基于将所述维度结构中的每个维度的每个层级映射到ClickHouse明细数据底表中的相应字段,根据映射关系创建ClickHouse明细数据底表;
向所述ClickHouse明细数据底表插入数据,并且设置所述ClickHouse明细数据底表中每个成员的权重;
将所述ClickHouse明细数据底表进行聚合计算,得到聚合结果。
2.根据权利要求1所述的方法,其特征在于,根据映射关系创建ClickHouse明细数据底表包括:
基于映射关系按照预设顺序向二维表中添加与所述数据立方体中的每个维度的每个层级对应的字段以及度量值字段,其中,所述每个层级对应一个计算权重字段。
3.根据权利要求1所述的方法,其特征在于,将所述ClickHouse明细数据底表进行聚合计算包括:
基于所述ClickHouse明细数据底表中第一类型的维度的成员计算得到所述ClickHouse明细数据底表中的基础聚合数据;
基于所述基础聚合数据计算得到所述ClickHouse明细数据底表中第二类型的维度中第一层级成员的第一加权聚合值,并且将所述第一加权聚合值存入预先创建的ClickHouse聚合结果表中;
基于第N加权聚合值计算得到所述ClickHouse明细数据底表中第二类型的维度中第N+1层级成员的第N+1加权聚合值,并将第N+1加权聚合值存入所述ClickHouse聚合结果表中,其中,N∈[1,M-1],M为所述ClickHouse明细数据底表中第二类型维度的层级数,N、M均为正整数。
4.根据权利要求3所述的方法,其特征在于,创建所述ClickHouse聚合结果表包括:
按照预设顺序向二维表中添加所述第二类型的维度的各个层级对应的字段;
向所述二维表中添加度量值字段,所述度量值字段用于存储各个聚合层级的加权聚合值。
5.根据权利要求3所述的方法,其特征在于,
所述第一类型的维度至少包括如下一项或者多项:年维度、月维度、日维度、物料细分维度、物料大类维度以及科目维度;
所述第二类型的维度为组织维度。
6.一种基于ClickHouse的数据聚合装置,其特征在于,所述装置包括:
获取单元,用于获取到数据立方体的维度结构,其中,所述维度结构包括至少两个维度,每个维度包括至少一个层级,每个层级包括至少一个成员;
第一创建单元,用于基于将所述维度结构中的每个维度的每个层级映射到ClickHouse明细数据底表中的相应字段,根据映射关系创建ClickHouse明细数据底表;
数据插入单元,用于向所述ClickHouse明细数据底表插入数据,并且设置所述ClickHouse明细数据底表中每个成员的权重;
计算单元,将所述ClickHouse明细数据底表进行聚合计算,得到聚合结果。
7.根据权利要求6所述的装置,其特征在于,所述第一创建单元包括:
添加模块,用于基于映射关系按照预设顺序向二维表中添加与所述数据立方体中的每个维度的每个层级对应的字段以及度量值字段,其中,所述每个层级对应一个计算权重字段。
8.根据权利要求6所述的装置,其特征在于,所述计算单元包括:
第一计算模块,用于基于所述ClickHouse明细数据底表中第一类型的维度的成员计算得到所述明细数据底表中的基础聚合数据;
第二计算模块,用于基于所述基础聚合数据计算得到所述ClickHouse明细数据底表中第二类型的维度中第一层级成员的第一加权聚合值,并且将所述第一加权聚合值存入预先创建的ClickHouse聚合结果表中;
第三计算模块,用于基于第N加权聚合值计算得到所述ClickHouse明细数据底表中第二类型的维度中第N+1层级成员的第N+1加权聚合值,并将第N+1加权聚合值存入所述ClickHouse聚合结果表中,其中,N∈[1,M-1],M为所述ClickHouse明细数据底表中第二类型维度的层级数,N、M均为正整数。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二创建单元,用于按照预设顺序向二维表中添加所述第二类型的维度的各个层级对应的字段,并且向所述二维表中添加度量值字段,所述度量值字段用于存储各个聚合层级的加权聚合值。
10.根据权利要求8所述的装置,其特征在于,
所述第一类型的维度至少包括如下一项或者多项:年维度、月维度、日维度、物料细分维度、物料大类维度以及科目维度;
所述第二类型的维度为组织维度。
11.一种计算机设备,包括存储器和处理器,所述存储器上存储有计算机指令,所述计算机指令在由所述处理器执行时导致权利要求1-5中任一项方法被执行。
12.一种非暂时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序在由处理器执行时导致权利要求1至5中任一项方法被执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210015180.5A CN114416738B (zh) | 2022-01-07 | 2022-01-07 | 一种基于关系型数据库的数据聚合方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210015180.5A CN114416738B (zh) | 2022-01-07 | 2022-01-07 | 一种基于关系型数据库的数据聚合方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114416738A CN114416738A (zh) | 2022-04-29 |
CN114416738B true CN114416738B (zh) | 2022-09-16 |
Family
ID=81270499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210015180.5A Active CN114416738B (zh) | 2022-01-07 | 2022-01-07 | 一种基于关系型数据库的数据聚合方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416738B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853818A (zh) * | 2014-02-12 | 2014-06-11 | 博易智软(北京)技术股份有限公司 | 多维数据的处理方法和装置 |
CN111107128A (zh) * | 2018-10-29 | 2020-05-05 | Sap门户以色列有限公司 | 基于层次树的数据聚合 |
CN111260452A (zh) * | 2019-12-25 | 2020-06-09 | 航天信息股份有限公司 | 一种税务大数据模型的构建方法及系统 |
CN112163048A (zh) * | 2020-09-23 | 2021-01-01 | 常州微亿智造科技有限公司 | 基于ClickHouse实现OLAP分析的方法、装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6829621B2 (en) * | 2000-10-06 | 2004-12-07 | International Business Machines Corporation | Automatic determination of OLAP cube dimensions |
US7716167B2 (en) * | 2002-12-18 | 2010-05-11 | International Business Machines Corporation | System and method for automatically building an OLAP model in a relational database |
-
2022
- 2022-01-07 CN CN202210015180.5A patent/CN114416738B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103853818A (zh) * | 2014-02-12 | 2014-06-11 | 博易智软(北京)技术股份有限公司 | 多维数据的处理方法和装置 |
CN111107128A (zh) * | 2018-10-29 | 2020-05-05 | Sap门户以色列有限公司 | 基于层次树的数据聚合 |
CN111260452A (zh) * | 2019-12-25 | 2020-06-09 | 航天信息股份有限公司 | 一种税务大数据模型的构建方法及系统 |
CN112163048A (zh) * | 2020-09-23 | 2021-01-01 | 常州微亿智造科技有限公司 | 基于ClickHouse实现OLAP分析的方法、装置 |
Non-Patent Citations (1)
Title |
---|
面向大规模机群的可扩展OLAP查询技术;王会举等;《计算机学报》;20140925;正文第45-57页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114416738A (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230084389A1 (en) | System and method for providing bottom-up aggregation in a multidimensional database environment | |
US20210240735A1 (en) | System and method for supporting large queries in a multidimensional database environment | |
US11030247B2 (en) | Layered graph data structure | |
CN112269792B (zh) | 数据查询方法、装置、设备及计算机可读存储介质 | |
US20140279839A1 (en) | Integration of transactional and analytical capabilities of a database management system | |
US10909160B2 (en) | Digital duplicate | |
CN110737729A (zh) | 基于知识图谱理念和技术的工程图谱数据信息管理方法 | |
CN113157943A (zh) | 面向大规模金融知识图谱的分布式存储及可视化查询处理方法 | |
JP2004030221A (ja) | 変更対象テーブル自動検出方法 | |
CN110720097A (zh) | 图数据库中元组和边的功能性等价 | |
CN113704248B (zh) | 一种基于外置索引的区块链查询优化方法 | |
Glava et al. | Information Systems Reengineering Approach Based on the Model of Information Systems Domains | |
CN113934713A (zh) | 一种订单数据索引方法、系统、计算机设备以及存储介质 | |
CN114416738B (zh) | 一种基于关系型数据库的数据聚合方法以及装置 | |
Scriney et al. | Efficient cube construction for smart city data | |
CN110851515A (zh) | 一种基于Spark分布式环境下的大数据ETL模型执行方法及介质 | |
CN108241622B (zh) | 一种查询脚本的生成方法及装置 | |
Lian et al. | Sql or nosql? which is the best choice for storing big spatio-temporal climate data? | |
CN114138735A (zh) | 一种Janusgraph数据快速批量装载的方法 | |
CN113886505A (zh) | 一种基于搜索引擎和关系型数据库实现动态建模的管理系统 | |
US20080270479A1 (en) | System and Method for Minimization of Calculation Retrieval in a Multidimensional Database | |
CN112667859A (zh) | 基于内存的数据处理方法及装置 | |
CN111399838A (zh) | 一种基于SparkSQL和物化视图的数据建模方法及装置 | |
CN111723129A (zh) | 报表生成方法、报表生成装置和电子设备 | |
CN111339245A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |