Apache Kylin 入门 4 - 构建 Model

Apache Kylin 入门系列目录数据库

1、从 Hive 中加载表

从 Hive 中导入表定义的具体步骤以下:编程

  1. 登陆系统:http://ip:7070/kylin
  2. 主界面顶端左侧网站 Logo 下点击加号 “” 以新建项目;
  3. 在弹出的窗口中,输入项目名称(必选)和项目描述, 点击“肯定”按钮,完成项目建立;
  4. 在网站 Logo 的右侧的下拉框中选择建立的项目,点击 “Model” 菜单;
  5. 点击“Data Source”选项卡,在 Tables 后面有三个按钮,第一个深蓝色按钮表示根据表名从 Hive 中导入表;第二个浅蓝色按钮点击后能够以可视化的方式从 Hive 选择须要导入的表;
  6. 点击浅蓝色按钮,从 Hive 中选择须要导入的表,选择完毕后点击右下角的“Sync”按钮便可完成 Hive 表的导入。

导入表定义的界面有一个选择框 Calculate column cardinality,勾选后系统会计算 Hive 表每一列的基数,基数是指数据集中出现的不一样值的个数,例如“国家”是一个维度,若是有 200 个不一样的值,那么此维度的基数就是 200。架构

从 Hive 中导入表定义

2、建立 Model

点击 “Models” 选项卡,能够看到项目已建立的 Models 以及 Cubes,点击 “+ New” 按钮,选择 “New Model” 便可打开建立 Model 的窗口。因为数据模型的差别,本文不介绍具体的案例,下面将主要介绍建立 Model 过程当中遇到的各类概念。post

一、Model Info

Model Info 主要是填写 Model 的基本信息,其中 “Model Name” 是必填项,模型名称有两点须要注意:优化

  1. 模型名称是全局惟一的,也就是说即使你新建了一个工程,你的模型名称也不可以重复;
  2. 模型一旦建立后,模型名称没法被修改。

填写 Model 的基本信息

二、Data Model

Data Model 主要是构建总体的数据模型,不管你的数据是星型模型或者是雪花模型,须要在这个地方创建数据表之间的关系。网站

2.一、选择事实表

创建数据模型的第一步是选择事实表,选择完成后点击 “Add Lookup Table” 按钮设置事实表与维度表之间的关系。 this

选择事实表

2.二、创建数据关系

对 “Add Lookup Table” 页面的几点说明:编码

  1. 数据关系不只仅是事实表与维度表之间(星型模型),维度表和维度表之间(雪花模型)也能够创建联系;
  2. 表与表之间的链接添加有三种:“Left Join”、“Inner Join”、“Right Join”;
  3. Skip snapshot for this lookup table 选项指的是是否跳过生成 snapshotTable,因为某些 Lookup 表特别大(大于 300M),若是某一个维度的基数比较大 ,可能会致使内存出现 OOM,因此在建立 snapshotTable 的时候会限制原始表的大小不能超过配置的一个上限值(kylin.snapshot.max-mb,默认值300);
  4. 跳过构建 snapshot 的 lookup 表将不能搜索,同时不支持设置为衍生维度(Derived)
  5. 大部分状况下都是使用 “Left Join”,其余两种 Join 方式不是很经常使用。

创建数据关系

2.三、完成表关系构建

经过上述的操做便可将事实表以及维度表联系起来,构成一个数据模型。设计

完成表关系构建

三、Dimensions

在 Dimensions 页面选择可能参与计算的维度,这里被选择的只是在 Cube 构建的时候拥有被选择资格的维度,并非最后参与 Cube 构建的维度,推荐将维度表中的字段都选择上3d

通常而言,日期、商品种类、区域等会做为维度。

选择可能参与计算的维度

四、Measures

在 Measures 页面选择可能用于计算的度量。

通常而言,销售额、流量、温湿度等会做为度量。

选择可能用于计算的度量

五、Settings

在 Settings 页面能够设置分区以及过滤条件,其中分区是为了系统能够进行增量构建而设计的,目前 Kylin 支持基于日期的分区,在 “Partition Date Column” 后面选择事实表或者维度表中的日期字段,而后选择日期格式便可;过滤条件设置后,Kylin 在构建的时候会选择符合过滤条件的数据进行构建。

须要注意的几点:

  1. 时间分区列能够支持日期或更细粒度的时间分区;
  2. 时间分区列支持的数据类型有 time/date/datetime/integer等;
  3. 过滤条件不须要写 WHERE
  4. 过滤条件不能包含日期维度。

六、Save

最后保存便可完成 Model 的建立,你能够打开 Model 中的 Visualization 标签页查询模型的表链接状况。

查看 Model 表链接状况

3、Snapshot Table

每个 Snapshot 是和一个 Hive 维度表对应的,生成的过程是:

  1. 从原始的hive维度表中顺序得读取每一行每一列的值;
  2. 使用 TrieDictionary 方式对这些全部的值进行编码(一个值对应一个 Id);
  3. 再次读取原始表中每一行的值,将每一列的值使用编码以后的 Id 进行替换,获得了一个只有 Id 的新表;
  4. 同时保存这个新表和 Dictionary 对象(Id 和值的映射关系)就可以保存整个维度表;
  5. Kylin 将这个数据存储到元数据库中。

Any Code,Code Any!

扫码关注『AnyCode』,编程路上,一块儿前行。

相关文章
相关标签/搜索