文章目录
- [1. 项目准备](#1. 项目准备)
-
- [1.1 需求分析](#1.1 需求分析)
- [1.2 数据结构](#1.2 数据结构)
-
- [1.2.1 订单表](#1.2.1 订单表)
- [1.2.2 访客表](#1.2.2 访客表)
- [1.2.3 商品类目表](#1.2.3 商品类目表)
- [1.2.4 退款表](#1.2.4 退款表)
- [1.2.5 物流表](#1.2.5 物流表)
- [1.2.6 用户表](#1.2.6 用户表)
- [1.3 准备数据文件](#1.3 准备数据文件)
-
- [1.3.1 上传数据文件到虚拟机](#1.3.1 上传数据文件到虚拟机)
- [1.3.2 在HDFS上创建数据目录](#1.3.2 在HDFS上创建数据目录)
- [1.3.3 上传数据文件到HDFS目录](#1.3.3 上传数据文件到HDFS目录)
- [1.4 创建数据库](#1.4 创建数据库)
- [1.5 创建数据表](#1.5 创建数据表)
-
- [1.5.1 创建订单表](#1.5.1 创建订单表)
- [1.5.2 创建访客表](#1.5.2 创建访客表)
- [1.5.3 创建商品类目表](#1.5.3 创建商品类目表)
- [1.5.4 创建退款表](#1.5.4 创建退款表)
- [1.5.5 创建物流表](#1.5.5 创建物流表)
- [1.5.6 创建用户表](#1.5.6 创建用户表)
- [2. 项目实现](#2. 项目实现)
-
- [2.1 总体运营指标](#2.1 总体运营指标)
-
- [2.1.1 独立访客数](#2.1.1 独立访客数)
- [2.1.2 页面访问数(PV)](#2.1.2 页面访问数(PV))
- [2.2 流量类指标](#2.2 流量类指标)
- [2.3 网站销售类指标](#2.3 网站销售类指标)
- [2.4 商品类指标](#2.4 商品类指标)
- [2.5 营销类指标](#2.5 营销类指标)
- [2.6 物流类指标](#2.6 物流类指标)
- [3. 数据展示](#3. 数据展示)
-
- [3.1 可视化软件简介](#3.1 可视化软件简介)
- [3.2 可视化软件安装](#3.2 可视化软件安装)
-
- [3.2.1 下载Tableau可视化软件](#3.2.1 下载Tableau可视化软件)
- [3.2.2 安装Tableau可视化软件](#3.2.2 安装Tableau可视化软件)
- [3.3 数据展示](#3.3 数据展示)
-
- [3.3.1 导入数据](#3.3.1 导入数据)
- [3.3.2 独立访客数](#3.3.2 独立访客数)
- [3.3.3 页面访问数](#3.3.3 页面访问数)
- [3.3.4 人均页面访问数](#3.3.4 人均页面访问数)
- [3.3.5 总订单数量](#3.3.5 总订单数量)
- [3.3.6 跳出率](#3.3.6 跳出率)
- [3.3.7 页面访问时长](#3.3.7 页面访问时长)
- [3.3.8 下单---支付金额转化率](#3.3.8 下单—支付金额转化率)
- [3.3.9 下单---支付买家数转化率](#3.3.9 下单—支付买家数转化率)
- [3.3.10 退款金额](#3.3.10 退款金额)
- [3.3.11 出版社图书前10名](#3.3.11 出版社图书前10名)
- [3.3.12 出版社销量排行](#3.3.12 出版社销量排行)
- [3.3.13 平均发货时间](#3.3.13 平均发货时间)
1. 项目准备
1.1 需求分析
- 数据采集和整合:收集电商平台的交易日志,将其存储到合适的数据库或数据仓库中,并保证数据的准确性、完整性和实时性。
- 数据清洗和预处理:对采集到的数据进行清洗、转换和预处理,以确保数据的质量。
- 用户行为分析:通过分析交易日志中的用户行为数据,如点击、浏览、购买等,识别用户偏好、购买习惯和潜在的流失因素等。
- 销售趋势分析:通过分析销售数据,如销售额、销售渠道等,发现热门商品及其销售趋势,优化库存管理和采购计划。
- 交易异常监测:通过分析日志数据,检测异常订单、欺诈行为和支付问题等,提高系统的安全性。
- 数据可视化和报告:将分析结果以直观的图表、可视化仪表板和报告的形式展示,帮助决策者更好地理解数据,并做出相应的业务决策。
1.2 数据结构
1.2.1 订单表
| 字段解释 | 字段名 | 数据类型 |
|---|---|---|
| 订单 ID | order_id | string |
| 订单时间 | order_time | bigint |
| 买家 ID | user_id | bigint |
| 商品 ID | goods_id | bigint |
| 买家 IP | user_ip | string |
| 收货地址 | ship_add (shipping address) | string |
| 手机号 | phone_no | string |
| 点击来源 | click_source | string |
| 单点费用 | click_cost | float |
| 订单完成时间 | pay_ct (payment completion time) | bigint |
| 订单状态 | pay_status (payment status) | string |
1.2.2 访客表
| 字段解释 | 字段名 | 数据类型 |
|---|---|---|
| 访问 IP | access_ip | string |
| 访问时间 | access_time | bigint |
| 网页跳转时间 | jump_time | bigint |
| 用户 ID | user_id | bigint |
| 手机号 | phone_no | string |
| 商品 ID | goods_id | bigint |
| 访问链接 | access_con (access connection) | string |
| 访问事件 | access_event | string |
| 点击来源 | click_source | string |
| 单点费用 | click_cost | float |
1.2.3 商品类目表
| 字段解释 | 字段名 | 数据类型 |
|---|---|---|
| 商品 ID | goods_id | bigint |
| 商品名称 | goods_name | string |
| 作者 | author | string |
| 出版社 | press | string |
| 出版时间 | pub_time (published time) | bigint |
| ISBN 编号 | ISBN | float |
| 定价 | pricing | float |
| 商品售价 | goods_price | bigint |
| 月销量 | mon_sales (month sales) | string |
| 发货地址 | del_add (delivery address) | string |
1.2.4 退款表
| 字段解释 | 字段名 | 数据类型 |
|---|---|---|
| 订单 ID | order_id | bigint |
| 买家 ID | user_id | bigint |
| 图书 ID | goods_id | bigint |
| 买家 IP | user_ip | string |
| 订单时间 | order_time | bigint |
| 退款时间 | refund_time | bigint |
| 收货地址 | ship_add (shipping address) | string |
| 手机号 | phone_no | string |
| 运费险 | fre_ins (freight insurance) | string |
| 退款原因 | refund_reason | string |
1.2.5 物流表
| 字段解释 | 字段名 | 数据类型 |
|---|---|---|
| 订单 ID | order_id | bigint |
| 物流单号 | log_num (logistics single number) | bigint |
| 发货时间 | del_time (the delivery time) | bigint |
| 收货时间 | rec_time (receiving time) | bigint |
1.2.6 用户表
| 字段解释 | 字段名 | 数据类型 |
|---|---|---|
| 用户 ID | user_id | bigint |
| 性别 | gender | string |
| 年龄 | age | bigint |
| 访问时间 | access_time | bigint |
| 最后一次登录时间 | last_login (last login time) | bigint |
| 点击来源 | click_source | string |
1.3 准备数据文件
1.3.1 上传数据文件到虚拟机
- 在slave2节点上执行命令:
mkdir /ecdata

- 执行命令:
cd /ecdata

- 将6个数据文件上传到
/ecdata目录

- 执行命令:
ll

1.3.2 在HDFS上创建数据目录
- 执行命令:
hdfs dfs -mkdir /ecdata

1.3.3 上传数据文件到HDFS目录
-
执行命令:
hdfs dfs -put item.txt /ecdata

-
执行命令:
hdfs dfs -put logistics.txt /ecdata

-
执行命令:
hdfs dfs -put orders.txt /ecdata

-
执行命令:
hdfs dfs -put refund.txt /ecdata

-
执行命令:
hdfs dfs -put users.txt /ecdata

-
执行命令:
hdfs dfs -put visitors.txt /ecdata

1.4 创建数据库
- 执行命令:
create database ecdata;

- 执行命令:
use ecdata;,切换到ecdata数据库

1.5 创建数据表
1.5.1 创建订单表
- 创建订单表
-
执行语句
sqlcreate table orders ( order_id string, order_time bigint, user_id bigint, goods_id bigint, user_ip string, ship_add string, phone_no string, click_source string, click_cost float, pay_ct bigint, pay_status string ) row format delimited fields terminated by '\t';
-
- 向订单表加载数据
- 执行语句:
load data inpath '/ecdata/orders.txt' into table orders;

- 执行语句:
- 查看订单表记录
- 执行语句:
select * from orders limit 20;

- 执行语句:
1.5.2 创建访客表
-
创建访客表
-
执行语句
sqlcreate table visitors ( access_ip string, access_time bigint, jump_time bigint, user_id bigint, phone_no string, goods_id bigint, access_con string, access_event string, click_source string, click_cost float ) row format delimited fields terminated by '\t';
-
-
向访客表加载数据
- 执行语句:
load data inpath '/ecdata/visitors.txt' into table visitors;

- 执行语句:
-
查看访客表记录
- 执行语句:
select * from visitors limit 20;

- 执行语句:
1.5.3 创建商品类目表
-
创建商品类目表
-
执行语句
sqlcreate table item ( goods_id bigint, goods_name string, author string, press string, pub_time bigint, isbn float, pricing float, goods_price bigint, mon_sales string, del_add string ) row format delimited fields terminated by '\t';
-
-
向商品类目表加载数据
- 执行语句:
load data inpath '/ecdata/item.txt' into table item;

- 执行语句:
-
查看商品类目表记录
- 执行语句:
select * from item limit 20;

- 执行语句:
1.5.4 创建退款表
-
创建退款表
-
执行语句
sqlcreate table refund ( order_id bigint, user_id bigint, goods_id bigint, user_ip string, order_time bigint, refund_time bigint, ship_add string, phone_no string, fre_ins string, refund_reason string ) row format delimited fields terminated by '\t';
-
-
向退款表加载数据
- 执行语句:
load data inpath '/ecdata/refund.txt' into table refund;

- 执行语句:
-
查看退款表记录
- 执行语句:
select * from refund limit 20;

- 执行语句:
1.5.5 创建物流表
-
创建物流表
-
执行语句
sqlcreate table logistics ( order_id bigint, log_num bigint, del_time bigint, rec_time bigint ) row format delimited fields terminated by '\t';
-
-
向物流表加载数据
- 执行语句:
load data inpath '/ecdata/logistics.txt' into table logistics;

- 执行语句:
-
查看物流表记录
- 执行语句:
select * from logistics limit 20;

- 执行语句:
1.5.6 创建用户表
-
创建用户表
-
执行语句
sqlcreate table users ( user_id bigint, gender string, age bigint, access_time bigint, last_login bigint, click_source string ) row format delimited fields terminated by '\t';
-
-
向用户表加载数据
- 执行语句:
load data inpath '/ecdata/users.txt' into table users;

- 执行语句:
-
查看用户表记录
- 执行语句:
select * from users limit 20;

- 执行语句:
2. 项目实现
2.1 总体运营指标

2.1.1 独立访客数
-
时间维度
-
执行语句
sqlselect t1.hour, count(t1.hour) from (select user_id, from_unixtime(access_time, 'HH') as hour from visitors) t1, (select user_id, count(user_id) from visitors group by user_id) t2 where t1.hour is not null and t1.user_id = t2.user_id group by t1.hour;

-
结果说明 :该查询统计了所有在
visitors表中有访问记录的用户(通过自连接确保 user_id 存在)在各小时(00--23)的访问次数。结果显示全天每小时均有数百次访问,其中15点最高(551次),20点最低(435次),整体分布相对均匀,表明用户访问行为覆盖全天,无明显极端高峰或低谷。小时 访客数 00 531 01 546 02 502 03 480 04 477 05 497 06 518 07 483 08 524 09 523 10 489 11 486 12 491 13 493 14 488 15 551 16 484 17 509 18 528 19 538 20 435 21 479 22 511 23 467
-
-
地域维度
-
执行语句
sqlselect t1.province, count(distinct t1.user_id) as visitor_count from (select user_id, split(ship_add, ' ')[0] as province from orders) t1, (select distinct user_id from visitors) t2 where t1.province is not null and t1.user_id = t2.user_id group by t1.province;

-
结果说明:该查询统计了既访问过网站(visitors 表)又下过订单(orders 表)的独立用户数量,并按收货地址省份分组。结果显示全国31个省级行政区均有覆盖,用户数最多的为云南省(58人)、河北省(56人)和浙江省(53人),直辖市用户相对较少,反映下单活跃用户主要集中在人口大省或电商渗透率较高地区。
省份 下单访客数 上海市 14 云南省 58 内蒙古自治区 49 北京市 15 吉林省 48 四川省 50 天津市 16 宁夏回族自治区 25 安徽省 43 山东省 42 山西省 49 广东省 52 广西壮族自治区 46 新疆维吾尔自治区 46 江苏省 48 江西省 40 河北省 56 河南省 49 浙江省 53 海南省 27 湖北省 34 湖南省 48 甘肃省 44 福建省 44 西藏自治区 41 贵州省 38 辽宁省 52 重庆市 31 陕西省 43 青海省 35 黑龙江省 54
-
-
渠道维度
-
执行语句
sqlselect t1.source, count(t1.source) from (select user_id, click_source as source from visitors) t1, (select distinct user_id from visitors) t2 where t1.source is not null and t1.user_id = t2.user_id group by t1.source;
-
结果说明:该查询统计了不同流量来源的用户访问量,结果显示"淘宝直播"(2374)和"聚划算"(3652)是主要引流渠道,其次是"淘宝搜索"(642)和"淘宝橱窗"(1222),说明营销活动和直播内容对用户吸引作用显著,而"阿里博客"等渠道流量较低。
渠道 访客数 搜索 2 淘宝搜索 642 淘宝橱窗 1222 淘宝直播 2374 淘宝社区 1168 直通车 1752 聚划算 3652 阿里博客 1218
-
2.1.2 页面访问数(PV)
-
时间维度
-
执行语句
sqlselect from_unixtime(access_time, 'HH') as hour, count(*) as pv from visitors where access_time is not null group by from_unixtime(access_time, 'HH') order by hour;

-
结果说明:该查询按小时统计了页面访问量(PV),结果显示全天各时段均有稳定访问,高峰出现在15点(551次)和19点(538次),低谷在20点(435次)和04点(477次)。整体分布较均衡,无极端波动,表明用户活跃时段覆盖全天,符合典型电商平台的访问规律。
小时 页面访问数 00 531 01 546 02 502 03 480 04 477 05 497 06 518 07 483 08 524 09 523 10 489 11 486 12 491 13 493 14 488 15 551 16 484 17 509 18 528 19 538 20 435 21 479 22 511 23 467
-
-
地域维度
-
渠道维度
2.2 流量类指标

2.3 网站销售类指标

2.4 商品类指标

2.5 营销类指标

2.6 物流类指标

3. 数据展示
3.1 可视化软件简介
- Tableau 是一款领先的可视化数据分析工具,能够快速连接多种数据源(如 Excel、SQL 数据库、云平台等),通过拖拽式操作实现高效的数据探索与交互式仪表板构建。其核心优势在于强大的可视化能力、实时数据更新和用户友好的界面,无需编程即可生成图表、地图、趋势分析等,广泛应用于商业智能、运营监控与决策支持。Tableau 支持多端共享与协作,助力个人和企业将复杂数据转化为直观洞察,提升数据驱动决策的效率与准确性。