У меня вопрос об идентификаторе автоинкремента для моего «измерения» и IKM: инкрементное обновление.
У меня есть исходная таблица только с одним столбцом: SUPPLIER_NAME. В нем 23 строки с названиями поставщиков.
У меня есть целевая таблица с двумя столбцами: SUPPLIER_ID, SUPPLIER_NAME
Затем я хочу в SUPPLIER_ID создавать идентификатор автоинкремента для каждой новой строки и использовать IKM: increment update - где кто-то добавляет нового поставщика, мне нужна только таблица обновления (добавить новую строку) и добавить для этого поставщика новый идентификатор (следующее значение для автоинкремента).
Как я могу это сделать?
Я создаю последовательность в БД, например:
Create sequence autoinc start with 1
increment by 1
minvalue 1
maxvalue 1000000;
В ODI я создаю последовательность: AutoIncrementDIm -> Increment: 1, Native seuqence - имя собственной последовательности: autoinc
Далее я создаю отображение ODI:
Исходная таблица (с одним столбцом) сопоставляется с целевой таблицей (с ID и NAME).
Сопоставить имя_поставщика и имя_поставщика
Для ID я использую: # NFS_HD.AutoIncrementDim_NEXTVAL
В логической части я установил тип интеграции: Incremental Update В физической части я установил для IKM: IKM Oracle Merge
Для моего первого бега это нормально. У меня есть автоинкремент от 1 до 23 для каждого поставщика.
Но когда у меня есть новые строки с новым именем поставщика в исходной таблице и я запускаю отображение, я получаю что-то вроде:
Новая строка (с новым поставщиком) имеет 47 ID ... Я думаю, что это потому, что последовательность выполнялась для каждой строки.
Что мне нужно изменить, чтобы исправить, или что лучше сделать?