zoukankan      html  css  js  c++  java
  • 电子商务大数据平台实训系统业务数据仓库总结

    1.1 熟悉8表的业务字段,每张记住3-5个字段

    1.2 数仓理论

    1表的分类:实体表、维度表、事务型事实表、周期型事实表

    实体表

    实体表,一般是指一个现实存在的业务对象,比如用户,商品,商家,销售员等等。

    用户表:

    用户id

    姓名

    生日

    性别

    邮箱

    用户等级

    创建时间

    1

    张三

    2011-11-11

    zs@163.com

    2

    2018-11-11

    2

    李四

    2011-11-11

    ls@163.com

    3

    2018-11-11

    3

    王五

    2011-11-11

    中性

    ww@163.com

    1

    2018-11-11

    维度表

    维度表,一般是指对应一些业务状态,编号的解释表。也可以称之为码表。

    比如地区表,订单状态,支付方式,审批状态,商品分类等等。

    订单状态表:

    订单状态编号

    订单状态名称

    1

    未支付

    2

    支付

    3

    发货中

    4

    已发货

    5

    已完成

    商品分类表:

    商品分类编号

    分类名称

    1

    服装

    2

    保健

    3

    电器

    4

    图书

     事务型事实表

    事务型事实表,一般指随着业务发生不断产生的数据。特点是一旦发生不会再变化。

    一般比如,交易流水,操作日志,出库入库记录等等。

    交易流水

    编号

    对外业务编号

    订单编号

    用户编号

    支付宝交易流水编号

    支付金额

    交易内容

    支付类型

    支付时间

    1

    7577697945

    1

    111

    QEyF-63000323

    223.00

    海狗人参丸1

    alipay

    2019-02-10 00:50:02

    2

    0170099522

    2

    222

    qdwV-25111279

    589.00

    海狗人参丸2

    wechatpay

    2019-02-10 00:50:02

    3

    1840931679

    3

    666

    hSUS-65716585

    485.00

    海狗人参丸3

    unionpay

    2019-02-10 00:50:02

    。。。

    。。。

    。。。

    。。。

    。。。

    。。。

    。。。

    。。。

    。。。

    周期型事实表

    周期型事实表,一般指随着业务发生不断产生的数据。

    与事务型不同的是,数据会随着业务周期性的推进而变化。

     比如订单,其中订单状态会周期性变化。再比如,请假、贷款申请,随着批复状态在周期性变化。

    订单表:

    订单编号

    订单金额

    订单状态

    用户id

    支付方式

    支付流水号

    创建时间

    操作时间

    1

    223.00

    2

    111

    alipay

    QEyF-63000323

    2019-02-10 00:01:29

    2019-02-10 00:01:29

    2

    589.00

    2

    222

    wechatpay

    qdwV-25111279

    2019-02-10 00:05:02

    2019-02-10 00:05:02

    3

    485.00

    1

    666

    unionpay

    hSUS-65716585

    2019-02-10 00:50:02

    2019-02-10 00:50:02

    。。。

    。。。

    。。。

    。。。

    。。。

    。。。

    。。。

    。。。

    2)表的同步策略:

    实体(全量)

    维度表(全量

    事务型事实表(增量

    周期型事实表(新增和变化、拉链表)

    3范式理论:

    一范式原则:属性不可切割;

    二范式原则:不能存在部分函数依赖;

    范式原则:不能存在传递函数依赖;

    4数仓维度建模模型

    星型模型维度一层;

    雪花模型维度多层;

    星座模型多个事实表;

    性能优先选择星型模型,灵活优先选择雪花模型。企业中星型模型多一些。

    1.3 Sqoop参数

    /opt/module/sqoop/bin/sqoop import

    --connect

    --username

    --password

    --target-dir

    --delete-target-dir

    --num-mappers

    --fields-terminated-by  

    --query   "$2" ' and $CONDITIONS;'

    1.3.1 Sqoop导入导出Null存储一致性问题

    Hive中的Null在底层是以“N”来存储,而MySQL中的Null在底层就是Null,为了保证数据两端的一致性。在导出数据时采用--input-null-string--input-null-non-string两个参数。导入数据时采用--null-string--null-non-string

    1.3.2 Sqoop数据导出一致性问题

    1)场景1:如Sqoop在导出到Mysql时,使用4Map任务,过程中有2个任务失败,那此时MySQL中存储了另外两个Map任务导入的数据,此时老板正好看到了这个报表数据。而开发工程师发现任务失败后,会调试问题并最终将全部数据正确的导入MySQL,那后面老板再次看报表数据,发现本次看到的数据与之前的不一致,这在生产环境是不允许的。

    官网http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html

    Since Sqoop breaks down export process into multiple transactions, it is possible that a failed export job may result in partial data being committed to the database. This can further lead to subsequent jobs failing due to insert collisions in some cases, or lead to duplicated data in others. You can overcome this problem by specifying a staging table via the --staging-table option which acts as an auxiliary table that is used to stage exported data. The staged data is finally moved to the destination table in a single transaction.

    –staging-table方式

    sqoop export --connect jdbc:mysql://192.161.137.10:3306/user_behavior --username root --password 123456 --table app_cource_study_report --columns watch_video_cnt,complete_video_cnt,dt --fields-terminated-by " " --export-dir "/user/hive/warehouse/tmp.db/app_cource_study_analysis_${day}" --staging-table app_cource_study_report_tmp --clear-staging-table --input-null-string 'N'

    2)场景2:设置map数量为1个(不推荐,面试官想要的答案不只这个)

    多个Map任务时,采用–staging-table方式,仍然可以解决数据一致性问题。

    1.3.3 Sqoop底层运行的任务是什么

    只有Map阶段,没有Reduce阶段任务。

    1.3.4 Sqoop数据导出的时候一次执行多长时间

    Sqoop任务5分钟-2个小时都有取决于数据量。

    1.4 需求指标分析

    1GMV:一段时间内的网站成交金额(包括付款和未付款)

    计算:基于用户行为宽表,对订单总金额进行sum

    2)转化率(先分别计算分子和分母再相除

    1)新增用户占活跃用户的比率;

    cast(sum( uc.nmc)/sum( uc.dc)*100 as decimal(10,2))  new_m_ratio

    2)下单人数占活跃用户的比率;

    sum(if(order_count>0,1,0)) order_count

     

    cast(ua.order_count/uv.day_count*100 as  decimal(10,2)) visitor2order_convert_ratio

    3)支付人数占下单人数比率

    sum(if(payment_count>0,1,0)) payment_count

     

    cast(ua.payment_count/ua.order_count*100 as  decimal(10,2)) order2payment_convert_ratio

    3)复购率(先分别计算分子和分母再相除

    sum(if(mn.order_count>=1,1,0)) buycount,

    sum(if(mn.order_count>=2,1,0)) buyTwiceLast,

    sum(if(mn.order_count>=2,1,0))/sum( if(mn.order_count>=1,1,0)) buyTwiceLastRatio,

    sum(if(mn.order_count>=3,1,0))  buy3timeLast  ,

    sum(if(mn.order_count>=3,1,0))/sum( if(mn.order_count>=1,1,0)) buy3timeLastRatio ,

    1.5 拉链表

    1)通过关系型数据库的create timeoperation time获取数据的新增和变化。

    2)用临时拉链表解决Hive了中数据不能更新的问题。

    1.6 项目中表关系

     

  • 相关阅读:
    红帽7 创建网络会话
    红帽7 Iptables与Firewalld防火墙
    红帽7 配置网卡
    红帽7 LVM逻辑卷管理器
    红帽7 RAID磁盘冗余阵列
    红帽7 磁盘划分
    wpf学习一(转)
    选中当前点击的位置
    c#客显
    两个程序间的通信有三种
  • 原文地址:https://www.cnblogs.com/20183544-wangzhengshuai/p/15331926.html
Copyright © 2011-2022 走看看