依赖模式。维度间通过依赖关系来决定构建cube的组合关系,只有父维度存在,子维度才会有效。常见的有国家,省份,城市这类字段。在做分析的时候,一般场景为:
group by 国家;
group by 国家,省份;
group by 国家,省份,城市;
例子:假设有维度A,B,C 其中B依赖于A,C依赖于B,那么构建的cube如图4。
图4
Derived
衍生模式。衍生模式的使用场景为,一个或多个维度可以由另一个维度生成。这是什么意思呢,假设在事实表中有外键列A, lookup表中B,C列,其中B为主键,列A和列B是映射关系,那么在查询事实表中的列A同时,kylin会自动的查询到lookup表中的B列。从维度数量的角度来看,Normal模式下有ABC,AB,AC,BC,A,B,C这几种组合情况,而在Derived模式下,cube的构建组合只有AC,A,C。
那么当请求的sql为`select count(*) from lookup group by B`的时候,由于没有对B列做预处理,所以kylin先查询A列的count,然后再实时计算出对应的B列的count 。
如图5,ID列为已知的某个维度列,A,C,B为ID列的衍生列,那么最终cube构建组合只有ID列。
图5
Joint
联合模式。在很多分析场景中,有些维度单独分析是没有意义的,要么同时出现,要么不出现。
例如维度A,B,C 当维度B和A是Joint关系,那么在构建cube的时候,kylin只会组合出ABC,AB,C三种。
Aggregation Group
聚合组
Max Dimension Combination最大的维度组合数量。
例如维度A,B,C 那么Max Dimension Combination设置为2时,kylin只会构建AB,AC,BC,A,B,C这几种组合,ABC这种组合会被省略。
参考
《Apache Kylin权威指南》
// 官网对术语的介绍
事实表和维度表详细介绍
// 事实表和维度表定义 案例分析
https://blog.csdn.net/y3177530/article/details/51121652
// 星型模式&雪花模式
https://blog.csdn.net/nisjlvhudy/article/details/7889422