我正在使用此查询
CREATE EXTERNAL TABLE test.post(
edge_media_to_tagged_user struct<
"edges": array<
"node": struct<
"user": struct<
id:bigint,
username:text
>,
x: float(24),
y: float(24)
>
>
>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://bucket/test';
上面的查询以某种方式给了我
ERROR: syntax error at or near ":"
LINE 4: "node": struct<
删除或添加冒号和/或双引号仍然会给我错误。
感谢您的帮助!
答案 0 :(得分:1)
我想这可能是由以下原因引起的:
"edges": array<
"node": struct<
一个数组不包含命名项,因此当它在"node":
定义内发现array
时,它可能会失败。
答案 1 :(得分:1)
Answer from John给出了重要提示,此代码有效
CREATE EXTERNAL TABLE likes_schema_test.post88(
edge_media_to_tagged_user struct<
"edges": array<struct< <-- change here
"node": struct<
"user": struct<
full_name:text,
id:bigint,
is_verified: boolean,
username:text
>,
x: float(24),
y: float(24)
>>
>
>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://follower-dumper-testing/post_test';
将"node"
更改为'node'
会产生语法错误。
答案 2 :(得分:-1)
不幸的是,Redshift不支持struct数据类型。 here可以找到Redshift支持的数据类型的完整列表。
编辑:普通 Redshift不支持结构。 Redshift Spectrum确实如此。