美文网首页
超详细~冒险单车销售公司BI-tableau项目可视化

超详细~冒险单车销售公司BI-tableau项目可视化

作者: 小磊_7119 | 来源:发表于2020-09-07 05:15 被阅读0次

    一、项目介绍

    1、Adventure Works Cycles相关简介

    Adventure Works Cycles是AdventureWorks样本数据库所虚构的公司,这是一家大型跨国制造公司。该公司生产和销售金属和复合材料自行车到北美,欧洲和亚洲的商业市场。

    2000年,Adventure Works Cycles收购了一家位于墨西哥的小型制造工厂Importadores Neptuno。Importadores Neptuno为Adventure Works Cycles产品系列制造了几个关键子组件。这些子组件被运送到Bothell位置进行最终产品组装。2001年,Importadores Neptuno成为旅游自行车产品集团的唯一制造商和分销商。

    在成功实现财政年度之后,Adventure Works Cycles希望通过下面三种方式扩大销售额,第一销售目标定位到最佳客户、第二通过外部网站扩展适用的产品、第三通过降低生产成本来降低销售成本

    其中关于客户类型、产品介绍、采购和供应商这三个方面来做一个简单的介绍

    客户类型

    Adventure Works Cycle这家公司的客户主要有两种:

    个体:这些客户购买商品是通过网上零售店铺

    商店。 这些是从Adventure Works Cycles销售代表处购买转售产品的零售店或批发店。

    产品介绍

    这家公司主要有下面四个产品线:

    •Adventure Works Cycles 生产的自行车

    •自行车部件,例如车轮,踏板或制动组件

    •从供应商处购买的自行车服装,用于转售给Adventure Works Cycles的客户。

    •从供应商处购买的自行车配件,用于转售给Adventure Works Cycles客户。

    采购和供应商

    在Adventure Works Cycles,采购部门购买用于制造Adventure Works Cycles自行车的原材料和零件。 Adventure Works Cycles还购买转售产品,如自行车服装和自行车附加装置,如水瓶和水泵。

    2、数据源:

    本人已经提取上传百度云

    链接:https://pan.baidu.com/s/1B3doA9yYtCXrgmik-wAaUw

    提取码:jk9z

    项目数据描述:数据来源于adventure Works Cycles公司的的样本数据库,包括了公司4大应用场景的数据:Sales、Finance、Product、Manufacture,内含30个csv文件和1个sql文件,我已经打包上传到百度。

    3、项目任务

    (1)将数据导入Hive数据库

    (2)探索数据,汇总数据建立数据仓库(Sales主题)

    (3)tableau实现数据可视化

    二、项目过程

    1、将数据导入Hive数据库

    目标:为了操作方便,不直接在hive里面去建表、导数,而是把建表、导数语句写入shell脚本中,然后在Linux服务器上运行脚本,从而实现在hive库里面建表、导数。

    (1)数据来源

    数据来源于adventure Works Cycles公司的的样本数据库,包括了公司4大应用场景的数据:Sales、Finance、Product、Manufacture

    拿到的数据是30个csv文件和一个sql文件,其中里面的格式使用“|”分隔的。

    (2)数据清洗

    数据源文件是以“|"为分隔符的utf-16LE的CSV文件,以其中的FactFinance.csv表为例,数据如下:

    1|20101229|3|1|1|60|22080|2010-12-29 00:00:00

    2|20101229|3|1|2|60|20200|2010-12-29 00:00:00

    3|20101229|3|1|2|61|2000|2010-12-29 00:00:00

    4|20101229|3|1|1|61|2208|2010-12-29 00:00:00

    5|20101229|3|1|1|62|1546|2010-12-29 00:00:00

    使用python,通过pandas将其读取并转换成通常的CSV文件。

    把 | 统一改为,分隔符,转换后数据如下,还是以以其中的FactFinance.csv表为例

    1,20101229,3,1,1,60,22080,2010-12-29 00:00:00

    2,20101229,3,1,2,60,20200,2010-12-29 00:00:00

    3,20101229,3,1,2,61,2000,2010-12-29 00:00:00

    4,20101229,3,1,1,61,2208,2010-12-29 00:00:00

    5,20101229,3,1,1,62,1546,2010-12-29 00:00:00

    6,20101229,3,1,2,62,1800,2010-12-29 00:00:00

    (3)提取建表语句并生成建表shell文件

    从instawdbdw.sql文件中提取建表语句,存放到create_table.txt中。create_table.txt内包含所有的建表语句,

    使用python代码解析create_table.txt文件,这里会用到文件读写、字符串的处理、正则表达式等方法。

    定义一个字典,从create_table.txt中逐行读取这30个表的表名和字段名,并且存放在这个字典中。代码如下:

    创建create_table.sh文件,解析字典中的表名和字段名,在sh文件中写入建表语句

    #! /bin/sh 是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是解释此脚本的shell的路径。

    hive -v -e,-v打印执行的sql语句,-e后面接执行的sql语句。

    (3)导入表数据 

    创建load_create_data.sh文件,将30个csv文件导入数据库对应的表中。

    生成的load_create_data.sh如下图,直接在linux下面 运行sh load_create_data.sh即可导入到hive中

    进入hive 可以看到表已经建立好,查询其中一个表可以看到相关数据

    可以安装Oracle SQL Developer并添加hive连接驱动(driver可以在cloudera官网下载)且成功连接到hive server2服务

    Oracle SQL Developer查看到表已经都存在

    在linux服务器中查询可以看到如下结果

    2、数据探索与数据仓库的搭建

    (1)数据探索

    1.查看数据库,了解包含哪些可用信息

    数据表总共有30个,基本可以分成两类,以fact开头的事实表和以dim开头的维度表,两种表通过主键连接,表的结构设计为星型结构。

    ps:星型模型是一种多维的数据关系,它由一个事实表和一组维表组成。每个维表都有一个维作为主键,所有这些维的主键组合成事实表的主键。强调的是对维度进行预处理,将多个维度集合到一个事实表,形成一个宽表。

    维度表:表示对分析主题属性的描述。比如地理位置维度表,包含地理位置id、城市、州/省代码、州/省名称、国家/地区代码等描述信息;产品维度表,包含产品id、产品名称、颜色、尺寸、重量等描述信息。通常来说维度表信息比较固定,且数据量小。

    事实表:表示对分析主题的度量。比如网络销售事实表,包含客户id、下单时间、销售额、下单量等信息。事实表包含了与各维度表相关联的外码,并通过JOIN方式与维度表关联。事实表的度量通常是数值类型,且记录数会不断增加,表规模迅速增长。

    以factinternetsales为例,通过自身的主键可以与各个维度表进行关联

    2.明确分析目标,分解任务

    (1)结合项目目标和现有数据,明确分析目标是要向老板以及项目团队展示产品的销售情况;

    (2)整合数据仓库的数据,构建E-R图,挖掘销售事实表与各维度表的关联;

    (3)构建与销售相关的指标体系。

    3.数据分析与初步整理

    产品的销售渠道有两种,一种是线上销售(网络),销售数据存在factinternetsales事实表中;另一种是线下销售(经销商),销售数据存在factresellersales事实表中。

    a. E-R图

    通过E-R图进一步分析事实表与各维度表之间的关联,比如线上销售渠道,factinternetsales事实表中productkey、customerkey、promotionkey、salesterritorykey等字段与维度表有关联。同时,产品相关的维度表有三个,它们之间也存在一定的关联。

    factresellersales事实表与factinternetsales事实表的区别在于,线上销售每一笔订单都直接面向最终客户,因此通过customerkey与dimcustomer维度表关联。而线下销售是通过经销商进行售卖,每一笔订单都有记录经销商和销售人员的信息,因此通过resellerkey与dimreseller维度表关联,通过employee与dimemployee关联。

    factinternetsales事实表与维度表的关联 factresellersales事实表与维度表的关联

    b. 指标体系

    分析维度:

    时间维度——年、季度、月、周、日

    地区维度——销售大区、国家、州/省、城市

    产品维度——产品类别、产品子类

    推广维度

    客户维度

    经销商维度

    员工维度

    分析指标:

    总销售额

    总订单量

    总成本=产品标准成本+税费+运费

    总利润=总销售额-总成本

    收入利润率=总利润/总销售额

    客单价=总销售额/客户总数

    税费

    运费

    销售额、销量目标达成率

    不同维度(时间、地区、产品)下的销售额、订单量


    (2)搭建数据仓库

    目的:根据实际业务需要,对已经建立好的基础层数据进行加工,并存放到数据仓库汇总层。

    数据仓库的设计分为两层,一个是 ODS 基础层,一个是 DW 汇总层 。基础层用来存放基础数据,即前面使用shell脚本导入的数据,而汇总层用来存放我们使用基础层加工生成的数据。

    前面已经从实际业务出发,分析了网络销售事实表(factinternetsales)、经销商销售事实表(factresellersales)与各维度表之间的关联,并且罗列出销售方面的关键分析指标。接下来需要建立一个汇总层,用于存放加工后的维度表以及新建的销售数据汇总表。

    这里为什么要对维度表进行加工呢?虽然不经加工、直接导入tableau也可以,但是数据表较多、数据量较大,加载速度会很慢。而且字段太多,不是每一个字段都会用到。所以这里的加工包括两个层面,一个是对相同类型的维度表做连接,减少表的数量;另一个是筛选过滤,提取需要分析的关键字段。

    另外,这里对网络销售事实表(factinternetsales)和经销商销售事实表(factresellersales)进行整合,提取需要分析的字段(销售额、产品标准成本、运费、税费等),并且创建新的字段(成本、利润等),以便全面分析线上和线下的销售情况。

    1.建立数据仓库

    新建一个数据库,用于存放加工生成的数据,包括加工后的维度表和事实表。

    2.建立数据仓库维度加工表

    a. 连接三个产品方面的维度表

    连接三个与产品相关的维度表:产品维度表(dimproduct)、产品子类别维度表(dimproductsubcategory)、产品类别维度表(dimproductcategory)。提取需要使用的字段:产品id、产品名称、产品类别id、产品类别名称、产品子类id、产品子类名称。

    产品维度表

    b. 连接两个区域方面的维度表

    连接两个与区域相关的维度表:区域维度表(dimsalesterritory)、地理位置维度表(dimgeography)。提取需要使用的字段:区域id、销售大区、销售国家、销售地区、州/省、地理位置id、城市。

    区域维度表

    c. 从各维度表提取分析字段

    3.建立数据仓库事实加工表

    创建销售汇总表sales_total_dw,这里使用union all连接网络销售事实表(factinternetsales)和经销商销售事实表(factresellersales),注意union all连接的两个表,列名和列数必须完全一致,否则会报错。为了区分每一笔订单是线上还是线下销售记录,新增一个标签销售渠道(sales_channel),线上为“internet”,线下为“reseller”。

    PS:factinternetsales需要补齐ResellerKey和EmployeeKey字段 ('null' as ResellerKey,'null' as EmployeeKey,)factresellersales需要补齐CustomerKey字段('null' as CustomerKey)。

    三、报表制作

    目的:将汇总层数据导入tableau,建立各表之间的关联,并制作销售报表。

    1、数据导入

    将tableau连接到hive数据库,将加工后的事实表和维度表导入。

    2、tableau数据关联

    把事实表和维度表进行关联



    3、数据清洗

    数据格式:hive数据库中的数据导入后,可能需要进行格式转换。比如文本格式转换为日期格式,文本格式转换为整数格式,文本格式转换为小数格式,小数格式转换为百分比格式。

    新建度量值:对于新增的客单价、收入利润率等指标,可以通过新建度量值的方式进行处理。当然,最好还是在hive中创建字段,这样代码对其他项目做销售数据分析更有借鉴意义。

    4、整合制作仪表盘显示数据

    相关文章

      网友评论

          本文标题:超详细~冒险单车销售公司BI-tableau项目可视化

          本文链接:https://www.haomeiwen.com/subject/yhkmsktx.html