1

如果我认为使用 kiba-etl gem 的行无效,有没有办法可以跳过加载某些行?

例如,如果在将其加载到系统之前必须通过验证或发生错误,并且在记录问题时我仍然需要将数据推送到 sys 中。

4

2 回答 2

1

Kiba的作者在这里!要从管道中删除一行,只需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

让我知道这是否正确回答了您的问题,或者您是否需要更精确的答案。

于 2015-10-01T19:02:40.180 回答
0

我很笨。我意识到你可以在转换/加载过程中发现你的错误并返回 nil。

于 2015-10-01T16:47:52.260 回答