LoginSignup
9
0

More than 3 years have passed since last update.

embulk-input-kintone を作った話

Posted at

2019 kintone advent calendar2の6日目の記事です。
embulk-input-kintone を作った話です。

Background

  • 小売で、業務システムをkintoneに乗せて運用している。POSはスマレジを使っている。
  • kintoneはカラムの変更がしやすいので、分析したい切り口があればデータが追加しやすいので、商品のマスターにkintoneのデータを使用し、売上のデータはスマレジから取り出したデータを結合して使っている。
  • 分析を効率良くやるために、データを一箇所で集めなければならない。
    • DWHにはBigQuery(BQ)を使用
  • 一番最初は、cli-kintone をCSVにするscriptを実行後、embulkを使ってBQにデータを入れていた
  • kintoneのアプリが増えるとscriptnのメンテが大変、もっと宣言的に書きたい
    • + 高校のクラスメイトの縁あって、embulkを使ったサービスを手伝うことにもなった。

ということで、kintoneのinputがなかったので作りました。

https://github.com/trocco-io/embulk-input-kintone

embulkとは

バルク処理に特化したplugableのデータローダーです。

クラウドサービス(e.g. s3, sales force), DB(e.g. MySQL, Postgres, SQL Server), ローカルファイル(e.g CSV, JSON) etc からクラウドサービス, DB, ローカルファイルetcにデータを転送(ETL)できるOSSです。

詳しくは下記のリンクを御覧ください。

参考

http://frsyuki.hatenablog.com/entry/2015/02/16/080150

https://qiita.com/hiroysato/items/da45e52fb79c39547f69

Champion Contributor

使い方

embulk gem install embulk-input-kintone

設定のかんたんな解説

in:
  type: kintone  
  domain: example.cybozu.com   # ドメインを指定
  username: user          # ユーザー名
  password: password        # パスワード  この他にもアプリトークンでの認証も対応してます。 
  app_id: 1                    # アプリ id
  fields:                      # 抽出したいフィールドのフィールドコードと、データタイプを記述
    - {name: $id, type: long}
    - {name: $revision, type: long}
    - {name: foo, type: string}
    - {name: bar, type: long}
    - {name: baz, type: double}

out:
 type: stdout # BigQuery, Redshift, MySQLもプラグインをインスールすれば可能 

現実装の制限 20191205時点

  • カーソルを使ったデータを取得しているので、カーソルの制限を受ける
    • 同時に作れるカーソルは1ドメインあたり10個まで
    • 一度に取得できるのは10万件まで
    • カーソルの有効期限は、カーソルの作成 または カーソルからレコードを取得 による最終リクエスト時刻から10分です。
    • カーソルの作成にかけられる時間は5分間です。それ以降はタイムアウトします。
  • embulkのguessを実装してないので、最初の設定に時間がかかる(将来、対応予定
  • サブテーブルのに対応してない(将来、対応予定

Embulkを使ったデータ転送の今後

embulkのフローを開発と本番で分けるのに環境変数をliquid templateつかって切り分けているが、数が増えると管理がめんどくさい。運用は泥臭いので、今後としては

  • digdagや、airflowを使って自前で構築
  • troccoのようなSaaSを使用
9
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
0