赞
踩
-维度简述
Kylin中Cube的描述类CubeDesc有两个字段,rowkey和aggregationGroups。
@JsonProperty("rowkey")
private RowKeyDesc rowkey;
@JsonProperty("aggregation_groups")
private List<AggregationGroup> aggregationGroups;
其中rowkey描述的是该Cube中所有维度,在将统计结果存储到HBase中,各维度在rowkey中的排序情况,如下是rowkey的一个样例,包含6个维度。在描述一种维度组合时,是通过二进制来表示。
如这6个维度,都包含时,是 111111。
如 111001,则表示只包含INSERT_DATE、VISIT_MONTH、VISIT_QUARTER、IS_CLICK这四个维度。
二进制从左到右表示的就是rowkey_columns中各个维度的包含与否,1包含,0不包含。
这样的一个二进制组合就是一个cuboid,用long整型表示。
"rowkey": {
"rowkey_columns": [
{
"column": "DW_OLAP_CPARAM_INFO_VERSION2.INSERT_DATE",
"encoding": "dict",
"isShardBy": false
},
{
"column": "DW_OLAP_CPARAM_INFO_VERSION2.VISIT_MONTH",
"encoding": "dict",
"isShardBy": false
},
{
"column": "DW_OLAP_CPARAM_INFO_VERSION2.VISIT_QUARTER",
"encoding": "dict",
"isShardBy": false
},
{
"column": "DW_OLAP_CPARAM_INFO_VERSION2.BUSINESS_TYPE",
"encoding": "dict",
"isShardBy": false
},
{
"column": "DW_OLAP_CPARAM_INFO_VERSION2.SHOP_TYPE",
"encoding": "dict",
"isShardBy": false
},
{
"column": "DW_OLAP_CPARAM_INFO_VERSION2.IS_CLICK",
"encoding": "dict",
"isShardBy": false
},
]
}
而aggregationGroups则描述的是这些维度的分组情况,也就是在一个Cube中的所有维度,可以分成多个分组,每个分组就是一个AggregationGroup,各AggregationGroup之间是相互独立的。
对于所有的维度为什么要做分组?
在Kylin中会预先把所有维度的各种组合下的统计结果原先计算出来,假设维度有N个,那么维度的组合就有2^N中组合,比如N=6,则总的维度组合就有2^6=64种。
如果能够根据实际查询的需求,发现某些维度之间是不会有交叉查询的,那其实把这些维度组合的统计结果计算出来,也是浪费,因为后续的查询中,压根不会用到,这样既浪费了计算资源,更浪费了存储资源,所有可以按实际的查询需求,将维度进行分组,比如6个维度,分成2组,一组4个维度,一组2个维度,则总的维度组合则是2^4+2^2=20,比64小了很多,这里的分组这是举例说明分组,可以有效的减少维度组合,从而缩减存储空间,另外各个分组之间是可以有共享维度的,比如6个维度,可以分成两组,一组4个,另一组3个,两个分组中的共享维度,在后续计算中,其对应的统计结果不会被计算两次,只会计算一次,这也是Kylin聪明的地方。
一个AggragationGroup中包含includes和selectRule两个字段,其中includes就是该分组中包含了哪些维度,是一个字符串数组。
@JsonProperty("includes")
private String[] includes;
@JsonProperty("select_rule")
private SelectRule selectRule;
强制维度——在每一个维度组合中都必须出现的维度,详见 https://mp.weixin.qq.com/s?__biz=MzAwODE3ODU5MA==&mid=2653077943&idx=1&sn=007d2ba345d0e25ec12807aa47f9913d&chksm=80a4bf46b7d33650465d33e20dac7edc09a7ad9308d77de6a501685c8ae00cba661c1d612074&scene=21#wechat_redirect
层级维度——则是那些有层级关系的维度,如省、市、县,详见 https://mp.weixin.qq.com/s?__biz=MzAwODE3ODU5MA==&mid=2653077929&idx=1&sn=c76ed1fbb745945a077d9ca99f159a4d&chksm=80a4bf58b7d3364e0346ad9c433d4e32c57d45f41b361ae653c64c7fcebab21238793d2f66cb&scene=21#wechat_redirect
联合维度——则是那些要么不出现,要出现就必须一起出现的维度,详见 https://mp.weixin.qq.com/s?__biz=MzAwODE3ODU5MA==&mid=2653077926&idx=1&sn=a0037628bd102ec8e607d67204cbfa7c&chksm=80a4bf57b7d336419896c9e801a51f08ead2f7727d0d0ec0f9e3b7799ae3c302ebea54f93cc0&a
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。