2017-01-01 3 views
0

Как реализовать или какие шаги я использую для создания преобразования, которое сравнивает таблицу и список. Например, имя таблицы базы данных Schools и файл excel с огромным списком имен Школ.Как реализовать добавление, если оно недоступно в базе данных в Pentaho?

Если запись в excel не отображается в базе данных, ее следует добавить в таблицу базы данных.

Я не совсем уверен, могу ли я использовать шаг поиска базы данных, это не говорит о том, не удалось ли выполнить поиск. вставка обновления также не является решением, так как для этого требуется некоторое значение идентификатора, но нет идентификатора в списке школ в файле excel.

+0

Пожалуйста, вы можете разместить пример из набора данных (как из базы данных и Excel) – Explorer

ответ

0

Это работало для меня,

excel file --> 
select values (to delete unnecessary fields) --> 
database lookup (this will create a new field, and will set null if not found)  --> 
filter rows (get the fields with null output from lookup) --> 
table output (insert the filtered records) 
+1

Поиск также является опцией, но он будет проверять полную таблицу каждый раз (что не является хорошим вариантом, если у вас есть постоянный растущий стол). В ETL всегда лучше отфильтровывать ненужные записи перед логикой для повышения производительности. – Explorer

+0

не знал этого, спасибо за информацию. в моем случае приемлемо использовать поиск, поскольку набор данных меньше 5k. –

1

На основании информации, предоставленной вами простым соединением с шагом вставки таблицы выполнит вашу задачу. Вы можете использовать шаг Merge rows для сравнения потока данных (excel и database). На шаге слияния строк используется ключ для сравнения двух потоков и добавления поля флага, которое отмечает строку как new, identical, changed, deleted. В вашем случае вы хотите вставить все строки, помеченные как новые, с помощью шага вставки таблицы.

Пожалуйста, ознакомьтесь с приведенными ниже ссылками для получения дополнительной информации.

Merge rows, Synchronize after merge

+0

спасибо, я дам ему попробовать и вернитесь к вам –

+0

Прохладный, пожалуйста, дайте мне знать, если вы столкнетесь с какой-либо проблемой. Я сделал это пару раз. – Explorer

Смежные вопросы