Pentaho: комбинация поиска / обновления не обрабатывает все строки в источнике - PullRequest
0 голосов
/ 23 мая 2018

Я использую Pentaho Data Integration для преобразования SCD типа 1.Я использую комбинацию преобразования поиска / обновления для генерации значения суррогатного ключа (при вставке).Размер фиксации составляет 100000, а размер кэша - 99999. Моя исходная таблица содержит 19763 строки, и когда я запускаю задание для загрузки данных в место назначения (таблицу измерений), комбинация поиска / обновления просто обрабатывает 10000/19763 строки каждый раз.

Как я могу заставить его обрабатывать все записи (19763 enter image description here) в исходной таблице ????

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Похоже, вы делаете инкрементное обновление.Существует специальный шаг, названный Merge Rows (Diff), для сравнения двух потоков и определения, существуют ли они в обоих потоках и изменились ли они.

Два потока, эталонный поток (текущие данные) и сравнениепоток (новые данные), объединяются.Строка объединена и помечена как:

  • идентичный Ключ был найден в обоих потоках, и сравниваемые значения идентичны;
  • изменено Ключ был найден в обоих потоках, но одно или несколько значений отличаются;
  • new Ключ не найден в ссылочном потоке;
  • удален Ключ не был найден в потоке сравнения.

Перед объединением два потока должны быть отсортированы.Вы можете сделать это в запросе sql, но лучше всего указать явный шаг Sort row, потому что в противном случае процесс остановится после чтения 1000 записей или того, что находится в пределе Rowset (знакомо?).

Затем поток с шагом Swich/Case направляется к соответствующему действию.

Шаблон «наилучшей практики» выглядит следующим образом, в котором я добавил первый шаг, чтобы получить максимальную дату, и шагчтобы построить суррогатный ключ.

enter image description here

Эта модель была доказана с годами намного быстрее.Фактически, это позволяет избежать очень медленного Database lookup (один полный поиск по дБ по строкам) и сократить использование медленного шага Insert/Update (3 доступа к БД: один для извлечения записи, один для изменения значений и одинхранить его).И сортировка (которую можно предварительно подготовить в потоке) довольно эффективна.

0 голосов
/ 24 мая 2018

Наконец-то !!!!!!!!!Я нашел ответ.Это просто.Нажмите Правка -> Настройка -> Разное -> Количество строк в наборе строк - Измените его с 10000 на нужное количество записей, поступающих из источника.Для меня это значение было установлено равным 10000, и поэтому оно использовало только для записи 10000 записей в мою таблицу измерений назначения.Я изменил его на миллион, и теперь я получаю все мои записи 19763 года в моей таблице назначения.

...