Дата и время по умолчанию с помощью AWS Data Pipeline
Мы используем конвейер данных для передачи данных из s3 в таблицу красного смещения amazon. Мы продвигаем данные, используя JSON
{
"jsonpaths": [
"$['data1']",
"$['data1']",
"$['data1']['data1']",
"$['data1']['data1']",
"$['data1']['data1']",
"$['data1']['data1']",
"$['data1']",
"$['data1']",
"$['data1']",
"$['data1']['data1']",
"$['data1']['data1']"
]}
Недавно я хотел добавить в таблицу красных смещений созданный_кат, который должен принимать текущую временную метку. Я добавил столбец в моей таблице красного смещения со значением по умолчанию к текущей отметке времени. Я не определил в файле сопоставления json для этого столбца (по понятным причинам). Но конвейер терпит неудачу, утверждая, что число столбцов и отображение json не совпадают. Пробовал читать несколько документов, но не нашел правильного решения для этого. Кто-нибудь может мне помочь, как мы можем вставить текущую временную метку по умолчанию в таблицу красного смещения из s3, используя конвейер данных aws?
1 ответ
Есть вариант в 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