Redshift从Super字段提取指定JSON值遇空值问题求助
Redshift Super字段提取嵌套JSON值解决方案
针对你遇到的Redshift Super字段存储DynamoDB格式JSON,无法通过转varchar或JSON_SERIALIZE提取目标值的问题,直接利用Super类型的原生嵌套访问能力即可解决,无需先转字符串。
直接提取目标字段的SQL示例
假设你的Super字段名为event_data,表名为your_table,执行以下SQL即可获取对应值:
SELECT event_data.dynamodb.Keys.prospectId.S AS prospect_id, event_data.dynamodb.NewImage.prospectName.S AS prospect_name, event_data.dynamodb.NewImage.gaSessionId.S AS ga_session_id FROM your_table;
处理可能的空值场景
如果部分记录存在嵌套字段缺失的情况,可使用COALESCE函数返回默认值:
SELECT COALESCE(event_data.dynamodb.Keys.prospectId.S, '无数据') AS prospect_id, COALESCE(event_data.dynamodb.NewImage.prospectName.S, '无数据') AS prospect_name, COALESCE(event_data.dynamodb.NewImage.gaSessionId.S, '无数据') AS ga_session_id FROM your_table;
为什么转varchar/JSON_SERIALIZE会为空?
Redshift的Super类型专为半结构化数据设计,直接转varchar或使用JSON_SERIALIZE可能因字段嵌套层级或内部存储格式问题返回空值,而直接通过点符号访问嵌套属性是官方推荐的正确方式,能直接读取对应层级的原始值。
内容的提问来源于stack exchange,提问作者Biswa Patra
相关产品推荐
相关产品推荐

