json对象的键值对中存在pii数据,该键值对存储在我的配置单元表中的一列中。是否有任何方法可以只屏蔽所需键值对的值,而不屏蔽其他键值对?
ttisahbt1#
你可以用 regexp_replace 用字符串替换json中的某些值(请参见 json_with_number_replaced 列)。更好的应用 sha256 而不是简单的替换,因为这个函数是加密强(不可逆单向函数),确定性和冲突容忍。sha256散列函数的这些属性允许您加入模糊处理的值(如果使用相同的模糊处理方法)并进行聚合。模糊处理后,您仍然可以计算不同的手机号码。看到了吗 mobile_number_obfuscated 以及 json_with_number_obfuscated 下例中的列计算:
regexp_replace
json_with_number_replaced
sha256
mobile_number_obfuscated
json_with_number_obfuscated
select json original_json, s.original_mobile_number, s.mobile_number_obfuscated, regexp_replace(s.json, '(mob_no":[\\s]?")([+]?[\\d]+)','$1xx') as json_with_number_replaced, regexp_replace(s.json, '(mob_no":[\\s]?")([+]?[\\d]+)',concat('$1',mobile_number_obfuscated)) as json_with_number_obfuscated from ( select regexp_extract(s.json, 'mob_no":[\\s]?"([+]?[\\d]+)',1) as original_mobile_number, java_method('org.apache.commons.codec.digest.DigestUtils', 'sha256Hex', regexp_extract(s.json, 'mob_no":[\\s]?"([+]?[\\d]+)',1)) mobile_number_obfuscated, s.json from (--original data select '{ "name":"John", "age":30, "car":null, "mob_no": "+99999999"}' as json )s )s; OK original_json original_mobile_number mobile_number_obfuscated json_with_number_replaced json_with_number_obfuscated { "name":"John", "age":30, "car":null, "mob_no": "+99999999"} +99999999 98ae38dddc1994179e21d104feb7b09e5627953d9fe9b9851239ac445b6de3cd { "name":"John", "age":30, "car":null, "mob_no": "xx"} { "name":"John", "age":30, "car":null, "mob_no": "98ae38dddc1994179e21d104feb7b09e5627953d9fe9b9851239ac445b6de3cd"} Time taken: 1.988 seconds, Fetched: 1 row(s)
在这个示例中,我演示了如何使用regexp\u replace替换json中某个键的值,以及如何使用sha256模糊pii数据。
1条答案
按热度按时间ttisahbt1#
你可以用
regexp_replace
用字符串替换json中的某些值(请参见json_with_number_replaced
列)。更好的应用
sha256
而不是简单的替换,因为这个函数是加密强(不可逆单向函数),确定性和冲突容忍。sha256散列函数的这些属性允许您加入模糊处理的值(如果使用相同的模糊处理方法)并进行聚合。模糊处理后,您仍然可以计算不同的手机号码。看到了吗mobile_number_obfuscated
以及json_with_number_obfuscated
下例中的列计算:在这个示例中,我演示了如何使用regexp\u replace替换json中某个键的值,以及如何使用sha256模糊pii数据。