【AlteryxTips】AlteryxからTableauServerのRestAPIを叩いてみる

AlteryxからTableauのRestAPIを叩いてServerの管理を楽にする話

今回は、TableauとAlteryxの連携ネタです。Tableauが持つRestAPIをAlteryxから制御し、Serverの管理を楽にしてみたいと思います。

  1. TableauのRestAPIとは?
  2. RestAPIを使うためには
  3. AlteryxでRestAPIを使うには
  4. 実際にやってみましょう

1.TableauのRestAPIとは?

Tableauは様々なAPIを持っています。その中でも「Tableau Server/OnlineのWebUIでの操作をプログラムにやらせる」イメージに該当するのが「REST API」です。

できること:

  • Tableau Server/Onlineにサインイン・サインアウト等
  • Siteを作成・削除・問い合わせ等
  • データドリブンアラートの削除・ユーザー追加・削除等
  • プロジェクトの作成・紹介・削除等
  • ワークブックの公開・削除・問い合わせ・ダウンロード等
  • データソースの公開・削除・問い合わせ・ダウンロード等
  • ユーザー・グループの管理
  • サブスクリプションの作成・削除等
  • 等々

まさにWEB画面からできることが一通りできるようなイメージで捉えて構わないと思います。

2.RestAPIを使うためには

RestAPIを使うためには、一般的にはプログラミング言語からアクセスします。たいていの言語であればRestAPIは扱えると思って結構かと思います(Python、Java、PHP・・・)。

3.AlteryxでRestAPIを使うには

Alteryxはプログラミング言語ではありませんが、開発者カテゴリにひっそりと佇んでいるこのアイコンをご存知でしょうか?

ダウンロードツールアイコン

HTTPアクセスを行うことができる「ダウンロード」ツールです。Rest APIにアクセスするためにはこのダウンロードツールを使います(もちろん、Pythonツールなどでも可能ですが、それは別途・・・)。

4.実際にやってみましょう

それでは、実際にAlteryxでTableauServerのRestAPIを叩いてみたいと思います。

今回行うのは、Tableau Server上に登録されている全ユーザーのリストを取得することです。

  1. 事前準備(各種情報取得)
  2. ログイン
  3. User List取得

RestAPIに共通した流れとして、まずログインして認証用トークンを取得し、そのトークンを使って各種問い合わせや処理を行う形になります。

RestAPIの流れ

1.事前準備(各種情報取得)

ログイン Step1

まず事前準備が必要です。アクセスしようとしているTableau Server/Onlineについて以下の情報が必要です。

  • TableauServerのURL/SiteName
  • 管理者権限を持っているユーザーのIDとパスワード
  • APIバージョン(Tableau Serverのバージョンによって決まっています)
項目名 内容
URL Tableau ServerのURLです
SiteName アクセスしようとしているSiteの名称です(デフォルトサイトであればNullでOK)
UserName 管理者権限を持っているユーザー名です
UserPass 管理者権限を持っているユーザーのパスワードです
API_Version APIのバージョンです。Tableau Serverのバージョンによって決まります(2019.1であれば3.3)

上記情報をまずは「テキスト入力ツール」に入力しておきましょう。

RestAPI用情報

※見えちゃまずいところはモザイクかけてます

2.ログイン

RestAPIへアクセスする一般的なフローとして、Serverに投げるデータを作成→ダウンロードしたデータを使える形に加工、というのを繰り返します。

RestAPI利用フロー

 

TableauServerのRestAPIを使うには、まずServerにログインし認証トークンを取得する必要があります。アクセスに必要な情報は以下のとおりです。

項目名 内容
URI POST /api/api-version/auth/signin
リクエストボディ <tsRequest>
<credentials name="username" password="password" >
<site contentUrl="content-url" />
</credentials>
</tsRequest>

 

ログイン Step2

上記の情報をダウンロードツールでTableauServerにPOSTするのですが、フォーミュラツールで作成しましょう。

ログイン用データ作成

 

ログイン Step3

その後、ダウンロードツールの「ベーシック」タブと「ペイロード」タブでそれぞれ以下の通り設定します。

タブ 項目名 設定内容
ベーシック URL フォーミュラツールで作成した「LoginURL」フィールド
ペイロード HTTPアクション POST
フィールドからクエリ列/本文を取得する フォーミュラツールで作成した「AccessJson」フィールド

ベーシック設定

ペイロード設定

アクセスに成功すると、以下のようなフィールドが出力されます。

ログインレスポンス

 

ログイン Step4

上記データのうち、欲しいのは「DownloadData」ですが、XML形式で取得しているので、XMLパースツールを使って中身の値を取り出します。

XML設定

これにより得られるデータは以下のとおりです。

パース後

なお、認証トークンは「x-tableau-auth」というフィールド名にしておく必要があります。選択ツールでフィールド名を変更しましょう。

3.User List取得

ここまでで認証トークンが取得できたので、あとは好きな処理を行うだけです。今回は、ユーザーのリストを取得して行きたいと思います。使うのは「Get Users on Site」という機能です。

 

項目名 内容
URI GET /api/api-version/sites/site-id/users
リクエストボディ なし

 

ユーザーリクエスト ステップ1

フォーミュラツールでデータを作成しましょう。今回はURIのみ作成すればOKです。

ユーザーリクエストURL

なお、page-sizeオプションに1000を指定しています。デフォルトでは100ですので、ユーザーが100名以上登録されている場合は全数出てこないので、調整が必要です。ちなみに、最大値は1000です。それを超えると、Page-numberオプションも組み合わせる必要があります。

ユーザーリクエスト ステップ2

その後、ダウンロードツールの「ベーシック」タブ、「ヘッダー」タブ、「ペイロード」タブでそれぞれ以下の通り設定します。

タブ 項目名 設定内容
ベーシック URL フォーミュラツールで作成した「UserRequestURL」フィールド
ヘッダ これらのフィールドからの値 x-tableau-auth
ペイロード HTTPアクション GET(or FTP)

ユーザーリクエスト ベーシック

ユーザーリクエスト ヘッダ

ユーザーリクエスト ペイロード

アクセスが成功すると、ダウンロードツールにより以下のようなデータが取得できます。

ダウンロード結果

 

ユーザーリクエスト ステップ3

このうち、DownloadData2というフィールドに欲しいデータが入っているので、またもやXMLパースツールで中身を取り出します。設定は先程と同様です。

ユーザーリクエスト結果

ちなみに、nameはTableauServerに登録されているユーザー名(アカウントID)です。弊社ではAD連携を行っているので、ユーザー名は社員番号になっています(モザイクかけています)。正直なところ社員番号ではなんだかよくわからないのでさらに詳細情報が欲しいところです。

さらにここから各ユーザーについて詳細を取得したければ「Query User On Site」などの機能を使って取得していく形となります。

ちなみに、今回のワークフロー全体は以下のとおりです。

ワークフロー全体

5.まとめ

AlteryxからTableau ServerのRestAPIを叩いてみました。普段使うことの少ないダウンロードツールやXMLパースツールを駆使しています。

今回は、サンプルとして認証トークンの取得からユーザーリストの取得まで行いました。これを応用すれば取得したリストに対して権限を変更するようなワークフローなども作ることが可能です。それにより、Tableau Serverのユーザー管理をExcelの表ベースで行うことも可能です。

Tableau SeverのRestAPIは比較的難易度が低いため、AlteryxでRestAPIを使う練習台としては良いかと思います(認証トークンの取得にJWTなどが必要になったりすると難易度が跳ね上がりますので・・・)。

 

参考:Tableau Rest API Reference

 

Tableau Server 2019.1.1(20191.19.0215.0259) 

Alteryx Designer 2019.1.4.57073

時点の情報です。

Alteryxの導入はぜひKCMEで!

セルフサービスデータ分析ツール「Alteryx」は4週間無償トライアルが可能です。

製品に対する操作方法、技術的な質問などは導入前・導入後に関わらずメールにてお答えします。また、Alteryxを用いた環境構築、開発、ヘルプデスク対応、ハンズオン、トレーニング、ワークフロー作成なども承りますので、お気軽にご相談ください。

おすすめの記事