2.5 查询Cube
本节将简要介绍如何查询Cube。更多内容请参考后续的章节(如第5章)。
Cube构建好以后,状态变为“READY”,就可以进行查询了。Kylin的查询语言是标准SQL的SELECT语句,这是为了获得与大多数BI系统和工具无缝集成的可能性。通常的一个查询语句类似于如下的SQL:
SELECT DIM1, DIM2, …, MEASURE1, MEASURE2… FROM FACT_TABLE
INNER JOIN LOOKUP_1 ON FACT_TABLE.FK1 = LOOKUP_1.PK
INNER JOIN LOOKUP_2 ON FACT_TABLE.FK2 = LOOKUP_2.PK
WHERE FACT_TABLE.DIMN = ‘’ AND …
GROUP BY DIM1, DIM2…
需要了解的是,只有当查询的模式跟Cube定义相匹配的时候,Kylin才能够使用Cube的数据来完成查询。Group By的列和Where条件里的列,必须是在Dimension中定义的列,而SQL中的度量,应该跟Cube中定义的度量相一致。
在一个项目下,如果有多个基于同一模型的Cube,而且它们都满足查询对表、维度和度量的要求;那么,Kylin会挑选一个“最优的”Cube来进行查询;这是一种基于成本(cost)的选择,Cube的成本计算中包括多方面的因素,例如Cube的维度数、度量、数据模型的复杂度等。查询引擎将为每个Cube为完成此SQL估算一个成本值,然后选择成本最小的Cube来完成此查询。
如果查询是在Kylin的Web GUI上进行的,那么查询结果会以表的形式展现出来,如
图2-28所示。所执行的Cube名称也会一同显示。用户可以单击“Visualization”按钮生成简单的可视化图形,或单击“Export”按钮将结果集下载到本地。
图2-28 查询结果展示