Можно ли пропустить загрузку строки, используя гем 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
Дайте мне знать, если это правильно отвечает на ваш вопрос, или если вам нужен более точный ответ.
Я тупой. Я понял, что вы можете просто поймать свои ошибки в процессе преобразования / загрузки и вернуть ноль.