企业数仓 – 操作指南

by prentiss 2021-11-03

我们通常所说的大数据分析,一般包括数据采集、数据处理和数据分析这三个步骤。在这篇教程里面,我们将展示一个典型的大数据分析实例。通过对数据的采集、分析、处理及可视化展示等步骤,用一个完整的数据工程来向用户展示一个朴素的数据分析完整过程。

完整步骤内容文档下载

步骤一:新建个人/机构项目

用户点击界面上创建新项目,填写名称可参照下图、

shucang1
step1

步骤二:添加项目步骤

从当前项目步骤中进行添加,点击各个目录中的具体操作,依照该方法,分别添加以下几个步骤:

1.数据采集–URL文件导入

2.数据转换–HDFS到Hive导入

3.数据分析–Hive程序步骤

4.数据分析–Hive程序步骤

5.数据转换–ETL程序

step2

添加完成后按照如图所示的方式,对每个步骤修改名称,以区分相同名称的步骤、

step3

最后的修改情况可参照下图。

步骤三:URL 文件导入

通过 URL 文件导入的方式,把已准备好的实验数据导入到系统的 HDFS 指定目录中,并可及时查看运行结果。

点击第一步,通过URL文件导入,跳转到对应的操作界面。

Web下载路径: http://linktime-public.oss-cn-qingdao.aliyuncs.com/Project_online/public_program/t2demoshow.csv

文件名称: 用户自定义(注:请带上文件后缀,系统支持csv、txt后缀格式的文件)

HDFS目录选择: 保持默认

点击导入

step6

步骤四:HDFS 到 Hive 导入

通过本步骤把 HDFS 文件导入到目标 Hive 库,并及时查看运行结果。

数据库:保持默认 数据表状态:如需创建新表,选择新表需创建 此时,点击打开向导创建新表

数据表导入向导

HDFS文件选择:保持默认 点击下一步 注意:请去掉字段名称输入框内的""号 点击导入

step7

步骤五:Hive 程序 – 数据清洗

通过本步骤对 Hive 库表数据进行清洗,并存入到新的 Hive 表。同时通过上下游数据,对该步骤结果数据进行标注,即可把数据注册到数据资产,通过企业数仓层级进行透视查看与管理。

参照下列主程序,做对应修改。

1.替换示例Hive库:xxx_xxx为当前用户默认授权使用的个人库,如替换xxx_xxx 为user_test(test为当前登录用户名,user为个人项目默认的前缀. 2.替换示例Hive表:user_xxx.table1 为:user_xxx.用户自定义表名;

3.替换示例Hive表:user_xxx.table0为HDFS到Hive导入步骤用户自定义的输出表。

编写主程序

CREATE TABLE IF NOT EXISTS `user_beta.table_warehouse1102`(`item` string,`time` string,`title` string,`urls` string,`clicks` int)PARTITIONED BY(year string,month string,day string)STORED AS TEXTFILE;​INSERT OVERWRITE TABLE `user_beta.table_warehouse1102` PARTITION(year='2021',month='03',day='13')SELECT item     , `time`     , title     , urls     , clicks FROM (SELECT item            , `time`            , title            , urls            , clicks            , row_number() over (PARTITION BY urls ORDER BY clicks desc) as rn        FROM user_beta.t2demoshow1102        WHERE create_timestamp>='2021-03-13 00:00:00'       ) tWHERE t.rn=1

参考下图,点击保存,之后试运行。

step8

运行完成后,可以在运行记录中确认运行结果。

步骤六:Hive 程序 – 数据统计

通过本步骤对数据进行统计分析,并把输出写入新的 Hive 表。同时通过上下游数据,对该步骤结果数据进行标注,即可把数据注册到数据资产,通过企业数仓层级进行透视查看与管理。

个人项目(Hive库xxx_xxx为user_xxx):

1.替换示例Hive库:xxx_xxx为当前用户默认授权使用的个人库,如替换xxx_xxx 为user_test(test为当前登录用户名,user为个人项目默认的前缀. 2.替换示例Hive表:user_xxx.table1 为:user_xxx.用户自定义表名;

3.替换示例Hive表:user_xxx.table0为HDFS到Hive导入步骤用户自定义的输出表。

注意此处的表跟前一步骤的表有依附关系。

编写主程序

CREATE TABLE IF NOT EXISTS `user_beta.table_warehouse1103`(`item` string,`time` string,`title` string,`urls` string,`clicks` int,`last_clicks` int,`new_clicks` int)PARTITIONED BY(year string,month string,day string)STORED AS TEXTFILE;INSERT OVERWRITE TABLE `user_beta.table_warehouse1103` PARTITION(year='2021',month='03',day='13')SELECT item , `time` , title , urls , clicks , lag(clicks,1,0) over(PARTITION BY urls ORDER BY year,month,day) as last_clicks , clicks - lag(clicks,1,0) over(PARTITION BY urls ORDER BY year,month,day) as new_clicks FROM user_beta.table_warehouse1102 WHERE CONCAT(year,'-',month,'-',day,' 00:00:00')>='2021-03-13 00:00:00' AND CONCAT(year,'-',month,'-',day,' 00:00:00')<='2021-04-01 00:00:00'

参考下图,点击保存,之后试运行。

step9

运行完成后,可以在运行记录中确认运行结果。

步骤七:创建个人数据源

通过本步骤,创建个人MySQL数据源。可以点击管理菜单,进入个人数据源管理中,选择添加数据源

step10

步骤八:ETL程序 – 数据转换/导出

通过本步骤,对结果数据进行转换,从 Hive 库转换到目标 MySQL 库。

输入数据

数据库类型:选择Hive 并点击编辑框编辑数据源 数据源:选择系统提供的数据库

数据表:选择Hive程序-数据统计步骤的输出表(table_warehouse1103)

注意此处要将数据变更的insert替换成update

点击下一步

step11

数据库类型:选择Hive 并点击编辑框

数据源:选择系统提供的数据库

数据表:选择Hive程序-数据统计步骤的输出表(table_warehouse1103)

不用设置主键列,点击获取建表语句,数据变量保持默认,可参照下图。

step12

点击下一步。

点击开始匹配,保存,然后试运行。

step13

运行成功后,点击下一步,可以看到数据信息。

![image-20211102170539957](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211102170539957.png)

步骤九:将项目步骤建立依赖关系

调整完成后,在项目的工作流与依赖试图界面,将左侧的项目步骤中,逐个拖入试图中,并建立如下图所示的依赖,然后点击保存。

step5

步骤十:BI可视化展示 – Superset

通过本步骤,对经过ETL程序步骤转换存放至MySQL的结果表,进行可视化展示并保存为看板随时分享。

选择集成工具-机构工具-Superset,点击进入。

step15

进入之后点击数据表。

step16

然后点击右上角添加新表。

step17

选择对应的数据库及表名,如下图所示,点击保存。

step18

创建完成后,点击菜单栏的图表,选择右上角的新建。

step19

选择上面步骤填写的数据源,点击创建新表。

step22

时间范围选择Defaults—未过滤

step20

查询-指标–选择

step21

排序指标选择item,然后点击右侧运行查询,修改表名为:新闻点击量。

step23

点击保存,选择添加到新的看板。

step24

最终可以在看板界面看到。

step25

留言

评论

${{item['author_name']}} 回复 ${{idToContentMap[item.parent] !== undefined ? idToContentMap[item.parent]['author_name'] : ''}} · ${{item.date.slice(0, 10)}} 回复

暂时还没有一条评论.