数仓ODS,DWD,DWS层

tech2026-04-16  2

数据仓库中的数据表,往往是分层管理、分层计算的;

所谓分层,具体来说,就是将大量的数据表按照一定规则和定义来进行逻辑划分;

ADS层: 应用服务层DWS层:数仓汇总层DWD层:数仓明细层ODS层:操作数据(最原始的数据)层 -- 贴源层DIM层:存储维表

ODS层:对应着外部数据源ETL到数仓体系之后的表!

DWD层:数仓明细层;一般是对ODS层的表按主题进行加工和划分;本层中表记录的还是明细数据;

DWS层:数仓汇总层;

ADS层: 应用层,主要是一些结果报表!

分层的意义:数据管理更明晰!运算复用度更高!需求开发更快捷!便于解耦底层业务(数据)变化!

ODS:操作数据层

主要作用:直接映射操作数据(原始数据),数据备份;建模方法:与原始数据结构保持完全一致存储周期:相对来说,存储周期较短;视数据规模,增长速度,以及业务的需求而定;对于埋点日志数据ODS层存储,通常可以选择3个月或者半年;存1年的是土豪公司(或者确有需要)

DWD层:数仓明细层

数据内容:对ODS层数据做ETL处理后的扁平化明细数据存储格式:以orc/parquet文件格式存储存储周期6个月

需求

清洗过滤

去除json数据中的废弃字段(前端开发人员在埋点设计方案变更后遗留的无用字段)过滤json格式不正确的(脏数据)过滤deviceid及account为空的记录过滤缺少关键字段的记录过滤日志中时间段错误的记录过滤爬虫请求(通过useragent标识来分析)

数据解析

将json打平,解析称扁平格式

SESSION分割

数据规范处理

boolean,null,日期...

维度集成

gbs解析

GEOHASH码

IP解析

ip2region

ID_MAPPING

为每一个用户生成一个全局唯一标识

只使用设备ID

适用场景:适合没有用户注册体系,或者极少数用户会进行多设备登录的产品,如工具类产品、搜索引擎、部分小型电商等

关联设备ID和登录ID(一对一)

 成功关联设备 ID 和登录 ID 之后,用户在该设备 ID 上或该登录 ID 下的行为就会贯通,被认为是一个 全局 ID 发生的。在进行事件、漏斗、留存等用户相关分析时也会算作一个用户

关联设备ID和登录ID(多对一)

一个用户在多个设备上进行登录是一种比较常见的场景,比如 Web 端和 App 端可能都需要进行登录。支持一个登录 ID 下关联多设备 ID 之后,用户在多设备下的行为就会贯通,被认为是一个ID 发生的

 关联设备ID和登录ID(动态修正)

基本原则,与方案3相同

修正之处,一个设备ID被绑定到某个登陆ID(A)之后,如果该设备在后续一段时间(比如一个月内)被一个新的登陆ID(B)更频繁使用,则该设备ID会被调整至绑定登陆ID(B)

新老访客标记

如果数据量过大,可以使用reduce端join实现,或bloomfilter实现

结果保存

数据输出为parquet格式,压缩编码用snappy

DWS层

对数据做轻度聚合

流量概况主题

   按照guid,sessionid求起始时间,结束时间,访问页数,新老标记,地域,入口页,跳出页

  逻辑:按照guid,sessionid分组得到起始,结束时间,新老标记,访问页数,LEFT JOIN窗口guid,sessionid ORDER BY timestamp

ADS

纬度建模

星型模式雪花模型星座模型
最新回复(0)