数据仓库知识

一、数据流转

数据从接入到应用的过程

1、用户在客户端的行为数据会通过日志收集、操作记录到数据库中。这一步也涉及到埋点

2、数仓对不同的数据源数据进行接入(mysql、kafka、业务系统等)

3、数据仓库对数据进行清洗、转换、关联、指标开发等完成数据宽表、标签宽表的开发

4、数分/算法使用数仓开发宽表进行实验、各类分析方法、可视化、算法模型开发,进行整体数据应用;

5、业务侧使用分析好的数据进行投放、拉新、促活等操作

二、数据仓库的概念

数据基建:承接各种数据源,通过对数据源数据采集,将不同源数据接入到数据仓库中统一处理

数据资产:数据宽表、数据明细表的建设

数据服务:通过指标体系、用户标签、数据门户、接口等方式统一管理数据

数据应用:为运营、风控等业务提供数据支撑,包括看板大屏、a/b实验、专题分析报告等

三、数据域及主题域

数据域是基于业务含义或技术特性进行分类,同一数据域中的数据共享相同的业务定义和规则,例如:客户数据域、产品数据域等

主题域是从业务战略角度对信息的划分,代表企业关注的主要业务领域,比数据域更宏观,一个主题域可能包含多个数据域。例如:销售主题域、供应链主题域等

四、数仓分层

4.1 为什么要数仓分层

(1)清洗数据结构:每一层有对应的作用,在使用时更好定位与了解

(2)数据血缘追踪:清晰知道上下游,便于排查问题,知道下游哪个模块在使用,提高开发效率及后期维护,尤其是在找报错和指标地来源时

(3)减少重复开发:完善好中间层,减少后期不必要的开发,从而减少资源消耗,保障口径一致

(4)复杂问题简单化:将复杂的问题拆解成多个步骤来完成,每一层处理单一步骤,当数据出现问题,只需要从单个问题去解决

4.2 如何分层及每层的作用

ODS(接入层):从各数据源将数据同步到数仓,不做任何数据处理,保留原始数据

DIM(维度层):用于维度管理

DWD(明细层):对ODS层数据进行关联,清洗,维度退化(维度表中维度数据放入明细表),转换,主题域建设

DWM(轻度汇总层):DWD层的生产数据进行整体关联,形成一张大的明细宽表

DMS(汇总层) :按照主题域、颗粒度(例如买家、卖家)划分,按照周期粒度、维度聚合形成指标较多的宽表。在DWS层完成指标口径统一及沉淀

ADS(数据应用层):按照应用域,颗粒度划分(例如买家、卖家)划分,按照应用主题将对应数据标签补充至应用层,最终形成用户画像及专项应用

五、数仓模型介绍

维度建模:按照事实表、维度表来构建数据仓库模型的方法,根据维度表与事实表之间的链接方式完成数据表开发。

模型建设五要素:

  1. 数据域/主题域:数据域对当前业务场景或业务sop进行拆分完成建设,主题域则是通过业务使用场景去做
  2. 事实表设计:围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量;
  3. 维度:对当前场景分析角度描述及补充
  4. 颗粒度:数据域下场景用户再细分(买家和卖家),基于MECE法则,拆到不可拆分状态
  5. 度量值:对场景下数值类型的数据记录

六、增量与全量

数据分区:记录了当天的数据,可以通过分区快速定位自己数据,基本是日期

全量数据(对源数据全部覆盖)
增量数据(对源数据进行分区式覆盖)

df为日全量数据,di为日增量数据

七、数据模型规范

7.1 表命名规范

ODS层(接入层):全量:ods__{业务数据库名}_{业务数据表名}_df/di(df为日全量数据,di为日增量数据)

DWD层(明细层):dwd_{数据域}{二级数据域}{业务过程(不清楚或没有写detail)}_df/di(df为日全量数据,di为日增量数据)

DIM层(维度层):dim_业务域(没有业务相关可不写)__{维度定义}(例如日期写date)

DWM层(明细宽表层):dwd_{数据域}{二级数据域}{业务过程(不清楚或没有写detail)}_df/di(df为日全量数据,di为日增量数据)

DWS层(汇总层):dws_{数据域}{二级数据域}{颗粒度}(例如买家/卖家){业务过程}(如果没过程写target){周期粒度}(例如近30天写30d、一个月写1m、90天写90d等)

ADS层(应用层):ads_{一级主题域}(例如风控叫risk、营销叫mkt){二级主题域}{颗粒度}(例如买家/卖家){业务过程}{调度周期}(例如1天调度一次写1d)

7.2 字段命名

是否xxxxx用户,类型字段命名规范:is_{内容}

枚举值类型字段命名规范:xxxx_type

时间戳类型字段命名规范:xxx_date(日期),xxx_time(时间)

周期指标命名:{内容}_{时间描述}(如最近一次last1,最近两次last2,历史his,最近第二次last2nd)_date、最近180天 180d

百分比命名:{内容}_rate

数值类型(整型)命名:{内容}cnt{周期}(周期看情况加)

数值类型(小数)金额命名:{内容}amt{周期}(周期看情况加)

相关推荐
程序员梅雨17 小时前
【从零开始学习数据仓库 | 第二篇】: 拉链表 & 数仓分层
大数据·数据仓库·学习
roman_日积跬步-终至千里20 小时前
数仓开发的三层责任:业务定义、模型设计与 SQL 实现
数据库·数据仓库·sql·数据建模
geovindu2 天前
SQL Data Sampling and Approximation Techniques using postgreSQL 18
大数据·数据库·数据仓库·sql·postgresql·数据库开发·数据库架构
程序员梅雨3 天前
【从零开始学习数据仓库 | 第一篇】:维度建模理论
大数据·数据仓库·学习·阿里云·数据分析
棣廷3 天前
初识数据仓库——数仓分层到DataX数据采集
数据仓库
棣廷3 天前
初识Hive(2)
数据仓库·hive·hadoop
geovindu4 天前
Pivoting and Unpivoting Data in SQL using postgreSQL 18
大数据·数据库·数据仓库·sql·postgresql·数据库开发·数据库架构
数据库小学妹4 天前
OLAP数据库怎么选?看清OLTP、数仓、湖仓边界
数据仓库·mpp·列式存储·联机分析处理·数据库选型·olap数据库
程序 代码狂人4 天前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法