Предотвращение дублирования ключей при объединении наборов данных в одну таблицу - PullRequest
1 голос
/ 15 января 2020

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

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

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

Ответы [ 2 ]

0 голосов
/ 16 января 2020

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

0 голосов
/ 15 января 2020

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

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

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

...