0

我们正在使用数据管道将数据从 s3 推送到 amazon redshift 表。我们正在使用 JSON 推送数据

{
"jsonpaths": [
    "$['data1']",
    "$['data1']",
    "$['data1']['data1']",
    "$['data1']['data1']",
    "$['data1']['data1']",
    "$['data1']['data1']",
    "$['data1']",
    "$['data1']",
    "$['data1']",
    "$['data1']['data1']",
    "$['data1']['data1']"
 ]}

我最近想在我的 redshift 表中添加 created_at 应该采用当前时间戳。我已经在我的 redshift 表中添加了带有默认值的列到当前时间戳。我没有在这个列的 json 映射文件中定义(原因很明显)。但是管道失败,说明列数和 json 映射不匹配。已尝试阅读多个文档,但没有得到适当的解决方案。谁能帮助我了解如何使用 aws 数据管道将默认当前时间戳从 s3 插入红移表?

4

1 回答 1

0

命令中有一个选项copy可以指定您希望填充数据的列,我们在 ETL 中使用它来填充default.skipped columns

COPY my_tablename
    (C1  
    ,C2   
    ,C3,...    
  )
    FROM 's3://<<YOUR-BUCKET>>/<<YOUR-FILE>>'
    credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret- access-key>';

所以我可以在像下面这样的管道的情况下应用相同的方法,尽管我没有测试过这个解决方案,

copy My_table(C1,C2,C3,...)
from 's3://mybucket/category_object_paths.json'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
json 's3://mybucket/category_jsonpath.json';

评论后编辑

有一个transformSql选项可用于RedshiftCopyActivity复制选择性列。

这是参考, http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-redshiftcopyactivity.html

于 2018-06-21T07:24:34.217 回答