Фабрика данных Azure v2 Ненулевые столбцы в приемнике

Я пробую фабрику данных Azure версии 2 и хочу передавать данные из источника SQL в приемник Oracle.

Моя проблема в том, что у меня есть несколько столбцов Not Null в моих таблицах Oracle, которые указывают, например, дату и время загрузки набора данных в Oracle. Однако эти столбцы не существуют в таблицах SQL, поэтому, когда я хочу запустить конвейер, я получаю сообщение об ошибке, что эти столбцы не могут быть нулевыми в приемнике Oracle.

Теперь у меня вопрос: можно ли искусственно добавить эти столбцы во время работы конвейера, чтобы эти столбцы заполнялись фабрикой данных?
Могу ли я использовать для этого хранимую процедуру или пользовательское действие?
Или я могу это сделать? нужно создать сценарий Powershell, который «жестко кодирует» значения, которые я хочу добавить в источник?


person Obongo    schedule 24.10.2018    source источник


Ответы (2)


Вы можете выполнить это в ADFv2, используя запрос к исходному набору данных в действии копирования для вставки значений.

Используя таблицу ex_employee со следующей конфигурацией в каждой базе данных:

Исходная таблица (SQL):

ID int not null,
Name nvarchar(25) not null

Таблица раковин (Oracle):

ID number(p,0) not null,
Name nvarchar2(25) not null,
CreatedDate timestamp not null

В конфигурации «Источник» действия «Копировать» в ADF вы должны выбрать параметр «Запрос» в разделе «Использовать запрос» и ввести запрос, например:

SELECT ID, Name, CURRENT_TIMESTAMP AS CreatedDate FROM ex_employee

Это возьмет существующие значения из вашей таблицы SQL и вставит значение по умолчанию в набор результатов, который затем можно будет вставить в ваш приемник Oracle.

person Kyle Bunting    schedule 24.10.2018

Имеет ли этот столбец значение по умолчанию? Вы можете добавить значение по умолчанию в этот столбец, а затем попробовать? Я не знаком с данными канала оракула, однако аналогичный подход в приведенном ниже примере добавляет значение по умолчанию к ненулевому столбцу.

drop table ex_employee
/
create table ex_employee (id number(1) null ,name varchar2(100)  default 'A' not null )
/
insert into ex_employee(id)
select 1 from dual
/
commit
/

selecT * from ex_employee where id=1
person Moudiz    schedule 24.10.2018
comment
Спасибо. Нет, у них нет значения по умолчанию. Ваше предложение может работать для столбца, в котором используется дата загрузки, но у меня есть другой столбец, который должен быть заполнен именем конвейера фабрики данных, для которого значение по умолчанию нецелесообразно. Кажется, мне придется поговорить с моим боссом, если это возможно изменить. Однако другие идеи по-прежнему приветствуются. - person Obongo; 24.10.2018
comment
если в sql нет имени конвейера фабрики данных, как тогда вы хотите добавить данные? почему бы вам не добавить данные в sql? @Обонго - person Moudiz; 24.10.2018
comment
На данный момент я все еще работаю с фабрикой данных v1, для которой кто-то, кто больше не работает в компании, создал сценарий Powershell для динамического добавления значений в конвейер. Поскольку ADFv2 изменил способ генерации JSON для конвейера, мы больше не можем использовать тот же скрипт. Поскольку здесь никто не разбирается в Powershell, я хотел попробовать обходной путь. Спасибо за вашу помощь, это ценится. Я попытаюсь заставить его работать со значениями по умолчанию, иначе мне придется немного изучить Powershell. - person Obongo; 24.10.2018