by shigemk2

当面は技術的なことしか書かない

embulk guessとcsvとtimestamp

YYYY-MM-DD なデータを持つカラムを持つcsvファイルをembulk guessする。 すると、以下のようなcolumnsができる。

    columns:
    - {name: id, type: long}
    - {name: account, type: long}
    - {name: time, type: timestamp, format: '%Y-%m-%d %H:%M:%S'}
    - {name: purchase, type: timestamp, format: '%Y%m%d'}
    - {name: comment, type: string}

この状態で、embulk runとかembulk previewすると、ファイルには 2019-01-01 00:00:00.000000 +0000 という形で時刻まで出力される。 columnsのformatで指定した日付書式は、csvファイル内の文字列をtimestampに変換する際に使われるもので、出力用の書式ではないらしい。

Configuration — Embulk 0.8 documentation

Embulkローカルファイル入力メモ(Hishidama's Embulk input-local-file Memo)

GitHub - joker1007/embulk-filter-ruby_proc: Apply ruby proc code on filtering

なので、embulk-filter-ruby_procなどを用いて、改めてYYYY-MM-DDなStringに変換する必要がある。

filters:
  - type: ruby_proc
    columns:
      - name: time
        proc: |
          ->(name) do
            time.to_s[0,10]
          end
        type: string