目前,finebi_shop_bi 中是没有任何数据的,是一个空的数据库。而后续我们的所有数据分析都将在该数据库中进行。我们第一件事情就是要将 「finebi_shop」数据库中的所有表抽取到「finebi_shop_bi」数据库中。要抽取并装载数据到「finebi_shop_bi」中,我们首先要在「finebi_shop_bi」中创建对应的表。
1 数据抽取业务分析
我们已经大概熟悉了上面的6张表,这6张表不是所有数据一次性原封不动地同步到数据仓库中,而是有一些处理细节。考虑以下几个业务场景:
- 每一天都需要进行订单的分析,例如:2020年4月18日一共有多少笔订单、订单的总额是多少。
- 每一天都需要进行用户的分析,例如:2020年4月18日一共注册有多少个用户。
- 商品分类、区域的变化率很少,因为分类、区域几乎都是常年不变的。
商品的数据相对变化频率较高,因为可能每天都会有商品信息的更新。
结合上述的业务场景,我们可以确定数据的抽取周期:
|--------------------|-------|------------------------|--------|------|
| 表名 | 说明 | 装载表 | 抽取方式 | 抽取周期 |
| finebi_areas | 行政区域表 | ods_ifinebi_areas | 全量同步抽取 | 每周 |
| finebi_goods | 商品表 | ods_finebi_goods | 全量同步抽取 | 每天 |
| finebi_goods_cats | 商品分类表 | ods_finebi_goods_cats | 全量同步抽取 | 每周 |
| finebi_orders | 订单表 | ods_finebi_orders | 增量同步抽取 | 每天 |
| finebi_order_goods | 订单明细表 | ods_finebi_order_goods | 增量同步抽取 | 每天 |
| finebi_users | 用户信息表 | ods_finebi_users | 增量同步抽取 | 每天 |
- 全量同步抽取:将所有数据同步抽取到数据仓库
- 增量同步抽取:只抽取抽取新增的数据到数据仓库
2 关于 ods 的意义
ODS(英语:Operational 业务/ Data 数据/ Store 存储)是一种数据架构或数据库设计的概念,出现原因是来自于当需要集成来自多个系统的数据,结果又要给一或多个系统使用时。
数据仓库的ods表是将业务系统数据库表原样抽取进来,结构几乎是一样的,只不过加了一个抽取数据的日期字段。
3 每周数据抽取作业开发
3.1 开发行政区域数据抽取
|--------------|-------|--------|----|
| finebi_areas | 行政区域表 | 全量同步抽取 | 每周 |
根据之前的分析,行政区域表为全量同步抽取,所以我们只需要全部抽取到数据仓库中建表即可。但需要注意:我们需要清晰地标识出数据是哪天抽取过来的,所以需要额外添加一个当前日期的字段。
(1)构建Kettle数据流组件图
(2)配置表输入组件
新建数据库连接,点击新建
配置数据库连接信息
获取读取的表信息
SELECT *, current_date() as dt FROM finebi_areas
通过预览数据,可以看到,除了原有 finebi_areas 表的所有字段之外,还增加了一个当前日期字段,后续作为数据的抽取日期。
(3)配置插入/更新组件
配置数据仓库的连接
指定目标表,目标表的名称为:业务系统数据库表加一个 ods_ 前缀。
点击「SQL」按钮执行
执行转换
查看数据表
(4)构建作业,每天执行一次
创建作业
配置转换
配置定时运行:每天00:05同步一次