基于历史所有分区数据(ods_iflyaiui_sn_uid_relation ) 1、uid不为'' 2、sn是以133开头 3、逻辑主键就应该是sn,uid 生成一张SN和uid的映射表,每天生成全量数据 dw_iflyaiui_sn_uid_relation
时间: 2023-12-03 10:03:11 浏览: 206
可以通过以下步骤基于历史所有分区数据(ods_iflyaiui_sn_uid_relation)生成每天的全量数据dw_iflyaiui_sn_uid_relation:
1. 创建一个用于存储全量数据的表dw_iflyaiui_sn_uid_relation,包含sn和uid两列,以及日期列:
```
CREATE TABLE dw_iflyaiui_sn_uid_relation (
sn string,
uid string,
dt string
)
PARTITIONED BY (dt)
```
2. 通过以下查询语句将符合条件的数据插入到全量表中:
```
INSERT OVERWRITE TABLE dw_iflyaiui_sn_uid_relation PARTITION (dt = '2022-01-01')
SELECT sn, uid, '2022-01-01' as dt
FROM ods_iflyaiui_sn_uid_relation
WHERE uid != '' AND sn LIKE '133%'
```
注意:这里的日期是示例,实际情况中应该根据需要修改日期。
3. 为了每天生成全量数据,可以编写一个脚本或调度任务,每天自动执行以上步骤,生成当天的全量数据。例如,使用shell脚本和crontab定时任务实现:
```
#!/bin/bash
dt=`date +%Y-%m-%d`
hive -e "INSERT OVERWRITE TABLE dw_iflyaiui_sn_uid_relation PARTITION (dt = '$dt')
SELECT sn, uid, '$dt' as dt
FROM ods_iflyaiui_sn_uid_relation
WHERE uid != '' AND sn LIKE '133%' "
```
然后在crontab中设置每天自动执行脚本:
```
0 0 * * * /path/to/script.sh
```
这样每天就可以在dw_iflyaiui_sn_uid_relation表中生成当天的全量数据了。
阅读全文