駄文型

プログラミングとか英語とかの話題を中心にした至極ちゃらんぽらんな日記です。

Node.jsアプリケーションからトレジャーデータサービス by IDCFにデータをエクスポートする

トレジャーデータサービス by IDCFとは

www.idcf.jp

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は旧サービス名のままなので、そのうち変わるかもしれない。