超多分析结果表 简单字段关联 生成大宽表 的 初步猜想

业务背景:

1. 广告投放涉及到用户的诸多特征

2. 用户特征通常不在同一个表中

3. 通过各种算法逻辑会产生很多的中间表

4. 各中间表的唯一标志基本为单一字段,通常会员标志或设备标志(两者一般取较新的一对组合使用)

5. 进入算法(或机器学习)前,需要一个统一的大宽表作为入参方便取值

 

业务解析:

1. 若干(通常10+)结果表

2. 每张表的数据量都很大(千万-亿)

3. 每个表都有同样的唯一标志字段(具体内容不同)

 

结果表产生过程隐藏条件:

1. 存在一张主表,包含有所有可能的唯一标志

 

处理流程:

1. 对所有表的唯一标志数字化

2. 对数字化后的各表进行排序

3. 遍历主表

3.1. 取出主表一条记录,与其他各表取出的一条比较

3.2  如果主表唯一标志和各表相等,将各表数据并入主表,然后取出下一条记录

3.3  如果唯一标志不想等,使用默认值并入主表,维持当前记录

3.4  将合并的记录记下,进入下次循环

4. 完成主表遍历后,写入磁盘

 

猜想:

1. 使用插入排序后,经历两次主表遍历读写便可完成大宽表的合成

2. 和使用left join相比,避开指数级增长的子表遍历

3. 和使用union all相比,避开了最终的分组求和过程

 

4. 在子表数据量级不大且数量不多时,使用left join书写较为方便

5. 在主表基数不是很大时,union all不会在分组求和花费过多时间

posted @ 2019-01-23 22:51  冬临  阅读(1479)  评论(0编辑  收藏  举报