一、背景
对于一些表数据包含的铭感字段需要id 化处理,比如说:用户搜索了某个关键词,或者用户的购物地址是某个城市,这种都需要进行模糊化处理,但是直接模糊化处理不利于使用,比如说:在三四线城市(村镇收货地址)的用户可能是下沉用户,或者搜索过美妆相关的关键词用户认为大概率是女性用户,但是这种又不太方便对外进行展示,所以需要进行id化
认为地址位置id 为3和4的用户其实有非常相似的特征的。
二、实现思路
核心思路:用字典表和地址信息表进行关联,自动生成新的字典表,然后拿字典表和地址信息表进行匹配实现位置信息id化
三、具体实现
(1)首先构造一个字典表
表:location_dict 字段:location_name,location_id
(2)拿到字典表的最大id
MAX_ID=$(hive -e "select COALESCE(max(location_id), 0) from location_dict;") echo "Max id : ${MAX_ID}"
(3)继续自动生成id,写入字典表
insert overwrite table location_dict partition (dt='${target_date}') select a.location, (row_number() over (order by a.location desc) + ${MAX_ID}) as location_id from (select * from location_info where dt='${target_date}') a left outer join location_dict b on a.location = b.location where b.location is null;
(4)生成id化之后的数据表
insert overwrite table location_result partition (dt='${target_date}') select a.location,b.location_id from (select * from location_info where dt='${target_date}') a join location_dict b on a.location = b.location
四、总结
敏感数据id化在一些数据安全场景中会经常用到,比如说:电商或者物流的收货地址信息、用户安装的app信息列表均可以考虑进行id化处理