У меня есть два набора данных (файлы csv), которые я ввожу в преобразование Pentaho DI с помощью шага «ввод файла CSV». В файле A есть столбец joincol
, значения которого отображаются в файле B в столбце joincol
. Я хочу оставить соединение данных в файле A с данными в файле B при условии A.joincol = B.joincol
, чтобы получить соответствующие данные из столбца wantcol
из файла B.
Довольно простые вещи.
В качестве (необходимого) предварительного шага я сортирую оба набора данных по столбцам, которые нужно объединить (а именно A.joincol
и B.joincol
) по возрастанию.
Затем я использую шаг «Объединение слиянием» с отсортированными данными из файла A в качестве «Первого шага» и отсортированных данных из файла B в качестве «Второго шага» и выбираю «Тип соединения» как ЛЕВЫЙ ВНЕШНИЙ. Я выбираю «Получить ключевые поля» в разделе «Ключи для 1-го шага» и указываю, что joincol
- единственное ключевое поле, к которому можно присоединиться, затем проделываю то же самое для «Ключи для 2-го шага».
Итак, соединение работает частично, за исключением:
- строки удаляются, что должно быть абсолютно невозможно при левом внешнем соединении
- отбрасываемые строки - это именно те строки, которые находятся в группе строк, соответствующих последнему значению
joincol
при сортировке по возрастанию.
Я подтвердил, что значения в файле A joincol
все появляются в файле B joincol
, выполнив vlookup в Excel. В любом случае, даже если ни одно значений не появилось в файле B, левое внешнее соединение все равно должно оставить мне по крайней мере все строки, в которые я вошел.
Я новичок в Пентахо, поэтому мне трудно поверить, что я наткнулся на такую сумасшедшую ошибку так рано в моем исследовании, что означает, что я, должно быть, пропустил шаг. Однако я прочитал документацию по объединению слиянием и считаю, что выполнил все необходимые шаги (те, которые я изложил здесь). Может ли кто-нибудь сообщить мне, если я что-то пропустил? Может, это результат частой ошибки?
Спасибо большое!