当前位置:网站首页>数仓建模面试
数仓建模面试
2022-08-04 17:49:00 【大数据小理】
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
边栏推荐
- Cholesterol-PEG-Maleimide,CLS-PEG-MAL,胆固醇-聚乙二醇-马来酰亚胺一种修饰性PEG
- R语言ggplot2可视化:使用patchwork包的plot_layout函数将多个可视化图像组合起来,nrow参数指定行的个数、byrow参数指定按照列顺序排布图
- 区间贪心(区间合并)
- 树莓派安装samba用来共享文件
- 【MySQL】数据库的4中隔离级别
- hi, 请问下这是什么问题, 我看官网的example就是mysql的, 咋提示不支持?
- 树莓派通过API向企业微信推送图文
- Interval greedy (interval merge)
- 【论文阅读】Decision Transformer: Reinforcement Learning via Sequence Modeling
- 两个对象相同数据赋值
猜你喜欢
随机推荐
Thrift安装配置
树莓派连接蓝牙音箱
clickhouse online and offline table
荣耀互联对外开放,赋能智能硬件合作伙伴,促进全场景生态产品融合
dotnet core 使用 CoreRT 将程序编译为 Native 程序
软件测试高频面试题真实分享/网上银行转账是怎么测的,设计一下测试用例。
第一章 对象和封装
网页端IM即时通讯开发:短轮询、长轮询、SSE、WebSocket
如何让 JS 代码不可断点
【web自动化测试】Playwright快速入门,5分钟上手
使用scikit-learn计算文本TF-IDF值
电源测试系统-ATE电源测试系统-ACDC电源模块测试系统NSAT-8000
How to make JS code unbreakable
R语言glm函数使用频数数据构建二分类logistic回归模型,分析的输入数据为频数数据(多个分类指标对应的阴性样本和阳性样本的频数数据)、weights参数指定频数值
leetcode 14. 最长公共前缀
asp dotnet core 通过图片统计 csdn 用户访问
小程序笔记2
mmdetection/mmdetection3d多机多卡训练
2022年7月31日 暑假第三周总结
设置表头颜色