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 之外的其他功能