1

kiba-etl gem を使用して行が無効であると判断した場合、特定の行の読み込みをスキップする方法はありますか?

たとえば、システムにロードする前に検証に合格する必要がある場合や、エラーが発生した場合でも、問題のログに関係なくデータを sys にプッシュする必要があります。

4

2 に答える 2

1

木場の作者はこちら!パイプラインから行を削除する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 に答える