この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Tableau 10 新機能紹介シリーズ、当エントリは『Web Data Connector 2.0』 ( 以下 WDC 2.0 ) に関する、正式リリース前の先取り内容紹介となります。WDC は Tableau 9.1 から実装された機能ですが、Tableau 10 のリリースにあわせて機能が改善されたので、使用方法とサンプルを紹介します。
WDC 1.0 に関する記事
以前書いた WDC 記事を併せてご覧いただくことをお薦めいたします。
[Tableau] Web データコネクタ (WDC) 機能を使ってみた
Tableau 公式の WDC 2.0 サンプル
Tableau 公式の GitHub ページに webdataconnector リポジトリがあります。2016 年 6 月現在、dev ブランチが WDC 2.0 の開発ブランチとなっていますので、一式ダウンロードすることでサンプルを動かすことが可能です。
https://github.com/tableau/webdataconnector/tree/dev
WDC 2.0 新機能
- 複数テーブル取得可能に
( 1.0 系では単一のテーブルのみ取得できました ) - テーブルおよびデータ情報取得メソッドの新規実装
( 1.0 系の WDC コンテンツも下位互換サポートされています )
一見少なく見えるかもしれませんが、かなり強化された印象があります。
WDC 2.0 の構築
SDK の取得
下記のいずれかから入手可能です
- Tableau Web Data Connector
http://tableau.github.io/webdataconnector/ - API
https://connectors.tableau.com/libs/tableauwdc-2.0.0-beta.js
WDC 2.0 の初期化
var myWDC = tableau.makeConnector();
1.0 系と変わりません。
スキーマ情報取得 ( 構築 )
複数テーブルの情報をまとめて返す wdc.getSchema(schemaCallback) メソッドが新規に実装されました。引数の schemaCallback コールバック関数を実行することで処理の完了となるため、非同期処理を交えた構築処理にも柔軟に対応できます。従来の wdc.getColumnHeaders(), tableau.headersCallback() メソッドよりも直観的な実装で分り易いですね。
myWDC.getSchema = function(schemaCallback) {
var colsA = [{
'id' : 'ticker',
'alias' : 'ticker',
'dataType' : tableau.dataTypeEnum.string
}, {
…
{
'id' : 'low',
'alias' : 'low',
'dataType' : tableau.dataTypeEnum.float
}];
var colsB = [{
'id' : 'ticker',
'alias' : 'ticker',
'dataType' : tableau.dataTypeEnum.string
}, {
…
{
'id' : 'low',
'alias' : 'low',
'dataType' : tableau.dataTypeEnum.float
}];
var tableInfoA = {
id : 'tabaleIdA',
alias : 'Table A',
columns : colsA //NOTE:同一カラム情報を複数テーブルに適用させたい場合、使いまわしはできないので注意 ( 要 deep copy )
};
var tableInfoB = {
id : 'tabaleIdB',
alias : 'Table B',
columns : colsB //NOTE:同一カラム情報を複数テーブルに適用させたい場合、使いまわしはできないので注意 ( 要 deep copy )
};
schemaCallback([tableInfoA, tableInfoB]);
};
データ取得 ( 生成 )
スキーマ情報取得と同様に、複数テーブルのデータをまとめて返す wdc.getData(table, doneCallback) メソッドが新規に実装されました。前述の『 getSchema() メソッドで定義したテーブル数』の回数分実行されて、データ所属元のテーブル ( スキーマ情報に紐づくテーブル ) オブジェクトである table と、データ生成の完了の役割をもつ doneCallback コールバック関数が引数として渡されます。テーブルオブジェクトに関連するデータは table.appendRows() メソッドで追加します。これらに関しても、従来の wdc.getTableData(), tableau.dataCallback() メソッドよりも直観的な実装で分り易くなっています。
myWDC.getData = function(table, doneCallback) {
var tableData = [];
$.ajax({
'url' : connectionUri,
'dataType' : 'json'
})
.done(function (result) {
$.each(result, function(i, q) {
tableData.push({
'ticker': result[i].Symbol,
…
'low' : result[i].Low
});
});
table.appendRows(tableData); //NOTE:テーブルデータ付与
doneCallback();
});
};
WDC 2.0 登録
var myWDC = tableau.registerConnector(myWDC);
これも 1.0 系と変わりません。
データ収集トリガー時の処理
var submitHandler = function() {
tableau.connectionName = 'Stock Data for ' + dataName;
tableau.submit();
};
tableau.connectionData プロパティが不要になりました。( 1.0 からの移行時に、残しておくとクラッシュするので要注意です )
WDC 2.0 サンプル
1.0 系の記事を書いたときに作成したサンプルを改造して、Amazon と Google の株価情報を Yahoo! Finance API 経由で取得する WDC サンプルを用意しました。
以前のサンプルでは、押下したボタンの銘柄を 1 つだけ選択することができましたが、今回のサンプルではまとめて 2 つの情報を返します。
具体的なコードは下記をご確認ください。
Tableau Desktop から WDC 2.0 サンプルに接続
1.0 系と手順は同じです。
サンプルをブラウザで開く
画面に表示される URL をクリップボードにコピーしてください。
https://embed.plnkr.co/TbjSHw/
Tableau 10 を起動して [接続] -> [Web データコネクタ] を開く
上記サンプル URL を入力して WDC を展開
AMZN & GOOGL ボタンを押してデータソースを抽出
抽出完了
Tableau Desktop 10 では、取得したデータが閲覧できるようになりました。また、「表」欄に取得したテーブルが 2 つ表示されていることも確認できます。
まとめ
Tableau WDC 2.0 についてまとめました。機能面、実装面、どちらに関しても従来バージョンに比べて強化されたことが分ります。あとは、この機能を利用してどのように各テーブル、各ビューを料理するか…でしょうか。