一、基本原理
Apache Kylin是个开源分布式OLAP引擎,其基本原理是数据立方和预计算。
Kylin一般是作为数据仓库的应用层引擎,对业务提供SQL查询分析服务,针对数据维度多、数据基数大的场景,Kylin预计算可以保证在毫秒级时间返回分析结果,查询阶段性能十分出众。
Kylin的相关人员主要分为三种角色:1. 数据用户 2. 数据仓库建模人员 3. 数据平台管理员。数据用户通过BI可视化分析工具或者编写SQL查询Kylin的数据; 数据仓库建模人员维护Kylin元数据,设计如何构建Cube,选择维度、度量;数据平台管理员提供存储和计算平台支持,目前最常见的存储引擎是HBase,计算引擎是Spark。
1. 基础模型:Star Schema
我们以电商场景为例具体看一下如何设计和构建Kylin Cube。下图是一个典型数据仓库中的星型模型,模型的中心是事实表 fact_sales,模型的周围是五张维度表:dim_date,dim_product, dim_store,dim_promotion,dim_customer,它们通过代理键和事实表相关联;
在这个星型模型下,有一个需求,“分析电商网站用户在一周的每一天中,更倾向于购买Fresh Fruit还是Candy”;
终端用户用SQL实现如下查询:
SELECT
dim_date.weekday, dim_product.category,
SUM(fact_sales.quantity) AS quantity_sold
FROM fact_sales
JOIN dim_date ON fact_sales.date_key = dim_date.date_key
JOIN dim_product ON fact_sales.product_sk = dim_product.product_sk
WHERE
dim_date.year =