kylin基本概念
模型(Model)
建立模型的具体操作就不详细记录了,可以参考官方文档 kylin.apache.org/cn/docs/tut…
建立模型注意事项
- 建议模型的时候可以使用多种连接方式:left join;inner join;right join 这里设置了连接方式后,后面查询就要严格按照这个连接来进行查询,否则肯定命中不了cube,会走下压查询
- 通过情况下都会使用 left join,这样可以有效的保留事实表的数据完整性
- 如果涉及到大基数的纬度,一般有两种解决方案
- 提前将大纬度融入事实表中,这个要看具体的业务进行一个权衡
- 在构建模型的时候,跳过生成纬度快照表(Skip snapshot for this lookup table),如果设置了这个值,后面这个表的所有字段都不能使用衍生纬度了
I
纬度(Dimensions)
- Mandatory:必要纬度,where子句后面一定会出现的字段,如果一个字段被标记为 Mandatory 的话,那么kylin在构建的时候,包含这个字段的组合才会进行预计算,不包含这个字段的组合就会被剪枝
- Hirarchy:层级纬度, 多个纬度之间有层级(包含)的关系,比如(省,市,区);(年,月,日)这种是比较经典的层级纬度设置。层级纬度A,B,C 正常的组合有 A,B,C,AB,AC,BC,ABC,设置了这个纬度之后就剩下A,AB,ABC;其他的组合B,C,AC,BC就不进行计算了
- Joint:联和纬度,有一些纬度总是一起出现的 // TODO 待深入了解
- Derived:衍生纬度,有一些纬度可以通过主键衍生(找到)的,那么这些可以设置为衍生纬度,只将主键添加到纬度计算中,其运行原理是在构建模型的时候,kylin会对纬度表进行一个生成快照表的操作,而衍生纬度就可以通过这个快照表进行命中
纬度设置注意事项:
- 衍生纬度依赖于mode构建时生成的快照表,如果我们在构建模型的时候跳过了快照表(Skip snapshot for this lookup table),就不能使用衍生纬度了
- 星型模型可以将事实表的外键设置了纬度, 然后将纬度表中的所有字段可以设置为衍生纬度 // TODO 待验证
- 如果是雪花模型,那么将纬度表的外键设置为纬度,纬度表的子表全部设置为衍生纬度 // TODO 待验证
- 可以设置为层级纬度的字段,将其设置为(Normal)正常纬度,后面设置了层级纬度