关键概念:
olap(联机分析查询)
维(Dimension) ,例如时间维
维的层次(level,例如时间维:日期,月份,季度,
维的成员(Member):维的一个取值 ,例如某年某月某日
度量(Measure):多维数值的取值,例如(2000年,上海,笔记本,0000)。
事实表(fact table):用来存放事实的度量值和各个维度的码值
维表:用来存放维的元数据(维的层次、成员类别等描述信息)
星型模型(Star Schema)
MOLAP(多维联机事务分析)
cube 分区:实现数据的逻辑分段(减少重复和清除重要数据),立方体数据结构可以存储一个或多个分区上
cube reflesh(cube 更新):
增量更新:将新数据添加到立方体的分区并更新聚合。增量更新用新的数据创建临时分区并把它合并到现有分区。
根据现在的业务情况,频繁修改表字段名,Kylin直接使用hive中的字段名作为元数据,如果频繁修改事实表或者维度表的字段名会导致元数据错误([https://issues.apache.org/jira/browse/KYLIN-1173]),因此通过view增加一层映射是比较好的方法,这样可以使得原生的hive表的字段名对Kylin的cube透明,此后再需要修改字段名的时候不会对cube有所影响,只需要修改view的定义。
源表字段经常改变,有些字段类型和实际不符,所以必须通过对源表创建不同视图,kylin使用视图来构建cube
1、业务查询语句:
create view product_cube as
select userid, eventid, label, day, ‘android’ as platform from product_android WHERE category=’a’
UNION ALL
select userid, eventid, label, day, ‘ios’ as platform from product_ios WHERE category=’a’;
2、对应创建视图:
create view product_cube as
select userid, eventid, label, day, ‘android’ as platform from product_android WHERE category=’a’
UNION ALL
select userid, eventid, label, day, ‘ios’ as platform from product_ios WHERE category=’a’;
x,x,x是维度,xxx是messure,
3、在kylin里面,创建一个工程
4、在tables里面同步刚刚创建的视图
5、新增cube,添加fact table 和 dim表,此处没有dim表,所有数据都在fact table里面,不需要join dim表
6、增加维度
7、增加messure值