Tableau Server 10 新機能:各種APIのご紹介 #tableau
こんにちは、せーのです。今日は今まさに行われているTableau 10 Roadshowに合わせTableau 10の新機能を紹介する Tableau 10 新機能紹介シリーズです。
このエントリではTableau ServerのAPIに関する新機能ついてご紹介します。
色々便利になったAPI群
TableauはVisualizeツールなので、なんとなくTableau側に用意されたパーツ以外は使えないんじゃないか、と思ってしまいがちなのですが、実は色々自分好みにカスタマイズすることが出来るんです。Tableau10から追加された新しいAPI群をざっと見ていきましょう。
JavaScript API: getData()
tableauのグラフデータをそのまま自サイトに取り込めるようにTableauにはJavaScript APIが用意されているのですが、Tableau10にはこのJavaScript APIに2つの新機能が加わりました。
getUnderlyingDataAsync()
getUnderlyingDataAsync()はオプションの指定に合わせて全てのデータを取ってくるAPIです。
function getUnderlyingData(){ sheet = viz.getWorkbook().getActiveSheet(); options = { maxRows: 10, // Max rows to return. Use 0 to return all rows ignoreAliases: false, ignoreSelection: true, includeAllColumns: false }; sheet.getUnderlyingDataAsync(options).then(function(t){ table = t; $("#dataTarget").html("<h4>Underlying Data:</h4><p>" + JSON.stringify(table.getData()) + "</p>"); }); }
例えばこのようなグラフの元データを使いたい時は
このAPIを叩くことで全データを持ってくることができます。
getSummaryDataAsync()
getSummaryDataAsync()は逆に現在アクティブになっているビューで使用されているサマリーデータを取得することが出来ます。例えば表形式で表しているサマリーデータを使用して
オープンソースのD3.jsを使ったインタラクティブなネットワークダイアグラムなんかを作成したりできます。
REST API
Tableau Serverの各データはREST APIにて呼び出すことができます。Tableau ServerのREST APIについてはこちらの記事を御覧ください。 Tableau 10ではこのREST APIにもいくつか新機能が加わりました。
filter
検出結果にフィルタによる絞込が出来るようになりました。例えばTableau Serverにユーザーが数人いた場合
ユーザーを表示させると当たり前ですが全員出てきます。
seinotsuyoshi$ curl http://XXXXXXXXXXXXXXX.ap-northeast-1.compute.amazonaws.com/api/2.3/sites/ecd74ed9-30c9-4948-8137-790536720b28/users -X GET -H "X-Tableau-Auth:b5ybXsj9lmd5JNNx1U7rNM0v4nbD6ptD" <?xml version='1.0' encoding='UTF-8'?> <tsResponse xmlns="http://tableau.com/api" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tableau.com/api http://tableau.com/api/ts-api-2.3.xsd"><pagination pageNumber="1" pageSize="100" totalAvailable="3" /> <users> <user id="eea5944d-1ec5-468d-b5a4-df51eee96dea" name="test1" siteRole="Interactor" externalAuthUserId="" /> <user id="6fc3dec9-f6db-4619-befc-f03c5d3f7d31" name="test2" siteRole="Interactor" externalAuthUserId="" /> <user id="0870d705-39c3-4500-a229-2371af42bd5f" name="test3" siteRole="Interactor" externalAuthUserId="" /> </users> </tsResponse>
ここでフィルタを使うことにより絞込ができます。
seinotsuyoshi$ curl http://XXXXXXXXXXXXXXXXX.ap-northeast-1.compute.amazonaws.com/api/2.3/sites/ecd74ed9-30c9-4948-8137-790536720b28/users<strong>?filter=name:eq:test1</strong> -X GET -H "X-Tableau-Auth:b5ybXsj9lmd5JNNx1U7rNM0v4nbD6ptD" <?xml version='1.0' encoding='UTF-8'?> <tsResponse xmlns="http://tableau.com/api" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tableau.com/api http://tableau.com/api/ts-api-2.3.xsd"><pagination pageNumber="1" pageSize="100" totalAvailable="1" /> <users> <user id="eea5944d-1ec5-468d-b5a4-df51eee96dea" name="test1" siteRole="Interactor" /> </users> </tsResponse>
名前の他にもTag検索や最後にログインした日時(lastLogin)などでも絞り込めます。
Sort
ソートもできるようになりました。先ほどのユーザーを降順でソートしてみます。
seinotsuyoshi$ curl http://XXXXXXXXXXXXXXXXXX.ap-northeast-1.compute.amazonaws.com/api/2.3/sites/ecd74ed9-30c9-4948-8137-790536720b28/users?sort=name:desc -X GET -H "X-Tableau-Auth:b5ybXsj9lmd5JNNx1U7rNM0v4nbD6ptD" <?xml version='1.0' encoding='UTF-8'?> <tsResponse xmlns="http://tableau.com/api" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tableau.com/api http://tableau.com/api/ts-api-2.3.xsd"> <pagination pageNumber="1" pageSize="100" totalAvailable="3" /> <users> <user id="0870d705-39c3-4500-a229-2371af42bd5f" name="test3" siteRole="Interactor" /> <user id="6fc3dec9-f6db-4619-befc-f03c5d3f7d31" name="test2" siteRole="Interactor" /> <user id="eea5944d-1ec5-468d-b5a4-df51eee96dea" name="test1" siteRole="Interactor" /> </users> </tsResponse>
こういう細かい配慮は嬉しい限りです。
Web Data Connector 2.0
Tableau9の頃にリリースされていたWeb Data Connectorが進化しました。今まではシングルテーブルしか取得できなかったのですが2.0ではマルチテーブルに対応しました。すでにソースもドキュメントも整備されているので是非試してみてください。
Document API
Document APIはTableauのワークブック(.twb)やデータソース(.tbs)をプログラマブルに操作するためのAPIです。こちらを使うと単純なコードでTableauのファイルを管理、操作することが可能となります。例えばこちらはあるワークブックをcsvファイルを元に人数分コピーしています。またそれぞれサーバーIPやDB名等、お客さんによってデータソースが違う、という前提です。
こちらを実行するとあっという間にお客さんそれぞれに対応するワークブックが完成しました。
これも運用する上では便利そうですね。こちらはPythonによるサンプルが公開されています。
まとめ
いかがでしたでしょうか。開発者向けのTalbeauの新機能を使って是非要件にあったカスタマイズをしてみてください。