Tableau Server 10 新機能:各種APIのご紹介 #tableau

2016.06.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、せーのです。今日は今まさに行われているTableau 10 Roadshowに合わせTableau 10の新機能を紹介する Tableau 10 新機能紹介シリーズです。

このエントリではTableau ServerのAPIに関する新機能ついてご紹介します。

tableau10-comming-soon_00

色々便利になった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>");
                });
            }

例えばこのようなグラフの元データを使いたい時は

tableau_10_apis_1

このAPIを叩くことで全データを持ってくることができます。

tableau_10_apis_2

getSummaryDataAsync()

getSummaryDataAsync()は逆に現在アクティブになっているビューで使用されているサマリーデータを取得することが出来ます。例えば表形式で表しているサマリーデータを使用して

tableau_10_apis_3

オープンソースのD3.jsを使ったインタラクティブなネットワークダイアグラムなんかを作成したりできます。

tableau_10_apis_4

REST API

Tableau Serverの各データはREST APIにて呼び出すことができます。Tableau ServerのREST APIについてはこちらの記事を御覧ください。 Tableau 10ではこのREST APIにもいくつか新機能が加わりました。

filter

検出結果にフィルタによる絞込が出来るようになりました。例えばTableau Serverにユーザーが数人いた場合

tableau_10_apis_5

ユーザーを表示させると当たり前ですが全員出てきます。

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名等、お客さんによってデータソースが違う、という前提です。

tableau_10_apis_6

こちらを実行するとあっという間にお客さんそれぞれに対応するワークブックが完成しました。

tableau_10_apis_7

これも運用する上では便利そうですね。こちらはPythonによるサンプルが公開されています。

まとめ

いかがでしたでしょうか。開発者向けのTalbeauの新機能を使って是非要件にあったカスタマイズをしてみてください。