【企业数据中台交付】数据回刷实验
1. 创建资源
开始实验之前,您需要先创建实验相关资源。
1、在实验室页面,单击创建资源。
2、(可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、子用户信息等)。
说明:资源创建过程需要3~5分钟(视资源不同开通时间有所差异,ACK等资源开通时间较长)。完成实验资源的创建后,您可以在云产品资源列表查看已创建的资源信息,例如:子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等。
实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。
资源创建成功,可在左侧的资源卡片中查看相关资源信息以及RAM子账号信息
2. 实验环境说明
当数据中台建设过程中,如下场景发生时,我们通常需要进行数据回刷:
1、实验资源
资源1:Dataphin企业版
资源2:ECS云服务器
配置项 |
规格 |
类型 |
ecs.c6.large |
CPU |
2核 |
内存 |
4GB |
操作系统 |
CentOS 7.5 64位 |
系统盘 |
ESSD云盘50GiB |
带宽 |
5Mbps |
资源3:RDS
配置项 |
规格 |
类型 |
mysql.n2.medium.1 |
CPU |
2核 |
内存 |
4GB |
内核版本 |
MySQL5.7 |
存储 |
20GiB,ESSD PL1云盘 |
公网带宽 |
不需要公网 |
2、实验简介和实验目的
体验此场景后,可以掌握的知识有:
- 使用Dataphin数据集成数据源。(4.8数据开发实验为手动调度,本次实验为周期性调度)
- 使用Dataphin进行规范建模。
- 使用Dataphin根据需求进行指标开发。(4.8数据开发为规范建模,本次实验因为涉及ods、cdm、ads链路的完整性,故在ads完成定制化开发指标)
3. 数据回刷场景假设
假设您通过数据集成,配置完了管道任务,并且根据对应表结构构建了公共域等维度表。然后根据维度表进行了指标的开发,但是此时因为源表没有数据,所以整个链路都是空表。现在要针对整个链路进行数据回刷。
4. 制定数据回刷方案
因本课程主要针对数据回刷的实操,方案部分需根据实际的客户场景使用,参考课程部分,不再赘述。因方案制定很关键,因此保留章节。
另外两个tips如下:
1、创建虚拟节点方便统一管理,若要进行大批量数据回刷可通过对虚拟节点下游进行整体链路的回刷。
2、将生成的维度逻辑表都关联到上游以便整条链路的疏通。
5. 数据回刷实施
1.前置操作(务必完成)手动清空未回收的遗留文件
(1)拿到dataphin账号以及打开dataphin
a.点击右边的WebTerminal,打开命令行。
b、输入ls,按下回车可以看到存在userinfo.txt。
c、输入cat userinfo.txt 可以拿到用户名和密码(记得保存下来)。
d、配置host:"121.40.84.217 dataphin-asset.gts.work".配置方法"https://jingyan.baidu.com/article/154b46316570c428ca8f4133.html"。
e、切换到自己的电脑,新开一个浏览器。
f、输入http://dataphin-asset.gts.work/链接。
g、输入刚才拿到的账号以及密码,进入dataphin。
(2)检查管道任务查看是否有遗留任务
a、点击研发进入到研发模块。
b、看一下自己是不是在开发项目空间,若看到项目空间为data_distill则需要切换。
c、然后点击集成进入到集成模块。
d、若看到离线管道内无任何任务,则跳过2.检查管道任务查看是否有遗留任务此步骤。
e、删除管道任务
i、点击任务右边的选项。
ii、点击下线并删除或删除,前两者有哪个点哪个,若任务发布则会弹第一个,若任务为草稿状态则会弹后者。
iii、点击发布,进入到发布板块 。
iv、点击发布并且点提交发布刚才的删除管道任务。
f、重复上述步骤 删除所有遗留管道任务。
(3)检查计算任务查看是否有遗留任务
a、点击开发进入到开发模块,并且点击计算任务。
b、若看到计算任务内无任何任务,则跳过3.检查计算任务查看是否有遗留任务。
c、删除计算任务。
i、点击任务右边的选项。
ii、点击下线并删除或者删除,前两者有哪个点哪个,若任务发布则会弹第一个,若任务为草稿状态则会弹后者。
iii、点击发布,进入到发布板块选择 数据处理(若是点击删除没有进行下线则不需要发布)。
iv、点击发布并且点击提交发布刚才的删除计算任务。
d、重复上述步骤 删除所有遗留计算任务。
(4)检查即席查询查看是否有即席查询
a、点击开发进入到开发模块,并且点击即席查询。
b、若看到即席查询内无任何任务,则跳过过4.检查即席查询查看是否有即席查询。
c、删除计算任务。
i、点击任务右边的选项。
ii、点击删除。
d、重复上述步骤 删除所有遗留计算任务。
(5)检查派生指标查看是否有派生指标
a、点击开发进入到开发模块,并且点击派生指标。
b、若看到派生指标内无任何任务,则跳过5.检查派生指标查看是否有派生指标。
c、删除派生指标
i、点击任务右边的选项。
ii、点击下线并删除或者删除,前两者有哪个点哪个,若任务发布则会弹第一个,若任务为草稿状态则会弹后者。
iii、点击发布,进入到发布板块选择规范建模 (若是点击删除没有进行下线则不需要发布)。
iv、点击发布并且点击提交发布刚才的删除派生指标。
d、重复上述步骤 删除所有遗留派生指标。
##注意:派生指标,汇总逻辑表,原子指标,业务限定的删除顺序务必按照实验顺序进行
(6)检查汇总逻辑表查看是否有汇总逻辑表
a、点击开发进入到开发模块,并且点击汇总逻辑表。
b、若看到汇总逻辑表内无任何任务,则跳过6.检查汇总逻辑表查看是否有汇总逻辑表。
c、删除派生指标
i、点击任务右边的选项。
ii、点击下线并删除或者删除,前两者有哪个点哪个,若任务发布则会弹第一个,若任务为草稿状态则会弹后者。
iii、点击发布,进入到发布板块选择规范建模(若是点击删除没有进行下线则不需要发布)。
iv、点击发布并且点击提交发布刚才的删除汇总逻辑表。
d、重复上述步骤 删除所有遗留汇总逻辑表。
(7)检查原子指标查看是否有原子指标
a、点击开发进入到开发模块,并且点击原子指标。
b、若看到原子指标内无任何任务,则跳过7.检查原子指标查看是否有原子指标。
c、删除原子指标
i、点击任务右边的选项。
ii、点击下线并删除或者删除,前两者有哪个点哪个,若任务发布则会弹第一个,若任务为草稿状态则会弹后者。
iii、点击发布,进入到发布板块选择规范建模(若是点击删除没有进行下线则不需要发布)。
iv、点击发布并且点击提交发布刚才的删除原子指标。
d、重复上述步骤 删除所有遗留原子指标。
(8)检查业务限定查看是否有业务限定
a、点击开发进入到开发模块,并且点击业务限定。
b、若看到业务限定内无任何任务,则跳过8.检查业务限定查看是否有业务限定。
c、删除原子指标
i、点击任务右边的选项。
ii、点击下线并删除或者删除,前两者有哪个点哪个,若任务发布则会弹第一个,若任务为草稿状态则会弹后者。
iii、点击发布,进入到发布板块选择规范建模 (若是点击删除没有进行下线则不需要发布)。
iv、点击发布并且点击提交发布刚才的删除业务限定。
d、重复上述步骤 删除所有遗留业务限定。
(9)检查维度逻辑表查看是否有维度逻辑表
a、点击开发进入到开发模块,并且点击维度逻辑表。
b、若看到维度逻辑表内无任何任务,则跳过9.检查维度逻辑表查看是否有维度逻辑表。
c、删除维度逻辑表
i、点击任务右边的选项。
ii、点击下线并删除或者删除,前两者有哪个点哪个,若任务发布则会弹第一个,若任务为草稿状态则会弹后者。
iii、点击发布,进入到发布板块选择规范建模 (若是点击删除没有进行下线则不需要发布)。
iv、点击发布并且点击提交发布刚才的删除维度逻辑表。
d、重复上述步骤 删除所有遗留维度逻辑表。
2.数据集成
(1) 为Dataphin配置Mysql数据源
a、打开dataphin,点击规划
b、点击`数据源`并且点击`新增数据源`
c、选择mysql数据源
d、配置数据源信息
- 数据源信息,JDBC URL链接实验资源信息里可以获取。
选择好数据库类型后,JDBC URL填写的文本框会提示对应数据源链接语法格式,mysql的语法格式为:jdbc:mysql://ServerIP:Port/Database(serverIP为ECS(弹性IP)的IP地址; Port为18086 ; Database为sakila)
- 数据库db名、数据库登录名、数据库密码。
数据库db名:Sakila
数据库登录名:root
数据库密码:admin!23
e、填写无误后 点击确定 即可完成添加数据源
(2)创建虚拟节点进行维护任务
a、创建虚拟节点任务
i、点击开发
ii、点击计算任务 并且新建计算任务
iii、配置任务名称(虚拟节点_root),并且点击确认生成任务
b、配置虚拟节点任务调度
i、点击属性
ii、滑到最下面后点击添加上游依赖
iii、填写root 选择自带根节点并点击确定新增
iv、点击添加输出节点 并填写root点击确定新增
v、点击确定 保存调度
c、保存任务并且进行发布
i、点击提交
ii、点击确定并提交
iii、点击去发布
iv、点击发布 进行发布上线
(3) 配置管道任务进行数据上云
a、进入到数据集成模块
b、新建集成任务
c、本实验中共需要上云16张表,且为了规范建议名称统一为 "imp_sakila_xxx(xxx为需要上云表名称)".
---------------------------------------这是所有表的相关信息----------------------------------------
actor,演员信息表。通过 film_actor 表和 film 表进行关联。
film,电影信息表。film 引用了 language 表,同时被 film_category、film_actor 以及 inventory 表引用。
film_actor,电影演员表。film 表和 actor 表之间的多对多关系。
film_category,电影分类表。film 表和 category 表之间的多对多关系。
category,分类表。通过 film_category 表和 film 表进行关联。
inventory,电影库存表。每部电影在不同商店里的库存,被 rental 表引用。
film_text,电影描述表。包含了 film 表中的 film_id、title 以及 description 三个字段,通过 film 表上的触发器进行数据同步。
language,语言信息表。language 表被 film 表引用。
address,地址信息表。其中主键字段 address_id 是 customer、staff 以及 store 表上的外键引用字段,同时引用了 city 表。
city,城市信息表。引用了 country 表,同时被 address 表引用。
country,国家信息表。country 表被 city 表引用。
customer,客户信息表。引用了 address 和 store 表,同时被 payment 和 rental 表引用。
payment,付款信息表。引用了 customer、staff 以及 rental 表。
rental,租赁信息表,每个 DVD 每次被租赁的信息。引用了 inventory、customer 以及 staff 表,同时被 payment 表引用。
staff,员工信息表。引用了 store 和 address 表,同时被 rental、payment 以及 store 表引用。
store,商店信息表,引用了 staff 和 address 表,同时被 staff、customer 以及 inventory 表引用。
---------------------------------------------------------------------------------------------------------
i、首先进行上云address这张表。
ii、根据规范完成管道名称。
iii、选择手动节点。
iv、点击确认生成对应集成任务。
d、配置管道集成任务
i、点击生成组件;
ii、点击选择输入组件并且选择mysql 进行拖拽出来;
iii、点击选择输出组件并且选择Maxcompute 进行拖拽出来;
iv、将mysql输入组件和maxcompute输出组件进行连接起来;
v、配置mysql输入组件
1、右键mysql输入组件点击属性配置;
2、数据源选择gts_datasource_mysql;
3、上云表选择address对应继承任务名称,注意:本次实验共需要上云16张表(上面有相关16张表信息);
4、点击确认完成mysql配置;
e、配置maxcompute输出组件
i、右键maxcompute输入组件点击属性配置;
ii、数据源选择目前所在项目中
iii、加载策略选择覆盖数据
iv、先一键生成目标表,注意规范此处建表记得加上前缀 sakila_xxx 然后点击新建
v、分区填写 ds = ${bizdate}
vi、选择同名映射 **注意:如果mysql有关键词字样,在dataphin中新建会加上后缀区别,在这里选择同名映射 location 无法映射到刚才在dataphin新建的表,因为字段名称替换为 location_odps 若出现无法完全映射上的字段 可以选择同行映射
vii、都配置无误后点击确认完成maxcompute的配置
f、配置调度
i、点击调度配置或者属性
ii、滑到最下面选择点击添加手动上游
iii、填写 root 并选择自己建的root(虚拟节点)并且点击确定新增
iv、添加下游,填写与本任务匹配的表名即可.(一般下游均与表名保持一致)
v、点击确定保存下游
g、保存任务并且进行提交发布
i、点击`保存`后进行`提交`
ii、点击`确认并提交`
iii、进入到发布界面
iv、选择刚才的任务进行点击`发布`
v、点击确认即发布成功
h、重复数据上云a-g步骤,进行完成剩下15张表的上云工作
**注意:
新建管道任务时记得选择`周期节点`;
一定要配置上下游:上游->root(虚拟节点自己新建的); 输出->sakila_xxx(xxx为addres/city等 根据你的表来填写)
`输入组件`内选择mysql,`输出组件`内选择maxcompute;
每个任务保存提交后记得发布
3.数据开发-维度建模 cdm层的开发
(1)现在要根据表的说明构建各个信息维度表,首先构建主题域
a、点击`维度逻辑表`并且点击新建维度逻辑表。
b、点击`新建维度表`后,选择`地址`业务对象。c、中文名称填写:xxx维度表 这里是构建地址维表用的是地址业务对象 即为地址维度表。
d、点击下一步。
e、填写主键逻辑
i、可以先点击参考实例尝试自己编写代码 SELECT address_id FROM ent_dmo.sakila_address WHERE ds ='${bizdate}' ;#注:ent_dmo为项目名称,填写自己的项目名称 `gts_gtb_xxx`
ii、构建地址维度表自然选择对应的地址信息表主键。
iii、点击规范性校验。
iv、最后点击下一步。
v、物化信息选择默认填写的即可然后点击确认生成地址维度表 。
(2)通过主键逻辑生成对应地址维度表后只有主键一个字段,此时要冗余别的字段进来
a、点击 + 号 并且点击`新建字段`。
b、滑动滚轮,看到未引入的字段。
c、点击未`引入的字段`并且点击新增将引入sakila_address剩余的字段。
d、填写字段中文名称,因本次实验sakila数据库本身无注释,故这里咱们中英文名称一致。
e、点击保存并校验即可将sakila_address剩余的字段都冗余进来。
(3)仔细观察上述表结构信息说明,address表被customer、staff 以及 store表引用外键,同时引用了city表
故这里要将dim_address(地址维度表)通过city_id关联city表。
**注意:关联city表,需要构建city维度表并且city维度表进行上线(保存->提交->发布)
(4)构建city维度表
点击新建维度表。
(5)配置维度表信息,并生成对应city维度表
a、业务对象选择上面生成的城市业务对象。
b、中文名称填写城市维度表,点击下一步。
c、完善主键逻辑(和构建address步骤一样)
i、首先点击规范实例尝试自行填写 SELECT city_id FROM ent_dmo.sakila_city where ds ='${bizdate}' ;#注:ent_dmo为项目名称,填写自己的项目名称 `gts_gtb_xxx`。
ii、填写主键逻辑后点击规范性校验,校验无误后点击下一步。
d、完善物化信息,不用调整.点击确认生成dim_city(城市维度表)。
(6)冗余city剩余字段进来
a、点击+号,点击新建字段。
b、点击未引入的字段后,点击新增。
c、完善中文名称后点击保存并校验,成功冗余剩余字段。
(7)配置调度->保存提交->发布
a、点击属性,并且滑到最上面点击添加依赖。
b、添加上游节点依赖,因为本次实验为一次性的,上云的表均是手动任务,故无法关联上游表,此处填写root选择根节点。
c、添加关联物理表,选择对应物理表后 并点击确定新增。
d、点击确定即可保存调度。
e、保存并提交dim_city(城市维度表)。
f、点击`确认并提交`后耐心等待校验。
g、点击发布板块。
h、选择刚才提交的任务并点击发布进行发布任务 。 **注意:在规范建模板块中 截图中已标识
(8)dim_address(地址维度表)关联dim_city(城市维度表)
梳理下进度与流程:
a、目前dim_address已经生成,但是未进行保存和发布,因为还未关联dim_city。
b、dim_city已构建完成并且保存发布上线了。
c、现在该用dim_address通过city_id关联dim_city并进行配置调度保存发布了。
(9)关联dim_city->配置调度并保存提交任务->发布dim_address进行上线
a、点击列表视图。
b、选择city_id并点击新建关系。
c、关联维度选择地址-城市维度表。
d、点击确认,即可完成关联。
e、可看到已经关联上了,点击模型视图可更好的观察。
f、配置调度,点击右边属性,点击添加依赖。
g、点击保存并提交,点击确定并提交。
h、点击发布板块,选择规范建模,将生成的任务进行发布。
(10)重复1-9步骤,进行完成剩下的维度表构建以及关联
总结 :
1.构建维度表的前提是要有对应的业务对象,业务对象已提前帮学员创建好,可根据下面信息创建维度表时选择对应的业务对象
2.构建 A 维度表去关联 B 维度表, B表必须是已上线(成功发布)的表,才可进行关联维度
根据以下信息进行完成剩下维度表的构建以及关联;(在项目中每个项目定义的域都需要客户去审核进行规范,因本次为实验,故划分域划的比较简单随意)
address : 主题域=地址域 , 业务对象 = 地址 关联city : address.city_id = city.city_id
city : 主题域 = 地址域 , 业务对象 = 城市 关联country : city.country_id = country.country_id
country : 主题域 = 地址域 ,业务对象 = 乡县
actor : 主题域 = 公共域 ,业务对象 = 演员
film : 主题域 = 电影域 , 业务对象 = 电影
关联film_actor : film.film_id = film_actor.film_id ;
关联film_category : film.film_id =film_category.film_id
关联film_text : film.film_id = film_text.film_id
关联 language :film.language_id = language.langua_id
film_actor : 主题域 = 电影域 , 业务对象 = 电影演员
film_category : 主题域 = 电影域 , 业务对象 = 电影分类
category : 主题域 = 公共域 , 业务对象 = 分类
inventory : 主题域 =电影域 , 业务对象 = 电影库存
film_text : 主题域 = 电影域 , 业务对象 = 电影描述
language : 主题域 = 公共域 , 业务对象= 语言
customer : 主题域 = 公共域 , 业务对象 = 客户
关联store : customer.store_id = store.store_id
关联address: customer.address_id =address.address_id
payment : 主题域 = 公共域 , 业务对象= 付款信息
关联rental : payment.rental_id = rental.rental_id
关联customer : payment.customer_id = customer.customer_id
关联staff : payment.staff_id =staff.staff_id
rental : 主题域 = 公共域 , 业务对象 = 租赁信息
staff : 主题域 = 公共域 ,业务对象 = 员工信息
关联store : staff.store_id = store.store_id
关联address: staff.address_id =address.address_id
store : 主题域 = 公共域 , 业务对象 = 商店信息
**注意 : 本次关联,不进行关联不影响后续指标开发.但是建议所有实验同学完成相关关联操作.务必构建所有维度表
4.数据回刷
a、点击运维,点击周期任务,并且点击自己创建的虚拟节点_root
注意:可以看到虚拟节点下面挂着许多"集成管道任务",上云16张表应为16个下游; 此时我们想对刚才配置的管道任务进行回刷数据,以及对创建的维度逻辑表回刷数据 都只需要管理这一个 虚拟节点_root 即可
b、右键点击图示中的虚拟节点_root,并且选择补数据-补当前及下游任务
c、配置补数据任务
i、将层级打开为全部,即所有下游
ii、并发调为3
iii、将所有任务进行勾选
iv、点击确认,自动跳转到补数据实例参看进度(如无跳转,也可手动操作如图)
v、耐心等待,等待回刷成功
6. 数据回刷验证
创建即席SQL进行校验任务。
并命名为数据校验 点击确认生成任务。
执行下面即席SQL进行数据校验。
gts_gtb_xxx为项目名称 替换为 自己的项目名称(如图展示 项目名称为箭头指向)。
注意都是生产环境不要带dev。
---------------------------------------------------------------------------
SELECT * FROM gts_gtb_xxx.sakila_address where ds > 0 ;
SELECT * FROM ld_training.dim_address where ds > 0 ;
SELECT * FROM gts_gtb_xxx.sakila_city where ds > 0 ;
SELECT * FROM ld_training.dim_city where ds > 0 ;
----------------------------------------------------------------------------
校验完成,数据都已回刷完成(本次实验因底层数据是非分区表 所以为全量回刷)。
实验链接:https://developer.aliyun.com/adc/scenario/bff4458388ac476da3a3e561171d2478