CN109241049A - 一种olap架构 - Google Patents
一种olap架构 Download PDFInfo
- Publication number
- CN109241049A CN109241049A CN201810723676.1A CN201810723676A CN109241049A CN 109241049 A CN109241049 A CN 109241049A CN 201810723676 A CN201810723676 A CN 201810723676A CN 109241049 A CN109241049 A CN 109241049A
- Authority
- CN
- China
- Prior art keywords
- olap
- measurement
- parsing
- data
- inquiry
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种OLAP架构。它包括Rest API层、OLAP引擎层、支撑层和存储层,所述的Rest API层内包含了查询对象构建内容,所述的OLAP引擎层内包含了查询队列、上下文资源、过滤器解析、字段解析、表关联解析、SQL组装器、衍生度量解析、排序、格式化、表格处理和结果集处理内容,所述的支撑层内包含了数据源管理、元数据管理、缓存管理和表达式内容,所述的存储层内包含了外部数据源、元数据存储和缓存存储内容。本发明的有益效果是:在一个主题内可以自由的设置维度、度量,快速的生成各种类型的分析报表,每个地方都不需要自己去开发,大大降低了工作量,提高了工作效率。
Description
技术领域
本发明涉及数据处理相关技术领域,尤其是指一种OLAP架构。
背景技术
OLAP是数据分析引擎,是BI的数据分析层,BI是数据解决方案中不可缺少的一环,为了快速解决业务人员数据分析的需求,开发了OLAP引擎。目前随着大数据时代的到来,数据分析的需求越来越强烈和多变,OLAP引擎是为了帮助业务人员解决大部分的数据分析需求,而不需要开发人员额外定制开发。基于同一份数据,可能需要从各种维度去分析数据,可以只是简单的增加或调整了某个维度,可能就需要重新设计报表。在数据分析领域,在查看报表的时候都会用到穿透和下钻的功能,如果每个地方都自己去开发,工作量庞大。目前数据分析领域的发展,很多概念也越来越清晰,如主题概念,下钻穿透的概念,各种平台也都支持了SQL的方式查询数据,基于行业的成熟,也有条件更深入的研究和开发OLAP系统。
发明内容
本发明是为了克服现有技术中存在上述的不足,提供了一种工作量小且生成速度快的OLAP架构。
为了实现上述目的,本发明采用以下技术方案:
一种OLAP架构,包括Rest API层、OLAP引擎层、支撑层和存储层,所述的Rest API层内包含了查询对象构建内容,所述的OLAP引擎层内包含了查询队列、上下文资源、过滤器解析、字段解析、表关联解析、SQL组装器、衍生度量解析、排序、格式化、表格处理和结果集处理内容,所述的支撑层内包含了数据源管理、元数据管理、缓存管理和表达式内容,所述的存储层内包含了外部数据源、元数据存储和缓存存储内容。
OLAP架构是基于主题的,在一个主题内可以自由的设置维度、度量,快速的生成各种类型的分析报表。OLAP引擎的设计使得每个地方都不需要自己去开发,大大降低了工作量,提高了工作效率。
作为优选,所述的OLAP引擎层处理一次查询会处理复杂的分析逻辑,需要先查询一次原生度量;维度按度量排序也需要先按度量过滤查询一组维度值,在进行主数据查询之前,需要进行子查询,子查询和当前查询都有一个查询上下文,查询上下文会保存当前的查询对象,已经当前查询需要用到的中间变量,为了区分不同的查询上下文,所以引入了查询队列。
作为优选,所述的OLAP引擎层中字段解析指的是维度度量解析,除了原生的维度度量外,还支持表达式度量、分组维度、表达式字段;表格处理主要说的是有表格特性的处理,主要是小计合计功能;使用到表达式的主要是表达式字段和表达式度量,引入了antlr来支持表达式的定义、校验和解析,表达式支持SQL表达式,用antlr来隔离不同数据源下的差异,同时可以使用antlr来定义和拓展自定义函数;结果集处理是讲OLAP引擎分析后的数据转换到前端结构的过程,前端为了方便数据的渲染和处理需要一套适合前端的数据结构,能够在后端处理好给前端,同时能够直接转换成json字符串,便于缓存存储。
作为优选,所述的Rest API层是基于查询对象的,查询对象包含主题的定义信息,前端选择的维度、度量、过滤器、衍生度量,还包含表格的全局配置参数,OLAP的缓存key也是基于查询对象,查询对象会将包含的各种信息拼装起来组成一个全局唯一的字符串作为缓存key,需要做md5加密。
作为优选,所述的支撑层中由于OLAP引擎比较灵活,需要动态生成子查询,也就是动态生成表,这就要求元数据动态的修改,拓展了元数据的查询,基于数据库的查询方式实现了基于内存的查询方式,在使用的时候,不需要知道底层具体的方式,只需要面向接口开发即可,同时支持db和内存模式的快速切换。
作为优选,所述的存储层是支持redis和mongo,redis主要是内存存储,速度快,对内存要求高,放实时数据和热点数据,失效时间短;而mogno持久化能力强,放缓存结果,做预查询缓存,称之为二级缓存。
本发明的有益效果是:在一个主题内可以自由的设置维度、度量,快速的生成各种类型的分析报表,每个地方都不需要自己去开发,大大降低了工作量,提高了工作效率。
附图说明
图1是本发明的结构示意图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的描述。
如图1所述的实施例中,一种OLAP架构,包括Rest API层、OLAP引擎层、支撑层和存储层,Rest API层内包含了查询对象构建内容,OLAP引擎层内包含了查询队列、上下文资源、过滤器解析、字段解析、表关联解析、SQL组装器、衍生度量解析、排序、格式化、表格处理和结果集处理内容,支撑层内包含了数据源管理、元数据管理、缓存管理和表达式内容,存储层内包含了外部数据源、元数据存储和缓存存储内容。
OLAP引擎层处理一次查询会处理复杂的分析逻辑,需要先查询一次原生度量;维度按度量排序也需要先按度量过滤查询一组维度值,在进行主数据查询之前,需要进行子查询,子查询和当前查询都有一个查询上下文,查询上下文会保存当前的查询对象,已经当前查询需要用到的中间变量,为了区分不同的查询上下文,所以引入了查询队列。OLAP引擎层中字段解析指的是维度度量解析,除了原生的维度度量外,还支持表达式度量、分组维度、表达式字段;表格处理主要说的是有表格特性的处理,主要是小计合计功能;使用到表达式的主要是表达式字段和表达式度量,引入了antlr来支持表达式的定义、校验和解析,表达式支持SQL表达式,用antlr来隔离不同数据源下的差异,同时可以使用antlr来定义和拓展自定义函数;结果集处理是讲OLAP引擎分析后的数据转换到前端结构的过程,前端为了方便数据的渲染和处理需要一套适合前端的数据结构,能够在后端处理好给前端,同时能够直接转换成json字符串,便于缓存存储。
Rest API层是基于查询对象的,查询对象包含主题的定义信息,前端选择的维度、度量、过滤器、衍生度量,还包含表格的全局配置参数,OLAP的缓存key也是基于查询对象,查询对象会将包含的各种信息拼装起来组成一个全局唯一的字符串作为缓存key,需要做md5加密。
支撑层中由于OLAP引擎比较灵活,需要动态生成子查询,也就是动态生成表,这就要求元数据动态的修改,拓展了元数据的查询,基于数据库的查询方式实现了基于内存的查询方式,在使用的时候,不需要知道底层具体的方式,只需要面向接口开发即可,同时支持db和内存模式的快速切换。
存储层是支持redis和mongo,redis主要是内存存储,速度快,对内存要求高,放实时数据和热点数据,失效时间短;而mogno持久化能力强,放缓存结果,做预查询缓存,称之为二级缓存。
OLAP架构是基于主题的,在一个主题内可以自由的设置维度、度量,快速的生成各种类型的分析报表。OLAP引擎的设计使得每个地方都不需要自己去开发,大大降低了工作量,提高了工作效率。
OLAP引擎是基于SQL的的数据分析引擎,拓展了表达式字段,分组维度,表达式度量来拓展SELECT的生成逻辑。
在模型定义方面支持星型结构和雪花结构,支持LEFT JOIN、INNER JOIN、CROSSJOIN、FULL JOIN等表连接方式,关联条件拓展了表达式关联方式。
为了更全面的支持SQL能力,拓展了自定义函数FIXED来灵活的生成各种子查询,FIXED函数需要设置分组维度和度量信息,生成一个子查询,子查询的过滤条件可以在报表设计的时候灵活的设置,生成的子查询要和主查询关联,关联的条件即是设置的维度信息。
在SQL之上拓展了很多的概念来丰富数据分析能力,如趋势度量、累计度量、百分比度量、排序度量等衍生度量。
在表格计算方面,支持表格的小计合计。小计合计可以基于查询后的结果做MAX、MIN、AVG、SUM等聚合方式计算,也可以基于原度量字段的SQL表达式去做小计合计。
在缓存优化方面,在数据缓存方面提出了一级缓存和二级缓存的概念,OLAP实时查询后的结果会放到一级缓存中,时间一般设置在半个小时至一个小时左右,支持对报表和仪表盘做预查询,预查询的数据量会比较大,放到二级缓存中,实时查询时会先检索二级缓存。
在大数据量的情况下,有计算中心,计算中心有ETL和资源调度等能力,针对大数据量且多表关联的场景可以使用数据中心的能力将数据预处理成宽表,OLAP引擎会自动使用宽表查询。
查询引擎除了支持MYSQL、ORACLE、GREENPLUM、HP VERTICA等常规的数据库外,还支持IMPALA、HIVE等大数据计算引擎,在超大规模数据量下,如果想做数据预处理通常是比较难的事情,而KYLIN给提供了很好的解决方案,可以对接KYLIN,将KYLIN中的主题同步到OLAP中来直接使用。
在表格整合和分析方向可以将不同主题不同数据源下的报表整合到一起,不仅支持常规表关联方式,还支持UNION ALL的方式,在整合之后可以使用类似于excel的函数来分析数据。
在数据权限方面实现了基于字段的数据权限,分组织层级和用户层级,先在组织下面设置字段有哪些可选择的值,然后在组织的基础上设置用户有哪些可选的值,这样同一个报表不同用户查询的结果可能是不一样的。
在表路由方面,如果数据库底层没有实现表分区的功能,可以在OLAP中根据权限字段去设置分区信息,OLAP引擎会自动使用分区表。
在元数据存储这块,可以从db中读取元数据,也可以从json中读取元数据,同时为了支持复杂的功能,元数据可以在查询的过程中,在内存中动态修改。
为了元数据的重复利用,支持主题的复制功能、主题的导入导出功能。
为了支持大数据的导出功能,有导出管理,可以支持离线导出到excel功能。
在OLAP中日期维度往往是必不可少的,为了拓展日期维度,引入了日期维表,支持年/月/日、年/月、年/周、年/季度、年/半年、年、月、日、周、半年、季度、星期等日期维度。
在OLAP的查询过程中,过滤器的作用是相当巨大的,提供了各种过滤器功能,除了标准的大于、小于、等于、不等于、区间,成员值选择等过滤器外,还提供了很多动态的有特色的过滤器,如日期过滤器中最近大少周、最近多少月、未来多少周、未来多少月等,还提供了高级的过滤器,如值最大的多少个(top n),值最大的前百分之多少(top percent)等,再如维度按度量过滤,会先按维度分组,按度量条件过滤出成员值,然后再过滤。除了上面这些,还支持各种逻辑过滤器,如and、or、not等。
为了支持OLAP的分析能力,OLAP中支持不同的数据类型,如整形、浮点型、日期型、日期时间型等数据类型,同时还支持很多的类型转换,如yyyymmdd类型的数值或字符串可以转换成日期、yyyy-mm-dd hh24:mi:ss格式的字符串可以转换到日期时间类型等。
在OLAP的结果都是经过排序的,在排序方面除了支持普通的维度值的自然排序,还支持定义排序,维度按度量排序等,其中维度按度量排序是先按度量过滤器过滤出一个有序的集合,然后再按集合排序。
在数据格式化方面,支持很多的格式化方式,如常见的各种日期维度的格式化,各种数值的格式化,如货币、百分比等,还支持自定义的格式化,如图片的格式化等。
在SQL查询方面做了一些优化,如果维表中没有任何维度或过滤器被使用到,则查询中会优化掉该维度表,为了避免SQL过于复杂,在OLAP层面拓展了子查询的概念,如各种衍生度量计算的过程中并不是在主查询中使用一个复杂的SQL去实现的,而是分别去查询,这样可以在一定程度上降低SQL的复杂性,提高查询性能;在查询之前为了避免数据量过大,直接查询可能数据库吃不消,所以在查询前先查询count值,如果count只超出了某个限制值则不允许查询;由于order by的性能一般来说都是比较差的,所以如果过滤中没有topn这类影响排序的条件外,默认是不会加order by的。
下钻和穿透是OLAP的基本功能,其中下钻是切换维度去查询,本身仍然是标准的OLAP查询,穿透可以理解成明细查询,是不带goup by的查询,默认会查询主题中的字段,字段可以设置是否在穿透中显示。
为了支持缓存的刷新功能,查询中增加了缓存相关的参数,可以不适用缓存,也可以清理缓存,重新查询。
为了方便数据的分析,支持对数据源做数据导入功能,支持excel和csv文档,导入后的数据可以在逻辑建模中使用。
Claims (6)
1.一种OLAP架构,其特征是,包括Rest API层、OLAP引擎层、支撑层和存储层,所述的Rest API层内包含了查询对象构建内容,所述的OLAP引擎层内包含了查询队列、上下文资源、过滤器解析、字段解析、表关联解析、SQL组装器、衍生度量解析、排序、格式化、表格处理和结果集处理内容,所述的支撑层内包含了数据源管理、元数据管理、缓存管理和表达式内容,所述的存储层内包含了外部数据源、元数据存储和缓存存储内容。
2.根据权利要求1所述的一种OLAP架构,其特征是,所述的OLAP引擎层处理一次查询会处理复杂的分析逻辑,需要先查询一次原生度量;维度按度量排序也需要先按度量过滤查询一组维度值,在进行主数据查询之前,需要进行子查询,子查询和当前查询都有一个查询上下文,查询上下文会保存当前的查询对象,已经当前查询需要用到的中间变量,为了区分不同的查询上下文,所以引入了查询队列。
3.根据权利要求1或2所述的一种OLAP架构,其特征是,所述的OLAP引擎层中字段解析指的是维度度量解析,除了原生的维度度量外,还支持表达式度量、分组维度、表达式字段;表格处理主要说的是有表格特性的处理,主要是小计合计功能;使用到表达式的主要是表达式字段和表达式度量,引入了antlr来支持表达式的定义、校验和解析,表达式支持SQL表达式,用antlr来隔离不同数据源下的差异,同时可以使用antlr来定义和拓展自定义函数;结果集处理是讲OLAP引擎分析后的数据转换到前端结构的过程,前端为了方便数据的渲染和处理需要一套适合前端的数据结构,能够在后端处理好给前端,同时能够直接转换成json字符串,便于缓存存储。
4.根据权利要求1所述的一种OLAP架构,其特征是,所述的Rest API层是基于查询对象的,查询对象包含主题的定义信息,前端选择的维度、度量、过滤器、衍生度量,还包含表格的全局配置参数,OLAP的缓存key也是基于查询对象,查询对象会将包含的各种信息拼装起来组成一个全局唯一的字符串作为缓存key,需要做md5加密。
5.根据权利要求1所述的一种OLAP架构,其特征是,所述的支撑层中由于OLAP引擎比较灵活,需要动态生成子查询,也就是动态生成表,这就要求元数据动态的修改,拓展了元数据的查询,基于数据库的查询方式实现了基于内存的查询方式,在使用的时候,不需要知道底层具体的方式,只需要面向接口开发即可,同时支持db和内存模式的快速切换。
6.根据权利要求1所述的一种OLAP架构,其特征是,所述的存储层是支持redis和mongo,redis主要是内存存储,速度快,对内存要求高,放实时数据和热点数据,失效时间短;而mogno持久化能力强,放缓存结果,做预查询缓存,称之为二级缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810723676.1A CN109241049A (zh) | 2018-07-04 | 2018-07-04 | 一种olap架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810723676.1A CN109241049A (zh) | 2018-07-04 | 2018-07-04 | 一种olap架构 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109241049A true CN109241049A (zh) | 2019-01-18 |
Family
ID=65071838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810723676.1A Pending CN109241049A (zh) | 2018-07-04 | 2018-07-04 | 一种olap架构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109241049A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966727A (zh) * | 2020-08-12 | 2020-11-20 | 北京海致网聚信息技术有限公司 | 基于Spark和Hive的分布式OLAP即席查询方法 |
CN112527868A (zh) * | 2020-12-23 | 2021-03-19 | 东莞市盟大塑化科技有限公司 | 一种数据获取方法、装置、设备及存储介质 |
CN114329155A (zh) * | 2021-12-30 | 2022-04-12 | 北京诺司时空科技有限公司 | 一种包含时序数据库的多模态存储缓存系统及查询方法 |
CN115549862A (zh) * | 2022-12-05 | 2022-12-30 | 大方智造(天津)科技有限公司 | 基于动态解析的mes系统并发性能测试数据接收方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1394696A2 (en) * | 2002-07-23 | 2004-03-03 | Cognos Incorporated | Query interface for OLAP cubes |
CN102682118A (zh) * | 2012-05-15 | 2012-09-19 | 北京久其软件股份有限公司 | 一种多维数据模型访问方法及装置 |
CN103092997A (zh) * | 2013-02-21 | 2013-05-08 | 用友软件股份有限公司 | 用于报表分析的联动查询系统和联动查询方法 |
CN107704608A (zh) * | 2017-10-17 | 2018-02-16 | 北京览群智数据科技有限责任公司 | 一种olap多维分析和数据挖掘系统 |
-
2018
- 2018-07-04 CN CN201810723676.1A patent/CN109241049A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1394696A2 (en) * | 2002-07-23 | 2004-03-03 | Cognos Incorporated | Query interface for OLAP cubes |
CN102682118A (zh) * | 2012-05-15 | 2012-09-19 | 北京久其软件股份有限公司 | 一种多维数据模型访问方法及装置 |
CN103092997A (zh) * | 2013-02-21 | 2013-05-08 | 用友软件股份有限公司 | 用于报表分析的联动查询系统和联动查询方法 |
CN107704608A (zh) * | 2017-10-17 | 2018-02-16 | 北京览群智数据科技有限责任公司 | 一种olap多维分析和数据挖掘系统 |
Non-Patent Citations (1)
Title |
---|
魏剑龙: "面向海量数据的分布式OLAP引擎的研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966727A (zh) * | 2020-08-12 | 2020-11-20 | 北京海致网聚信息技术有限公司 | 基于Spark和Hive的分布式OLAP即席查询方法 |
CN112527868A (zh) * | 2020-12-23 | 2021-03-19 | 东莞市盟大塑化科技有限公司 | 一种数据获取方法、装置、设备及存储介质 |
CN114329155A (zh) * | 2021-12-30 | 2022-04-12 | 北京诺司时空科技有限公司 | 一种包含时序数据库的多模态存储缓存系统及查询方法 |
CN115549862A (zh) * | 2022-12-05 | 2022-12-30 | 大方智造(天津)科技有限公司 | 基于动态解析的mes系统并发性能测试数据接收方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109241049A (zh) | 一种olap架构 | |
CN106874437B (zh) | 面向数据库一体机的内存数据仓库行列存储转换实现方法 | |
CN101777079B (zh) | 一种快速生成电子报表的实现方法 | |
CN102521406B (zh) | 海量结构化数据复杂查询任务的分布式查询方法和系统 | |
KR102177190B1 (ko) | 유연한 스키마를 사용한 데이터 관리 | |
CN101916302B (zh) | 基于哈希表的三维空间数据自适应缓存管理方法及系统 | |
CN102521405B (zh) | 支持高速加载的海量结构化数据存储、查询方法和系统 | |
CN103970902B (zh) | 一种大量数据情况下的可靠即时检索方法及系统 | |
CN102629269B (zh) | 一种嵌入式数据库的检索及存储方法 | |
CN103473260B (zh) | 一种面向并发olap的测试数据分层聚簇查询处理系统及方法 | |
CN102214176B (zh) | 超大维表的切分与表连接方法 | |
CN105930428A (zh) | 用于执行多租户存储中的交叉存储连接的方法和系统 | |
CN102841889A (zh) | 一种基于orm架构的高效数据库访问的实现方法及装置 | |
CN104376109B (zh) | 一种基于数据分布库的多维度数据分布方法 | |
CN104317944B (zh) | 一种基于公式的时间戳动态调整并发控制方法 | |
US20060004794A1 (en) | Rich application view system and method | |
KR101400214B1 (ko) | Hybrid C 인터페이스를 지원하는 장치 | |
CA3176758A1 (en) | Method and apparatus for introducing data to a graph database | |
Beermann et al. | Methods of Data Popularity Evaluation in the ATLAS Experiment at the LHC | |
CN103365923A (zh) | 用于评估数据库的分区方案的方法和装置 | |
CN109656978A (zh) | 近实时搜索服务的优化方法 | |
CN108932258A (zh) | 数据索引处理方法及装置 | |
WO2020147334A1 (zh) | 基于ignite缓存架构的数据查询方法及系统 | |
CN116431635A (zh) | 基于湖仓一体的配电物联网数据实时处理系统及方法 | |
CN103353891B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190118 |
|
RJ01 | Rejection of invention patent application after publication |