使用 DGC 前的准备
如果您是第一次使用DGC,请参考准备工作章节完成注册华为云帐号、购买DGC实 例、创建工作空间等一系列操作。然后进入到对应的工作空间,即可开始使用DGC。
数据源准备
本入门示例以某电商商城的BI报表数据为例,分析用户和商品的各种数据特征。
为方便演示,本示例提供了用于模拟原始数据的部分数据。为了方便将源数据集成到 云上,我们需要先将样例数据存储为CSV文件,将CSV文件上传至OBS服务中。
步骤1 创建CSV文件(UTF-8无bom格式),文件名称为对应的数据表名,将后文提供的各样 例数据分别拷贝粘贴到不同CSV文件中,然后保存CSV文件。
以下是Windows下生成.csv文件的办法之一:
1. 使用文本编辑工具(例如Sublime Text,Notepad++等)新建一个文档,将后文 提供的样例数据拷贝进文档中。注意拷贝后检查下数据的行数及数据分行的正确 性。(注意,如果是从PDF文档中拷贝样例数据,单行的数据过长时会产生换 行,需手动重新调整为单行)
2. 选择“格式 > 以UTF-8无BOM格式编码”。
3. 选择“文件 > 另存为”。
4. 在弹出的对话框中输入文件名后,以CSV格式保存该文件。
步骤2 将源数据CSV文件上传到OBS服务。
1. 登录控制台,选择“存储 > 对象存储服务 OBS”,进入OBS控制台。
2. 单击“创建桶”,然后根据页面提示配置参数,创建一个名称为“fast-demo”的 OBS桶。
说明
为保证网络互通,OBS桶区域请选择和DGC实例相同的区域。如果需要选择企业项目,也 请选择与DGC实例相同的企业项目。
使用OBS控制台创建桶的操作,请参见《对象存储服务控制台指南》中的创建
桶。
3. 上传数据到名称为“fast-demo”的OBS桶中。
使用OBS控制台上传文件的操作,请参见《对象存储服务控制台指南》中的上传
文件。
----结束
本示例中涉及到4部分原始样例数据,分别为用户数据user_data.csv、商品数据 product_data.csv、评价数据comment_data.csv和行为数据action_data.csv。具体 数据和说明如下:
● user_data.csv:
user_id,age,sexuality,rank,register_time 100001,20,0,1,2021/1/1
100002,22,1,2,2021/1/2 100003,21,0,3,2021/1/3 100004,24,2,5,2021/1/4 100005,50,2,9,2021/1/5 100006,20,1,3,2021/1/6 100007,18,1,1,2021/1/7 100008,20,1,6,2021/1/8 100009,60,0,4,2021/1/9 100010,20,1,1,2021/1/10 100011,35,0,5,2021/1/11 100012,20,1,1,2021/1/12 100013,7,0,1,2021/1/13 100014,64,0,8,2021/1/14 100015,20,1,1,2021/1/15 100016,33,1,7,2021/1/16 100017,20,0,1,2021/1/17 100018,15,1,1,2021/1/18
100025,34,0,7,2021/1/25 100026,34,1,1,2021/1/26 100027,20,1,8,2021/1/27 100028,20,0,1,2021/1/28 100029,56,0,5,2021/1/29 100030,20,1,1,2021/1/30 100031,22,1,8,2021/1/31 100032,20,0,1,2021/2/1 100033,32,1,0,2021/2/2 100034,20,1,1,2021/2/3 100035,45,0,6,2021/2/4 100036,20,0,1,2021/2/5 100037,67,1,4,2021/2/6 100038,78,0,6,2021/2/7 100039,11,1,8,2021/2/8 100040,8,0,0,2021/2/9
数据说明如下:
表1-1 用户数据说明 字段名称 字段类
型
字段说明 取值范围
user_id int 用户ID 脱敏 age int 年龄段 -1表示未知
register_ti
me string 用户注册日期 单位:天
● product_data.csv:
product_id,a1,a2,a3,category,brand 200001,1,1,1,300001,400001 200002,2,2,2,300002,400001 200003,3,3,3,300003,400001 200004,1,2,3,300004,400001 200005,3,2,1,300005,400002 200006,1,1,1,300006,400002 200007,2,2,2,300007,400002 200008,3,3,3,300008,400002 200009,1,2,3,300009,400003 200010,3,2,1,300010,400003 200011,1,1,1,300001,400003 200012,2,2,2,300002,400003 200013,3,3,3,300003,400004 200014,1,2,3,300004,400004 200015,3,2,1,300005,400004 200016,1,1,1,300006,400004 200017,2,2,2,300007,400005 200018,3,3,3,300008,400005 200019,1,2,3,300009,400005 200020,3,2,1,300010,400005 200021,1,1,1,300001,400006 200022,2,2,2,300002,400006 200023,3,3,3,300003,400006
200024,1,2,3,300004,400006 200025,3,2,1,300005,400007 200026,1,1,1,300006,400007 200027,2,2,2,300007,400007 200028,3,3,3,300008,400007 200029,1,2,3,300009,400008 200030,3,2,1,300010,400008 200031,1,1,1,300001,400008 200032,2,2,2,300002,400008 200033,3,3,3,300003,400009 200034,1,2,3,300004,400009 200035,3,2,1,300005,400009 200036,1,1,1,300006,400009 200037,2,2,2,300007,400010 200038,3,3,3,300008,400010 200039,1,2,3,300009,400010 200040,3,2,1,300010,400010
数据说明如下:
表1-2 商品数据说明
字段名称 字段类型 字段说明 取值范围
product_id int 商品编号 脱敏
a1 int 属性1 枚举,-1表示未知
a2 int 属性2 枚举,-1表示未知
a3 int 属性3 枚举,-1表示未知
category int 品类ID 脱敏
brand int 品牌ID 脱敏
● comment_data.csv:
deadline,product_id,comment_num,has_bad_comment,bad_comment_rate 2021/3/1,200001,4,0,0
2021/3/1,200002,1,0,0 2021/3/1,200003,2,2,0.1 2021/3/1,200004,3,3,0.05 2021/3/1,200005,1,0,0 2021/3/1,200006,2,0,0 2021/3/1,200007,3,2,0.01 2021/3/1,200008,4,1,0.001 2021/3/1,200009,4,0,0 2021/3/1,200010,1,0,0 2021/3/1,200011,2,2,0.2 2021/3/1,200012,3,3,0.04 2021/3/1,200013,1,0,0 2021/3/1,200014,2,2,0.2 2021/3/1,200015,3,2,0.05 2021/3/1,200016,4,1,0.003 2021/3/1,200017,4,0,0 2021/3/1,200018,1,0,0 2021/3/1,200019,2,2,0.3 2021/3/1,200020,3,3,0.03 2021/3/1,200021,1,0,0 2021/3/1,200022,2,5,1
2021/3/1,200029,1,0,0 2021/3/1,200030,2,5,1 2021/3/1,200031,3,2,0.02 2021/3/1,200032,4,1,0.003 2021/3/1,200033,4,0,0 2021/3/1,200034,1,0,0 2021/3/1,200035,2,2,0.5 2021/3/1,200036,3,3,0.06 2021/3/1,200037,1,0,0 2021/3/1,200038,2,1,0.01 2021/3/1,200039,3,2,0.01 2021/3/1,200040,4,1,0.009
数据说明如下:
表1-3 评价数据说明
字段名称 字段类型 字段说明 取值范围
deadline string 截止时间 单位:天 product_id int 商品编号 脱敏
comment_num int 累计评论数分段 ● 0表示无评论
● 1表示有1条评论
has_bad_comm
ent int 是否有差评 0表示无,1表示有
bad_comment_
rate float 差评率 差评数占总评论数的比
重
● action_data.csv:
user_id,product_id,time,model_id,type 100001,200001,2021/1/1,1,view 100001,200001,2021/1/1,1,add 100001,200001,2021/1/1,1,delete 100001,200002,2021/1/2,1,view 100001,200002,2021/1/2,1,add 100001,200002,2021/1/2,1,buy 100001,200002,2021/1/2,1,like 100002,200003,2021/1/1,1,view 100002,200003,2021/1/1,1,add 100002,200003,2021/1/1,1,delete 100002,200004,2021/1/2,1,view 100002,200004,2021/1/2,1,add 100002,200004,2021/1/2,1,buy 100002,200004,2021/1/2,1,like 100003,200001,2021/1/1,1,view 100003,200001,2021/1/1,1,add 100003,200001,2021/1/1,1,delete 100004,200002,2021/1/2,1,view 100005,200002,2021/1/2,1,add 100006,200002,2021/1/2,1,buy 100007,200002,2021/1/2,1,like 100001,200003,2021/1/1,1,view
100002,200003,2021/1/1,1,add 100003,200003,2021/1/1,1,delete 100004,200004,2021/1/2,1,view 100005,200004,2021/1/2,1,add 100006,200004,2021/1/2,1,buy 100007,200004,2021/1/2,1,like 100001,200005,2021/1/3,1,view 100001,200005,2021/1/3,1,add 100001,200005,2021/1/3,1,delete 100001,200006,2021/1/3,1,view 100001,200006,2021/1/4,1,add 100001,200006,2021/1/4,1,buy 100001,200006,2021/1/4,1,like 100010,200005,2021/1/3,1,view 100010,200005,2021/1/3,1,add 100010,200005,2021/1/3,1,delete 100010,200006,2021/1/3,1,view 100010,200006,2021/1/4,1,add 100010,200006,2021/1/4,1,buy 100010,200006,2021/1/4,1,like 100001,200007,2021/1/2,1,buy 100001,200007,2021/1/2,1,like 100002,200007,2021/1/1,1,view 100002,200007,2021/1/1,1,add 100002,200007,2021/1/1,1,delete 100002,200007,2021/1/2,1,view 100002,200007,2021/1/2,1,add 100002,200008,2021/1/2,1,like 100002,200008,2021/1/2,1,like 100003,200008,2021/1/1,1,view 100003,200008,2021/1/1,1,add 100003,200008,2021/1/1,1,delete 100004,200008,2021/1/2,1,view 100005,200009,2021/1/2,1,like 100006,200009,2021/1/2,1,buy 100007,200010,2021/1/2,1,like 100001,200010,2021/1/1,1,view 100002,200010,2021/1/1,1,add 100003,200010,2021/1/1,1,delete 100004,200010,2021/1/2,1,view 100005,200010,2021/1/2,1,like 100006,200010,2021/1/2,1,buy 100007,200010,2021/1/2,1,like 100001,200010,2021/1/3,1,view 100001,200010,2021/1/3,1,add 100001,200010,2021/1/3,1,delete 100001,200011,2021/1/3,1,view 100001,200011,2021/1/4,1,like 100001,200011,2021/1/4,1,buy 100001,200011,2021/1/4,1,like 100010,200012,2021/1/3,1,view 100011,200012,2021/1/3,1,like 100011,200012,2021/1/3,1,delete 100011,200013,2021/1/3,1,view 100011,200013,2021/1/4,1,like 100011,200014,2021/1/4,1,buy 100011,200014,2021/1/4,1,like 100007,200022,2021/1/2,1,like 100001,200022,2021/1/1,1,view 100002,200023,2021/1/1,1,add 100003,200023,2021/1/1,1,delete 100004,200023,2021/1/2,1,like 100005,200024,2021/1/2,1,add 100006,200024,2021/1/2,1,buy
100001,200027,2021/1/4,1,like 100001,200027,2021/1/4,1,buy 100001,200028,2021/1/4,1,like 100010,200029,2021/1/3,1,view 100011,200030,2021/1/3,1,like 100011,200031,2021/1/3,1,delete 100011,200032,2021/1/3,1,view 100011,200033,2021/1/4,1,like 100011,200034,2021/1/4,1,buy 100011,200035,2021/1/4,1,like
数据说明如下:
表1-4 行为数据说明
字段名称 字段类型 字段说明 取值范围
user_id int 用户编号 脱敏
product_id int 商品编号 脱敏
time string 行为时间
-model_id string 模块编号 脱敏 type string ● 浏览view(指浏览
商品详情页)
● 加入购物车add
● 购物车删除delete
● 下单buy
● 关注like
-数据湖准备
在本示例中,选择数据湖探索(DLI)服务作为数据湖。为确保DGC与DLI网络互通,
在创建DLI队列时区域和企业项目应与DGC实例保持一致。
开通DLI服务后,您需要在管理中心创建DLI连接,然后通过数据开发组件新建数据 库,再执行SQL来创建OBS外表。操作步骤如下:
步骤1 在DGC控制台首页,选择对应工作空间的“管理中心”模块,进入管理中心页面。
图1-1 选择管理中心
步骤2 在左侧导航树上,单击“数据连接”,进入页面后,单击“创建数据连接”按钮。
图1-2 数据连接
步骤3 创建一个到DLI的连接,数据连接名称为“dli”。
图1-3 创建数据连接
步骤4 DLI连接创建完成后,跳转到数据开发页面。
图1-4 跳转到数据开发页面
步骤5 参见图1-5,在DLI连接上右键单击,创建一个数据库用于存放数据表,数据库名称为
“BI”。
图1-5 创建数据库
步骤6 创建一个DLI SQL脚本,以通过DLI SQL语句来创建数据表。
图1-6 新建脚本
步骤7 在新建脚本弹出的SQL编辑器中输入如下SQL语句,并点击“运行”来创建数据表。其 中,user、product、comment、action为OBS表,数据存储在OBS中,用于存放原始 数据;top_like_product和top_bad_comment_product为DLI表,用于存放分析结果。
create table user(
user_id int, age int, sexuality int, rank int,
register_time string
) USING csv OPTIONS (path "obs://fast-demo/user_data.csv");
create table product(
product_id int, a1 int, a2 int, a3 int, category int, brand int
) USING csv OPTIONS (path "obs://fast-demo/product_data.csv");
create table comment(
deadline string, product_id int, comment_num int, has_bad_comment int, bad_comment_rate float
) USING csv OPTIONS (path "obs://fast-demo/comment_data.csv");
create table action(
user_id int, product_id int, time string,
图1-7 创建数据表
关键参数说明:
● 数据连接:步骤3中创建的DLI数据连接。
● 数据库:步骤5中创建的数据库。
● 资源队列:使用提供的默认资源队列“default”。
步骤8 脚本运行成功后,可以通过如下脚本检查数据表是否创建成功。确认数据表创建成功 后,该脚本后续无需使用,可直接关闭。
SHOW TABLES;
----结束