Node.jsアプリケーションからトレジャーデータサービス by IDCFにデータをエクスポートする
トレジャーデータサービス by IDCFとは
IDCフロンティアが提供しているデータの収集・蓄積・分析を行うビッグデータ分析プラットフォームで、「Yahoo!ビッグデータインサイト」だったものがサービス名変更になったもの。
参考
APIキーの取得
TDにエクスポートするにはAPIキーというものが必要で、
Webコンソールから取得するか、Tresure Data toolbeltをインストールして$ td apikey
で取得する。取得したAPIキーは環境変数に入れておくことにする。
$ export TREASURE_DATA_API_KEY=`APIキー`
Node.jsアプリ
$ npm install --save td
でインストールして実行。
const express = require('express'); const app = express(); const TD = require('td'); const client = new TD( process.env.TREASURE_DATA_API_KEY, { host: 'api.ybi.idcfcloud.net' } ); const logger = function (err, results) { console.log(results); if (err) console.log(err); }; app.post('/', upload.single('data'), (req, res) => { client.prestoQuery( 'db_name', 'INSERT INTO table_name (c1,c2,c3) VALUES (v1,v2,v3),(v4,v5,v6)', {}, logger ); res.end('success'); }); app.listen(4000, function () { console.log('Example app listening on port 4000!'); });
重要なのがオプションでホストを指定しておく必要がある点。これをやっておかないと
デフォルトでapi.treasuredata.com
が指定されるらしいので、トレジャーデータサービス by IDCFを使うなら必ずapi.ybi.idcfcloud.net
にしておかないといけない。ドキュメントにも書いてないので、なかなかわからなかった。つらい。また、URLは旧サービス名のままなので、そのうち変わるかもしれない。