2.4.2 创建数据模型
有了表信息后,就可以开始创建数据模型了。数据模型(Data Model)是Cube的基础,主要根据分析需求进行设计。有了数据模型以后,定义Cube的时候就可以直接从此模型定义的表和列中进行选择了,省去了重复指定连接(JOIN)条件的步骤。基于一个数据模型可以创建多个Cube,方便减少用户的重复性工作。
在Apache Kylin界面的“Model”页面,点击“New”→“New Model”命令,开始创建数据模型。给模型输入名称后,选择一个事实表(必需的),然后添加维度表(可选),如图2-4所示。
图2-4 添加事实表
添加维度表的时候,首先选择表之间的连接关系,同时选择表之间的连接类型:是inner jion还是left jion,并为创建的维度表输入别名。同时可以选择是否将其以快照(Snapshot)形式存储到内存中以供查询。当维度表小于300MB时,推荐启用维度表以快照形式存储,以简化Cube计算和提高系统整体效率。当维度表超过300MB上限时,则建议关闭维度表快照,以提升Cube构建的稳定性与查询的性能。然后选择连接的主键和外键,这里也支持多主键,如图2-5所示。
图2-5 添加维度表
接下来选择用作维度和度量的列。这里只是选择一个范围,不代表这些列将来一定要用作Cube的维度或度量,你可以把所有可能会用到的列都选进来,后续创建Cube的时候,将只能从这些列中进行选择。
选择维度列时,维度可以来自事实表或维度表,如图2-6所示。
图2-6 选择维度列
选择度量列时,度量只能来自事实表或不加载进内存的维度表,如图2-7所示。
图2-7 选择度量列
最后一步,是为模型补充分割时间列信息和过滤条件。如果此模型中的事实表记录是按时间增长的,那么可以指定一个日期/时间列作为模型的分割时间列,从而可以让Cube按此列做增量构建,关于增量构建的具体内容参见第4章。
过滤(Filter)条件是指,如果想把一些记录忽略掉,那么这里可以设置一个过滤条件。Apache Kylin在向Hive请求源数据的时候,会带上此过滤条件。如图2-8所示,会只保留金额(price)大于0的记录。
图2-8 选择分区列和设定过滤条件
最后,点击“Save”保存此数据模型,随后它将出现在“Model”的列表中。