• Flink Icerberg 离线输仓-维度建模过程(二)


    维度建模过程

    维度建模一般按照以下四个步骤: 选择业务过程→声明粒度→确认维度→确认事实

    选择业务过程

    在业务系统中,挑选我们感兴趣的业务线,比如下单业务,支付业务,退款业务,物流业务,一条业务线对应一张事实表。

    声明粒度

    数据粒度指数据仓库的数据中保存数据的细化程度或综合程度的级别。 声明粒度意味着精确定义事实表中的一行数据表示什么,应该尽可能选择最小粒度,以此来应各种各样的需求。

    典型的粒度声明如下:

    订单事实表中一行数据表示的是一个订单中的一个商品项; 支付事实表中一行数据表示的是一个支付记录。

    确定维度

    维度的主要作用是描述业务是事实,主要表示的是“谁,何处,何时”等信息。 确定维度的原则是:后续需求中是否要分析相关维度的指标。

    原始数据格式及字段含义

    DWD层 6张基础表

    基础表事实表和维度表
    1. //member_log 用户基本信息表
    2. member_log 用户基本信息表
    3. {
    4. "ad_id": "0", //广告id
    5. "birthday": "1981-08-14", //出生日期
    6. "dt":"20190722", //日期分区
    7. "dn": "webA", //网站分区
    8. "email": "test@126.com",
    9. "fullname": "王69239", //用户姓名
    10. "iconurl": "-",
    11. "lastlogin": "-",
    12. "mailaddr": "-",
    13. "memberlevel": "6", //用户级别
    14. "password": "123456", //密码
    15. "paymoney": "-",
    16. "phone": "13711235451", //手机号
    17. "qq": "10000",
    18. "register": "2016-08-15", //注册时间
    19. "regupdatetime": "-",
    20. "uid": "69239", //用户id
    21. "unitname": "-",
    22. "userip": "123.235.75.48", //ip地址
    23. "zipcode": "-"
    24. }
    25. member_regtype 用户跳转地址注册表
    26. {
    27. "appkey": "-",
    28. "appregurl": "http:www.webA.com/product/register/index.html", //注册时跳转地址
    29. "bdp_uuid": "-",
    30. "createtime": "2015-05-11",
    31. "dt":"20190722", //日期分区
    32. "dn": "webA", //网站分区
    33. "domain": "-",
    34. "isranreg": "-",
    35. "regsource": "4", //所属平台 1.PC 2.MOBILE 3.APP 4.WECHAT
    36. "uid": "0", //用户id
    37. "websiteid": "0" //对应basewebsitelog 下的siteid网站
    38. }
    39. base_ad_log 广告基础表原始json数据
    40. {
    41. "adid": "0", //基础广告表广告id
    42. "adname": "注册弹窗广告0", //广告详情名称
    43. "dn": "webA" //网站分区
    44. }
    45. base_website_log 网站基础表原始json数据
    46. {
    47. "createtime": "2000-01-01",
    48. "creator": "admin",
    49. "delete": "0",
    50. "dn": "webC", //网站分区
    51. "siteid": "2", //网站id
    52. "sitename": "114", //网站名称
    53. "siteurl": "www.114.com/webC" //网站地址
    54. }
    55. //pcentermempaymoneylog 用户支付金额表
    56. {
    57. "dn":"webA", //网站分区
    58. "paymoney":"162.54", //支付金额
    59. "siteid":"1", //网站id对应 对应basewebsitelog 下的siteid网站
    60. "dt":"20190722", //日期分区
    61. "uid":"4376695", //用户id
    62. "vip_id":"0" //对应pcentermemviplevellog vip_id
    63. }
    64. //pcentermem_vip_level_log用户vip等级基础表
    65. {
    66. "discountval": "-",
    67. "dn": "webA", //网站分区
    68. "end_time": "2019-01-01", //vip结束时间
    69. "last_modify_time": "2019-01-01",
    70. "max_free": "-",
    71. "min_free": "-",
    72. "next_level": "-",
    73. "operator": "update",
    74. "start_time": "2015-02-07", //vip开始时间
    75. "vip_id": "2", //vip id
    76. "vip_level": "银卡" //vip级别名称
    77. }

    DWS层 宽表和拉链表

    针对dws层宽表的支付金额(paymoney)和vip等级(vip_level)这两个会变动的字段生成一张拉链表,需要一天进行一次更新

    ADS报表层各指标统计

    统计通过各注册跳转地址(appregurl)进行注册的用户数

    统计各所属网站(sitename)的用户数

    统计各所属平台的(regsourcename)用户数

    统计通过各广告跳转(adname)的用户数

    统计各用户级别(memberlevel)的用户数

    统计各分区网站、用户级别下(dn、memberlevel)的top3用户

  • 相关阅读:
    如何去掉照片中多余路人?一分钟帮你搞定
    Python 反爬虫与反反爬虫
    C++项目——云备份-④-服务端配置信息模块设计与实现
    【JavaEE网络】深入理解Socket套接字及其在网络编程中的应用
    XSS之弹窗炸弹
    以数助实攻坚产业协作 蚂蚁集团数字科技业务亮相云栖大会
    Java项目:jsp房地产客户关系管理系统
    Linux的自动化脚本:使用crul命令的从某个网站获取数据(从url获取数据),并将其写入一个文件中
    K8S篇之k8s常用操作指令
    Spring 依赖注入和循环依赖
  • 原文地址:https://blog.csdn.net/wank1259162/article/details/125600428