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

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

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

И вообще, правильный ли это подход? Я на правильном пути и что еще я должен учитывать?


person Shoaib Maroof    schedule 15.01.2020    source источник


Ответы (2)


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

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

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

person Gordon Linoff    schedule 15.01.2020

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

person metadaddy    schedule 16.01.2020