Redshift Spectrum在创建嵌套数据时出现语法错误

时间:2019-06-20 16:20:54

标签: amazon-web-services amazon-redshift amazon-redshift-spectrum

我正在使用此查询

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<

删除或添加冒号和/或双引号仍然会给我错误。

感谢您的帮助!

3 个答案:

答案 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确实如此。