暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

实时离线数仓实战No.5 | 业务数据生成实战及数据模型梳理 →

大数据技能圈 2024-05-20
50

实时离线数仓实战V2是在实时离线数仓实战V1的基础上进行扩展的系列文章。相比V1,V2主要的内容包括数据库表的调整、增加数仓建模的内容扩展、数仓性能调优等内容。

组件安装详细文档请访问:建议收藏 | 《实时/离线数仓实战》配套组件安装文档 →

访问github及gitee获取代码及相关jar包:

https://github.com/Mrkuhuo/data-warehouse-learning

https://gitee.com/wzylzjtn/data-warehouse-learning

1 业务数据生成
业务数据的建库、建表和数据生成通过导入脚本完成。建议读者安装一个数据库可视化工具,本节以Navicat为例进行讲解,安装过程不再讲解,数据生成步骤如下。
1.1 导入建表语句
(1)通过Navicat创建数据库gmall。
(2)设置数据库编码
(3)导入数据库结构脚本gmall.sql

1.2 数据生成
(1)在服务器的/opt/upload目录下创建db_log文件夹
(2)把datageneration2024-mock-log-2024-05-01.jar和application.properties上传到服务器的/opt/upload/db_log目录下。
(3)根据需求修改application.properties的相关配置,通过修改业务日期的配置,可以生成不同日期的业务数据。
    logging.level.root=info




    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://192.168.244.129:3306/gmall?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
    spring.datasource.username=root
    spring.datasource.password=


    logging.pattern.console=%m%n




    mybatis-plus.global-config.db-config.field-strategy=not_null
    mybatis.mapperLocations=classpath:mapper/*.xml


    # 业务日期
    mock.date=2024-05-01
    # 是否重置,1表示重置,2表示不重置
    mock.clear=1
    # 是否重置用户,1表示重置,2表示不重置
    mock.clear.user=1


    # 生成新用户个数
    mock.user.count=200
    # 男性比率
    mock.user.male-rate=20
    # 用户数据变化概率
    mock.user.update-rate:20


    # 取消收藏比率
    mock.favor.cancel-rate=10
    # 收藏数量
    mock.favor.count=100


    # 每个用户添加购物车的概率
    mock.cart.user-rate=10
    # 每次每个用户最多可以向购物车添加多少种商品
    mock.cart.max-sku-count=8
    # 每种商品最多可以买几件
    mock.cart.max-sku-num=3


    # 购物车来源比率:用户查询:商品推广:智能推荐:促销活动
    mock.cart.source-type-rate=60:20:10:10


    # 用户下单比率
    mock.order.user-rate=30
    # 用户从购物车中购买商品的比率
    mock.order.sku-rate=50
    # 是否参与活动
    mock.order.join-activity=1
    # 是否使用优惠券
    mock.order.use-coupon=1
    # 优惠券领取人数
    mock.coupon.user-count=100


    # 支付比率
    mock.payment.rate=70
    # 支付方式比率:支付宝:微信:银联
    mock.payment.payment-type=30:60:10


    # 评价比率 好:中:差:自动
    mock.comment.appraise-rate=30:10:10:50
    # 退款原因比率:质量问题:商品描述与实际描述不一致:缺货:号码不合适:拍错:不想买了:其他
    mock.refund.reason-rate=30:10:20:5:15:5:5




    logging.level.com.atguigu.gmall2020.mock.db.mapper=debug
    (4)dolphinscheduler配置shell定时任务生成业务数据,这样数据会定时写入到MySQL中
    shell内容如下所示:
      #! bin/bash
      cd opt/upload/db_log
      java -jar datageneration2024-mock-log-2024-05-01.jar

      最终数据如下图所示:

      (5)在配置文件application.properties中修改如下配置,其中,mock.clear和mock.clear.user参数用于决定此次数据模拟是否清空原有数据。在第2次模拟数据时,将这2个参数的值修改为0,表示不清空。
      (6)再次执行第(4)步中的命令,生成模拟数据。
      2 业务数据模型梳理
      我们需要处理的业务数据,有时并没有表与表之间的关系图,所以需要自己梳理业务数据表之间的关系。在本数据仓库项目中,我们借助EZDML这款数据库设计工具来辅助梳理复杂的业务数据表关系,具体过程如下。
      (1) 选择菜单栏中的“模型”→“新建模型”命令,新建一个数据模型,如图所示。
      (2) 将新建的数据模型重命名为gmall
      (3) 选中数据模型,选择菜单栏中的“模型”→“导入数据库”命令
      (4)选择要导入的表,如图所示。这里需要注意,不勾选的表。
      (5)建立表关系。
      第1步:单击选中主表,即主键所在的表,如图所示。
      第2步:单击“连接”按钮,如图所示。
      第3步:选择从表,并配置连接条件,如图所示。
      配置完成后的效果如图所示。
      (7)按照上述步骤,将所有数据表进行关联,最终效果如图所示。
      添加交流群请添加作者:

      获取详细离线文档:

      精彩推荐

      Flink面试全攻略:从基础到进阶的必知必会 →

      实时离线数仓实战No.4 | 电商业务概述及表结构设计 →

      Kafka面试必刷题:核心概念与架构剖析 →

      实时离线数仓实战No.3 | 用户行为日志采集实战 →

      请各位读者朋友随手点击在看、点赞、收藏,您的支持使我持续创作的力量,感谢。

      文章转载自大数据技能圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论