Redshift基于Kinesis流创建物化视图时SUPER类型导航报错
Redshift自动刷新物化视图SUPER类型字段导航报错解决
问题原因
你当前的SQL直接对原始字符串类型的kinesis_data字段进行嵌套点导航,但该字段并未被解析为SUPER类型;即便你用JSON_PARSE生成了SUPER类型的data字段,也没有基于这个字段去访问嵌套属性,而是继续操作原始字符串字段,因此触发Navigation on column data is not allowed as its super type错误。
修正方案
需要基于解析后的SUPER类型字段进行嵌套属性访问,同时遵循Redshift的SUPER类型导航语法:
- 先用
JSON_PARSE将字符串类型的kinesis_data转换为SUPER类型 - 对SUPER类型的嵌套字段,使用点语法+双引号包裹带特殊字符/大小写敏感的键,或使用方括号语法
修正后的SQL语句:
CREATE MATERIALIZED VIEW test_sch."new_vw" AUTO REFRESH YES AS SELECT approximate_arrival_timestamp, JSON_PARSE(kinesis_data) as data, data.dynamodb."Keys"."Id"."S" as prospectId, data.dynamodb."NewImage"."Name"."S" as prospectName, data.dynamodb."NewImage"."SessionId"."S" as gaSessionId FROM kds_schema."test-stream-dev" WHERE CAN_JSON_PARSE(kinesis_data);
额外说明
如果键名不存在大小写敏感或特殊字符,也可以简化为方括号语法,效果一致:
data["dynamodb"]["Keys"]["Id"]["S"] as prospectId
内容的提问来源于stack exchange,提问作者Anand
相关产品推荐
相关产品推荐

