Дата и время по умолчанию с AWS Data Pipeline

Мы используем конвейер данных для передачи данных из s3 в таблицу красного смещения Amazon. Мы отправляем данные с помощью JSON

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

Недавно я хочу добавить created_at в свою таблицу красных смещений, которая должна принимать текущую временную метку. Я добавил столбец в свою таблицу красных смещений со значением по умолчанию для текущей метки времени. Я не определил этот столбец в файле сопоставления json (по понятным причинам). Но конвейер не сообщает, что количество столбцов и сопоставление json не совпадают. Пробовали читать несколько документов, но не нашли для этого подходящего решения. Может ли кто-нибудь помочь мне в том, как мы можем вставить текущую временную метку по умолчанию в таблицу красного смещения из s3 с помощью конвейера данных aws?


person user3681970    schedule 21.06.2018    source источник


Ответы (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

person Red Boy    schedule 21.06.2018
comment
Спасибо, @Red Boy. Я также видел это решение в документации AWS. Однако я не уверен, как и где мы должны добавить эту конфигурацию конвейера данных? Вы имеете какое-нибудь представление об этом? - person user3681970; 21.06.2018
comment
Большой. Трансформация SQL показывает путь вперед. Я застрял на этом через пару часов. Теперь я не уверен, как выбрать данные из постановки и добавить к ним дату и время с помощью преобразования sql. Любая идея поможет - person user3681970; 21.06.2018
comment
выбор по умолчанию должен быть простым, хотя не уверен, что у вас сложный случай, это можно сделать что-то вроде select c1,c2, sysdate as current_date**here is default** from stg_test . - person Red Boy; 21.06.2018
comment
Это не работает. Преобразование SQL - это дерьмо. У меня есть одно действие redshift-copy-activity, которое имеет целевую таблицу красного смещения и ввод как s3 с преобразованием sql. Почему конвейер проверяет количество столбцов перед применением преобразования sql в промежуточной таблице? Я не знаю, упускаю ли я что-то. Но, конечно, на эту простую вещь не нужно так много времени ». - person user3681970; 21.06.2018