当前位置:网站首页>数仓建模面试
数仓建模面试
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
边栏推荐
- CAS:474922-26-4,DSPE-PEG-NH2,DSPE-PEG-amine,磷脂-聚乙二醇-氨基供应
- 《中国综合算力指数》《中国算力白皮书》《中国存力白皮书》《中国运力白皮书》在首届算力大会上重磅发出
- 谷歌开源芯片 180 纳米制造工艺
- 树莓派连接蓝牙音箱
- LVS+Keepalived群集
- 从-99打造Sentinel高可用集群限流中间件
- OpenInfra Days China 2022 | SelectDB to share with you the Apache Doris in Internet advertising business practices
- Kotlin挂起函数原理是什么
- 小程序笔记3
- R语言glm函数使用频数数据构建二分类logistic回归模型,分析的输入数据为频数数据(多个分类指标对应的阴性样本和阳性样本的频数数据)、weights参数指定频数值
猜你喜欢

RecyclerView 缓存与复用机制

IDEA以多端口启动同一个服务项目

小程序笔记1

微信jsApi调用失效的相关问题

Digital-intelligent supply chain management system for chemical manufacturing industry: build a smart supply system and empower enterprises to improve production efficiency

八猴渲染器是什么?它能干什么?八猴软件的界面讲解

2022年五一数学建模C题讲解

基于 eBPF 的 Kubernetes 可观测实践

网页端IM即时通讯开发:短轮询、长轮询、SSE、WebSocket

How to make JS code unbreakable
随机推荐
C. LIS or Reverse LIS?
小程序笔记3
2022年五一数学建模C题讲解
公司自用的国产API管理神器
codeforces每日5题(均1600)-第二十八天
44. 通配符匹配 ●●● & HJ71 字符串通配符 ●●
How to make JS code unbreakable
对象实例化之后一定会存放在堆内存中?
arm交叉编译
开发一套高容错分布式系统
动态数组底层是如何实现的
面试官:可以谈谈乐观锁和悲观锁吗
树莓派温度监视关机保护脚本
Matlab画图1
使用scikit-learn计算文本TF-IDF值
【MySQL】数据库的4中隔离级别
C# Sqlite database construction and use skills
【日记】mysql数据库连接池
树莓派利用autofs自动挂载/卸载外部硬盘
leetcode/有效的回文串,含有不需要判断回文的字符