数据仓库中的数据表,往往是分层管理、分层计算的;
所谓分层,具体来说,就是将大量的数据表按照一定规则和定义来进行逻辑划分;
ADS层: 应用服务层DWS层:数仓汇总层DWD层:数仓明细层ODS层:操作数据(最原始的数据)层 -- 贴源层DIM层:存储维表ODS层:对应着外部数据源ETL到数仓体系之后的表!
DWD层:数仓明细层;一般是对ODS层的表按主题进行加工和划分;本层中表记录的还是明细数据;
DWS层:数仓汇总层;
ADS层: 应用层,主要是一些结果报表!
分层的意义:数据管理更明晰!运算复用度更高!需求开发更快捷!便于解耦底层业务(数据)变化!
将json打平,解析称扁平格式
boolean,null,日期...
gbs解析
GEOHASH码
IP解析
ip2region
为每一个用户生成一个全局唯一标识
只使用设备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
按照guid,sessionid求起始时间,结束时间,访问页数,新老标记,地域,入口页,跳出页
逻辑:按照guid,sessionid分组得到起始,结束时间,新老标记,访问页数,LEFT JOIN窗口guid,sessionid ORDER BY timestamp
