Talend Open Studio (ETLツール) でデータ統合(11)~kintoneのデータを抜いてみる [BI]
talendのリセーラーに何度もリクエスト出しているんですが一向にリアクションが無く、一方で社内のkintone化が進んでいく上で基幹との連携が早晩問題になることが考えられるので、kintoneのREST API経由でtalendを使ってデータを無理矢理抜いてみました。コンポーネントを誰か作ってくれるまでの最終手段として使用する予定ですが、だれかtKintoneInputとか作ってくれないかなあ、、、
○参考URL
https://developers.cybozu.com/ja/kintone-api/apprec-readapi.html
○RESTコンポーネント(tREST)
・URL
ここにアプリID、クエリをエンコードして記述します。例ではid=82のアプリに対して2つのフィールド("Address"と"経度")を持ってくるクエリを記述しています。
※注意点1:&field[0]=経度のような形でエンコードしますが、
・"="や"&"はエンコードしない(上記の例の場合は経度のみURLエンコード)
・日本語のフィールドコードはUTF8でエンコードする
※注意点2:$revision のコラムはtalendのJSONパーサーがうまく拾えないっぽいので、フィールドコード指定のクエリを書くことでこのカラムを除く
#やりようが無いので、必要な時はtReplaceを配置。(最新記事を参考にしてください)
・HTTPメソッド
GETを指定
・HTTPヘッダー
ログイン方法に応じてAuthorizationを指定、base64でユーザー名:パスワード をエンコードします。Hostも必須。
→この結果はJSONとして吐き出されます
○JSON変換(tExtractJSONFields)
・kintoneのJSONはトップにrecords(複数レコード抽出の場合)、その下にフィールドの構造がありますので、"フィールド名/value"のように指定します。
・tRESTのスキーマは固定なので、それのBodyだけを引っ張るようにします。
○実行結果
添付画像のようになります。ちなみにkintone APIの制限から一回に100行しか取ってこれないので、大量に取得したい場合はグローバル変数などを使用して適切にループさせる必要がありそうです。
だれかtKintoneInputとか作ってくれないかなあ、、、(←念押し)
○参考URL
https://developers.cybozu.com/ja/kintone-api/apprec-readapi.html
○RESTコンポーネント(tREST)
・URL
ここにアプリID、クエリをエンコードして記述します。例ではid=82のアプリに対して2つのフィールド("Address"と"経度")を持ってくるクエリを記述しています。
※注意点1:&field[0]=経度のような形でエンコードしますが、
・"="や"&"はエンコードしない(上記の例の場合は経度のみURLエンコード)
・日本語のフィールドコードはUTF8でエンコードする
※注意点2:$revision のコラムはtalendのJSONパーサーがうまく拾えないっぽいので、フィールドコード指定のクエリを書くことでこのカラムを除く
#やりようが無いので、必要な時はtReplaceを配置。(最新記事を参考にしてください)
・HTTPメソッド
GETを指定
・HTTPヘッダー
ログイン方法に応じてAuthorizationを指定、base64でユーザー名:パスワード をエンコードします。Hostも必須。
→この結果はJSONとして吐き出されます
○JSON変換(tExtractJSONFields)
・kintoneのJSONはトップにrecords(複数レコード抽出の場合)、その下にフィールドの構造がありますので、"フィールド名/value"のように指定します。
・tRESTのスキーマは固定なので、それのBodyだけを引っ張るようにします。
○実行結果
添付画像のようになります。ちなみにkintone APIの制限から一回に100行しか取ってこれないので、大量に取得したい場合はグローバル変数などを使用して適切にループさせる必要がありそうです。
だれかtKintoneInputとか作ってくれないかなあ、、、(←念押し)
2014-05-02 17:54
nice!(1)
コメント(1)
トラックバック(0)
むちゃくちゃ参考になりました。ありがとう!
$revisionについては、私はtExtractJSONFieldsの前にtReplaceで置換してみました。
しかしtKintoneInput欲しいですねえ。Outputも。
by junott (2014-10-24 17:12)