Amazon web services 在使用AWS管道从S3传输到红移时展平JSON文件
我在S3上有json文件,我想把它传输到红移。一个问题是文件包含以下格式的条目:Amazon web services 在使用AWS管道从S3传输到红移时展平JSON文件,amazon-web-services,amazon-s3,amazon-redshift,amazon-data-pipeline,Amazon Web Services,Amazon S3,Amazon Redshift,Amazon Data Pipeline,我在S3上有json文件,我想把它传输到红移。一个问题是文件包含以下格式的条目: { "user_id":1, "metadata": { "connection_type":"WIFI", "device_id":"1234" } } 在将其保存为红移之前,我希望将文件展平以包含列: user_id | connection_type | device_id 我如何使用AWS
{
"user_id":1,
"metadata":
{
"connection_type":"WIFI",
"device_id":"1234"
}
}
在将其保存为红移之前,我希望将文件展平以包含列:
user_id | connection_type | device_id
我如何使用AWS数据管道实现这一点?
是否存在可以将json转换为所需格式的活动?我认为TransformSQL不支持json字段。您不需要将其展平。定义
jsonpaths
config文件后,可以使用copy
命令加载它,以便轻松地从每个json对象提取列值
使用您的结构,您可以在S3中创建一个文件(S3://bucket/your_jsonpath.json
),如下所示:
然后在红移中运行类似的操作:
copy your_table
from 's3://bucket/data_objects.json'
credentials '<aws-auth-args>'
json 's3://bucket/your_jsonpaths.json';
复制您的_表
来自“s3://bucket/data_objects.json”
“凭据”和。是否可以为放入S3存储桶中的每个文件自动执行复制命令?可以通过SDK触发副本吗?如果是这样的话,应该可以编写一个Lambda函数来触发该命令。您可以在S3存储桶上启用SNS通知并从中触发Lambda。看看这个:和
copy your_table
from 's3://bucket/data_objects.json'
credentials '<aws-auth-args>'
json 's3://bucket/your_jsonpaths.json';