9.Sample Data
10.设计cube
维度是指审视数据的角度,它通常是记录数据的一个属性,例如时间,地点等。度量是基于数据所计算出来的考量值。它通常是一个数值,如总销售额,不同的用户数等。分析人员往往要结合若干个维度来审查度量值,以便在其中找到变化的规律。在一个sql查询中,Group By的属性通常就是维度,而搜统计的值则是度量。如下面的示例:
select part_dt,lstg_site_id,sum(price) as total_selled, count(distinct seller_id) as sellers from kylin_sales group by part_dt,lstg_site_id
在上面的查询中,part_dt 和 lstg_site_id 是维度,sum(price)和count(distinct seller_id) 是度量。
事实表是指存储有事实记录的表,如系统日志,销售记录等,事实表的记录在不断地动态增长,所以它的体积通常远大于其他表。
维度表或维表,有时也称为查找表,是与事实表相对应的一种表,它保存了维度的属性值,可以跟事实表做关联,相当于将事实表上经常重复出现的属性抽取,规范出来的一张表进行管理。常见的维度表有:日期表(存储与日期对应的周,月,季度等的属性),地点表(包含国家,省,城市等属性),使用维度表有诸多好处,具体如下。
缩小了事实表的大小。
便于维度的管理和维护,增加,删除和修改维度的属性,不必对事实表的大量记录进行改动。
维度表可以为多个事实表重用,以减少重复的工作。
cube(或 data cube) 即数据立方体,是一种常用于数据分析与索引的技术,它可以对原始数据建立多维索引,通过cube对数据进行分析,可以大大加快数据的查询效率。
cubeid在kylin中特指在某一种维度组合下所计算的数据。
cube Segment 是指针对数据源中的某一个片段,计算出来的cube数据。通常数据仓库中的数据数量会随着时间的增长而增长,而cube segment 也是按时间顺序来构建的。
数据挖掘有几种常见的多维数据模型,如星形模型,雪花模型,事实星座模型等。
星形模型中有一种事实表,以及零个或多个维度表,事实表与维度表通过主键外键相关联,维度表之间没有关联。就像很多星星围绕在一个恒星周围,故取名为星形模型。
如果将星形模型中某些维度的表在做规范,抽取成更细的维度表,然后让维度表之间也进行关联,那么这种模型称为雪花模型。
星座模型是更复杂的模型,其中包含了多个事实表,而维度表是公用的,可以共享。
不过,kylin只支持星形模型的数据集,这是基于以下考虑。
星形模型是最简单,也是最常用的模型。
由于星形模型只有一张大表,因此它相别于其他模型更适合于大数据处理。
其他模型可以通过一定的转换,变为星形模型。
除了数据模型以外,kylin还对维度表有一定的要求,
1)要具有数据一致性,主键值必须是唯一的。
2)维度表越小越好,因为kylin将维度表加载到内存中供查询。过大的表不适合做维度表,默认的阀值是300MB。
3)kylin会在每次构建中试图重用维度表的快照,如果维度表经常改变,重用就会失效,会导致经常创建维度表的快照。
4)维度表最好不是hive试图,虽然kylin支持,但是每次都需要将试图进行物化,从而导致额外的时间开销。
kylin支持增量的cube构建,通常是按时间来增量的从hive表中抽取数据。kylin可以hive分区的好处,节约cube构建时间。这样的列在kylin里也称为分割时间列。
维度基数是该维度在数据集中出现的不同值的个数,例如“国家”是一个维度,如果有200个不同的值,那么此维度的基数就是200.通常一个维度的基数会从几十到几万个不等,个别维度如 用户id的基数会超过百万甚至千万。基数超过一百万的维度通常被称为超高基数维度,需要引起设计者的注意。
cube中所有的维度都可以体现出cube的复杂度,如果一个cube中有好几个超高基数维度,那么这个cube膨胀的概率就会很高。在创建cube前需要对所有维度的基数做一个了解,这样就可以帮助设计合理的cube。计算cube有多种途径,最简单的方法就是让hive执行一个count distinct的sql查询。kylin也提供了计算基数的方法。
如果需要一些简单数据来快速体验Apache Kylin,也可以使用 Apanche Kylin自带的Sample Data 。运行 ${KYLIN_HOME}/bin/sample.sh 来导入Sample Data 然后就能按照下面的流程继续创建模型和cube.
具体执行下面命令,将Sample Data 导入到hive数据库。
cd ${KYLIN_HOME}
/bin/sample.sh
Sample Data 测试的样例数据集合仅1MB左右,共3张表,其中事实表有10000条数据。因为数据规模较小,有利于在虚拟机中进行快速实践和操作。数据集是一个规范的星形模型结构,共包含3个数据表。
KYLIN_SALES是事实表,保存了销售订单的明细信息。各列分别保存了卖家,商品分类,订单金额,商品数量等信息,每一行对应着一笔交易订单。
KYLIN_CATEGORY_GROUPINGS是维表 ,保存了商品分类的详细介绍,例如商品分类名称等。
KYLIN_CAT_DT也是维表,保存了时间的扩展信息。如单个日期所在的年始,月始,周始,年份,月份等。
这3张表一起构建成了整个星形模型。