【问题标题】:Flattening JSON file while transferring from S3 to RedShift using AWS Pipeline使用 AWS Pipeline 从 S3 传输到 RedShift 时展平 JSON 文件
【发布时间】:2016-06-20 21:44:55
【问题描述】:

我在 S3 上有 json 文件,我想将它传输到 Redshift。一个问题是该文件包含以下格式的条目:

{
  "user_id":1,
  "metadata":
            {
              "connection_type":"WIFI",
              "device_id":"1234"
             }
 }

在将其保存到 Redshift 之前,我想将文件展平以包含列:

user_id | connection_type | device_id

如何使用 AWS Data Pipeline 执行此操作? 是否有可以将 json 转换为所需形式的活动?我不认为transform sql会支持json字段。

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-redshift amazon-data-pipeline


    【解决方案1】:

    您不需要将其展平。您可以在定义 jsonpaths 配置文件后使用 copy 命令加载它,以便轻松地从每个 json 对象中提取列值。

    使用您的结构,您将在 S3 (s3://bucket/your_jsonpaths.json) 中创建一个文件,如下所示:

    {
        "jsonpaths": [
            "$.user_id",
            "$.metadata.connection_type",
            "$.metadata.device_id"
        ]
    }
    

    然后你会在 Redshift 中运行这样的东西:

    copy your_table
    from 's3://bucket/data_objects.json'
    credentials '<aws-auth-args>'
    json 's3://bucket/your_jsonpaths.json';
    

    如果您有问题,请查看 stv_load_errors 表中的内容。

    查看 Redshift copy commandexamples

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多