Можно ли пропустить загрузку строки, используя гем kiba-etl?

Есть ли способ пропустить загрузку определенных строк, если я считаю строку недопустимой с помощью гема kiba-etl?

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

2 ответа

Решение

Автор Киба здесь! Чтобы удалить строку из конвейера, просто верните nil в конце преобразования:

transform do |row|
  row_valid = some_custom_operation
  row_valid ? row : nil
end

Вы также можете "записать" поврежденные строки и сообщить о них позже, используя post_process блок, подобный этому (в данном случае требуется поддельное количество строк от умеренного до низкого):

@bogus_row_ids = []

transform do |row|
  # SNIP
  if row_valid(row)
    row
  else
    @bogus_row_ids << row[:id]
    nil # remove from pipeline
  end
end

post_process do
  # do something with @bogus_row_ids, send an email, write a file etc
end

Дайте мне знать, если это правильно отвечает на ваш вопрос, или если вам нужен более точный ответ.

Я тупой. Я понял, что вы можете просто поймать свои ошибки в процессе преобразования / загрузки и вернуть ноль.

Другие вопросы по тегам