Предотвращение дублирования ключей при объединении наборов данных в одну таблицу

Я пытаюсь записать данные наших активов из разных стран (например, Испании, Швеции) в 1 таблицу с помощью StreamSets.

Учитывая, что у них обоих будет один и тот же идентификационный ключ, то есть у Испании будет panel_ID = 1, и у Швеции тоже. Чтобы сделать мой набор записей уникальным, мне нужно будет добавить дополнительное поле, например CountryCode. Однако это не входит в наши существующие данные. Мне нужно будет вручную добавить это (жестко запрограммировано или автоматизировать через параметры). Как я могу добиться этого с помощью StreamSets (в конвейере)?

Кроме того, в целом ли этот подход правильный? Нахожусь ли я на правильном пути, и какие еще вещи я должен рассмотреть?

Всего 2 ответа


Вы должны добавить исходную таблицу в код в виде явного столбца. Это было бы что-то вроде:

select 'Sweden' as country, s.*
from sweden_data s
union all
select 'Spain' as country, s.*
from spain_data s;

Вы можете сохранить это в таблицу или просто создать представление, построенное следующим образом.


Имя таблицы доступно в jdbc.tables , на который вы можете ссылаться из языка выражений (EL) как ${record.attribute('jdbc.tables')} . Вы можете использовать Expression Evaluator, чтобы скопировать атрибут в поле, которое можно использовать в составном ключе.


Есть идеи?

10000