
# 使用DLI分析电商BI报表
#### 应用场景
某电商商城在保持高速发展的同时，沉淀了数亿的忠实用户，积累了海量的真实数据。如何利用BI工具从历史数据中找出商机，是大数据应用在精准营销中的关键问题，也是所有电商平台在做智能化升级时所需要的核心技术。
本案例以某商城真实的用户、商品、评论数据（脱敏后）为基础，利用数据湖探索来分析用户和商品的各种数据特征，可为营销决策、广告推荐、信用评级、品牌监控、用户行为预测提供高质量的信息。
#### 流程指导
使用DLI进行电商数据分析的操作过程主要包括以下步骤：
[步骤1：上传数据]。将数据上传到对象存储服务OBS，为后面使用DLI完成数据分析做准备。
[步骤2：分析数据]。使用DLI对待分析的数据进行查询。
具体样例数据及详细SQL语句可以通过[数据包](https://dli-best-practice-demo.obs.cn-north-4.myhuaweicloud.com:443/Best_Practice_04/Best_Practice_04.zip)进行下载。
#### 数据说明
为保护用户的隐私和数据安全，所有数据均已进行了采样和脱敏。
- 用户数据
  表1用户数据 
  | 字段名称          | 字段类型   | 字段说明   | 取值范围                                                                                                                                                                                                                                             |
  |:---|:---|:---|:---|
  | user_id       | int    | 用户ID   | 脱敏                                                                                                                                                                                                                                               |
  | age           | int    | 年龄段    | -1表示未知                                                                                                                                                                                                                                           |
  | gender        | int    | 性别     | - 0表示男  - 1表示女  - 2表示保密   |
  | rank          | Int    | 用户等级   | 有顺序的级别枚举，越高级别数字越大                                                                                                                                                                                                                                |
  | register_time | string | 用户注册日期 | 单位：天                                                                                                                                                                                                                                             |
     
  
- 商品数据
  表2商品数据 
  | 字段名称       | 字段类型 | 字段说明 | 取值范围      |
  |:---|:---|:---|:---|
  | product_id | int  | 商品编号 | 脱敏        |
  | a1         | int  | 属性1  | 枚举，-1表示未知 |
  | a2         | int  | 属性2  | 枚举，-1表示未知 |
  | a3         | int  | 属性3  | 枚举，-1表示未知 |
  | category   | int  | 品类ID | 脱敏        |
  | brand      | int  | 品牌ID | 脱敏        |
     
  
- 评价数据
  表3评价数据 
  | 字段名称             | 字段类型   | 字段说明    | 取值范围                                                                                                                                                                                                                                                                                                                                                                                                              |
  |:---|:---|:---|:---|
  | deadline         | string | 截止时间    | 单位：天                                                                                                                                                                                                                                                                                                                                                                                                              |
  | product_id       | int    | 商品编号    | 脱敏                                                                                                                                                                                                                                                                                                                                                                                                                |
  | comment_num      | int    | 累计评论数分段 | - 0表示无评论  - 1表示有1条评论  - 2表示有2-10条评论  - 3表示有11-50条评论  - 4表示大于50条评论   |
  | has_bad_comment  | int    | 是否有差评   | 0表示无，1表示有                                                                                                                                                                                                                                                                                                                                                                                                         |
  | bad_comment_rate | float  | 差评率     | 差评数占总评论数的比重                                                                                                                                                                                                                                                                                                                                                                                                       |
     
  
- 行为数据
  表4行为数据 
  | 字段名称       | 字段类型   | 字段说明                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 取值范围 |
  |:---|:---|:---|:---|
  | user_id    | int    | 用户编号                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 脱敏   |
  | product_id | int    | 商品编号                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 脱敏   |
  | time       | string | 行为时间                                                                                                                                                                                                                                                                                                                                                                                                                                                           | -    |
  | model_id   | string | 模块编号                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 脱敏   |
  | type       | string | - 浏览（指浏览商品详情页）  - 加入购物车  - 购物车删除  - 下单  - 关注  - 点击   | -    |
     
  
 
 #### 步骤1：上传数据
将数据上传到对象存储服务OBS，为后面使用DLI完成数据分析做准备。
1. 下载OBS Browser+。下载地址请参考《[对象存储服务工具指南](https://support.huaweicloud.com/browsertg-obs/obs_03_1003.html)》。
2. 安装OBS Browser+。安装步骤请参考《[对象存储服务工具指南](https://support.huaweicloud.com/browsertg-obs/obs_03_1005.html)》。
3. 登录OBS Browser+。OBS Browser+支持AK方式登录，以及授权码登录两种登录方式。登录步骤请参考《[对象存储服务工具指南](https://support.huaweicloud.com/browsertg-obs/obs_03_1004.html)》。
4. 通过OBS Browser+上传数据。 在OBS Browser+页面单击"创建桶"，按照要求选择"区域"和填写"桶名"（例如：DLI-demo），创建桶成功后，返回桶列表，单击桶DLI-demo。OBS Browser+提供强大的拖拽上传功能，您可以将本地的一个或多个文件或者文件夹拖拽到对象存储的对象列表或者并行文件系统的对象列表中；同时您也可以将文件或文件夹拖拽到指定的目录上，这样可以上传到指定的目录中。
   单击[Best_Practice_04.zip](https://dli-best-practice-demo.obs.cn-north-4.myhuaweicloud.com:443/Best_Practice_04/Best_Practice_04.zip)获取本示例的测试数据，解压"Best_Practice_04.zip"压缩包，解压后将data文件夹上传到OBS桶根目录下。测试数据目录说明如下：
   - user表数据：data/JData_User
   
   - product表数据：data/JData_Product
   
   - comment表数据：data/JData_Product/JData_Comment
   
   - action表数据：data/JData_Action
    
 
 #### 步骤2：分析数据
1. 创建数据库、表
   1. 在portal页面上方菜单栏中单击"产品"，单击"大数据"分类中的"数据湖探索 DLI"。
   
   2. 创建demo数据库，在DLI控制台总览页面，选择"作业管理 \> SQL作业"，单击"创建作业"，进入SQL作业编辑器。
   
   3. 在SQL作业编辑器左侧，选择"数据库"页签，单击![](https://support.huaweicloud.com/bestpractice-dli/zh-cn_image_0000001181087381.png)创建demo数据库，请参见[图1]。
      图1创建数据库   
      ![](https://support.huaweicloud.com/bestpractice-dli/zh-cn_image_0000001255035263.png "点击放大")
      ![](https://support.huaweicloud.com/bestpractice-dli/public_sys-resources/note_3.0-zh-cn.png)
      "default"为内置数据库，不能创建名为"default"的数据库。
      
   
   4. 选择demo数据库，在编辑框中输入以下SQL语句：
      ```
      create table user(
        user_id int,
        age int,
        gender int,
        rank int,
        register_time string
      ) USING csv OPTIONS (path "obs://DLI-demo/data/JData_User")
      ```
      ![](https://support.huaweicloud.com/bestpractice-dli/public_sys-resources/note_3.0-zh-cn.png)
      上述SQL语句中的文件路径为实际存放数据的OBS路径。
      
   
   5. 单击"执行"，创建用户信息表user。
   
   6. 用相同的方法创建商品表，评价表，行为表。
      - 商品表
        ```
        create table product(
          product_id int,
          a1 int,
          a2 int,
          a3 int,
          category int,
          brand int
        ) USING csv OPTIONS (path "obs://DLI-demo/data/JData_Product")
        ```
        
      
      - 评价表
        ```
        create table comment(
          deadline string,
          product_id int,
          comment_num int,
          has_bad_comment int,
          bad_comment_rate float
        ) USING csv OPTIONS (path "obs://DLI-demo/data/JData_Comment")
        ```
        
      
      - 行为表
        ```
        create table action(
          user_id int,
          product_id int,
          time string,
          model_id string,
          type string
        ) USING csv OPTIONS (path "obs://DLI-demo/data/JData_Action");
        ```
        
       
    
2. 执行查询 常用查询语句可以设置为模板，下次查询的时候在模板管理页面可以查看，具体操作可参见《数据湖探索用户指南》中的[《模板管理》](https://support.huaweicloud.com/usermanual-dli/dli_01_0021.html)。
   - 分析出10大用户点赞数最多的产品
     1. 执行以下SQL语句，可以分析出10大用户点赞数最多的产品。
        ```
        SELECT
          product.brand as brand,
          COUNT(product.brand) as like_count
        from
          action
          JOIN product ON (action.product_id = product.product_id)
        WHERE
          action.type = 'like'
        group by
          brand
        ORDER BY like_count desc
        limit
          10
        ```
        
     
     2. 单击"执行"，运行结果如[图2]所示：
        图2查询结果   
        ![](https://support.huaweicloud.com/bestpractice-dli/zh-cn_image_0000001140112583.png "点击放大") 
     
     3. 单击![](https://support.huaweicloud.com/bestpractice-dli/zh-cn_image_0000001210475800.png "点击放大")"结果图形化"，对结果进行图形展示：
        图3结果图形化   
        ![](https://support.huaweicloud.com/bestpractice-dli/zh-cn_image_0000001140112641.png "点击放大") 
      
   
   - 分析出10大评级最差的商品
     1. 执行以下SQL语句，可以分析出10大评级最差的商品。
        ```
        SELECT
          DISTINCT product_id,
          comment_num,
          bad_comment_rate 
        from 
          comment 
        where 
          comment_num > 3 
        order by 
          bad_comment_rate desc 
        limit
          10
        ```
        
     
     2. 单击"执行"，运行结果如[图4]所示：
        图4查询结果   
        ![](https://support.huaweicloud.com/bestpractice-dli/zh-cn_image_0000001140113065.png "点击放大") 
     
     3. 单击![](https://support.huaweicloud.com/bestpractice-dli/zh-cn_image_0000001210315820.png "点击放大")"结果图形化"，对结果进行图形展示：
        图5结果图形化   
        ![](https://support.huaweicloud.com/bestpractice-dli/zh-cn_image_0000001140113137.png "点击放大") 
      
   
   
   此外，还可以分析用户的年龄分布、性别比例、商品评价情况、购买情况、浏览情况等。
   
 
