数仓建模面试

43 篇文章 7 订阅
25 篇文章 0 订阅

1.数仓是怎么建模的?
a. mysql->EZDML->根据外键把所有表关联起来

b. ods层
保持数据原貌不做任何修改,数据备份
Snappy压缩, 压缩速率是最高的 》 LZO》Gzip, 但是不支持文件切片,parquet列式存储,ORC是采用行列存储的,ORC的对比parquet压缩速率要高,导入速率也是最快的,可以考虑后期换成ORC
创建分区表 ,防止全表扫描

c. DWD
1.选择业务
要根据ADS指标去选,
2.声明粒度
其实就是一行数据干了什么事 ? 一行信息代表一次下下单,一天的下单,一个月的下单,一般选择最小粒度,别聚合
3.确认维度
维度:时间,地域,用户,产品维度
4.确认事实
确认事实表的度量值: 比如,次数,金额,个数等
5.维度建模, 采用维度建模的星型模型,事实表为一级维度
6.维度退化:将产品表进行拆分,产品表,资源池表,地区维度
7.spark sql数据清洗,空值过滤,脱敏等,清洗到万分之一
8.snappy压缩+ 列式存储

DWS层:数据汇总层
宽表
1.怎么确定宽表?
站在维度的角度去看事实
2.宽表的字段是怎么来的呢?
站在维度的角度去看事实表的度量值

DWT:主题宽表
时间区间,业务事实的累计,这一层只保留三天数据,开始时间,结束时间

ads指标层
报表
指标:
1.用户活跃:在启动日志中统计不同设备的ID出现的次数,去重
2.用户新增:用户活跃表left join新增表,用户新增表中mid为空,即为用户新增
3.用户活跃:留存用户=前一天新增 join 今天的活跃, 今天的最后一次登陆日期为前一天的用户就是留存用户 留存率 = 留存用户/ 前一天新增用户

主维表:
1.产品表 opm_service_info
相关维表:opm_service_template (产品模板表) opm_serivce_atrr_template(产品属性表),(多值属性,key v存储)
2.用户表 opm_user_user
相关维表:客户表,客户组织信息表:客户表:opm_customer
3.资源池表:opm_pool
4.用户区域表

DWS主题宽表来源
登陆次数: page_log计算user_id和最后登陆的页面不等于null
加购物车次数,商品收藏次数:动作日志表(action_log)判断 add页面参数,sum if进行聚合
用户点击备案次数:
用户操作云主机次数:
用户硬盘扩容次数等100多个行为日志
订单相关:订单事实表里面取数

DWT:(全量用户,保留2天数据)
登陆: 最近1/7/30登陆次数,登陆天数, login_count次数累加
累计登陆次数: sum(login_count)
首日活跃: 登陆日期最小值,需要查询用户维度表的create_time 9999分区
末日活跃: 登陆日期最大值
下单:
首日下单:min(if 订单次数》0)
末日下单:max(if 订单金额大于0)
统计:1/7/30 sum(if(日期< dateAdd())) 最后 用用户维度表left join nvl(count ,0)

ads:
用户行为统计: last ,pageId 不能存在环,桑基图,获取下一行的数据 ,然后加上id,避免环,然后通过row_number拼接成序号

用户指标统计:
划分数据域:
指标:
最近1日、7日、30日
新注册用户数: 找出每个用户的登陆日期

新增下单用户数:找出每个用户的首次下单日期

下单总金额:统计订单当天的最后总金额

下单用户数:使用sum(if()) 统计末次下单金额不为空

活跃用户中未下单用户数:使用sum(if)求末次最后金额等于0 并且最后登陆日期=今天的

流失用户数(user_churn_count):七日前活跃,最近七日均未活跃, 这个很简单, 日期=今天,并且最后一次登陆时间为七天前

回流用户数:之前的流失用户,在今天活跃了 ,, 先求今天活跃用户数,再求出前一天的用户并且最后登陆时间为六天的数据,join后求count()

用户行为漏洞分析:
政企用户 互联网用户 私有云用户 ——》

维度:
政企用户id
私有云用户id
互联网用户id

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据小理

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值