AWS Data Pipeline 的默认日期时间

Posted

技术标签:

【中文标题】AWS Data Pipeline 的默认日期时间【英文标题】:Default datetime with AWS Data Pipeline 【发布时间】:2018-06-21 07:07:04 【问题描述】:

我们正在使用数据管道将数据从 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 插入红移表?

【问题讨论】:

【参考方案1】:

copy 命令中有一个选项用于指定您希望填充数据的列,我们在 ETL 中使用该选项填充 skipped columns 的任何 default 值。

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

【讨论】:

谢谢@Red Boy。我也在 AWS 文档中看到了这个解决方案。但是,我不确定我们应该如何以及在哪里添加这个数据管道配置?你对此有什么想法吗? 太棒了。 Trasform SQL 展示了前进的道路。我从几个小时就被困在这个问题上。现在不知道如何从暂存中选择数据并使用转换 sql 将日期时间附加到它。任何想法都会有所帮助 选择默认值应该很容易,但不确定您是否有一些复杂的情况,可以这样做select c1,c2, sysdate as current_date**here is default** from stg_test 它不工作。转换 SQL 是一坨屎。我有一个 redshift-copy-activity,它的目标 redshift 表和输入为带有转换 sql 的 s3。为什么管道在临时表上应用转换 sql 之前检查列数?我不知道我是否遗漏了什么。但当然,这件简单的事情并不值得花这么多时间。'

以上是关于AWS Data Pipeline 的默认日期时间的主要内容,如果未能解决你的问题,请参考以下文章

使用 Data Pipeline 在 AWS 中进行批处理文件

AWS Data Pipeline 无法验证 S3 访问 [权限警告]

AWS:通过使用 amazon-data-pipeline 将数据从 S3 传输到 Redshift 来实现除 COPY 之外的其他功能

在 AWS Data Pipeline 中创建聚合表

AWS Data Pipeline RedshiftCopy 活动 没有合适的驱动程序

AWS Data Pipeline 在 emr 活动步骤部分中转义逗号