Free Trial

ブログ

アナリティクスに関する聡明な考えに触れ、インサイトとアイデアが得られます。
AkimasaKajitani
17 - Castor
17 - Castor

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

 

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

 

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

1.TableauのRestAPIとは?

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

 

2.AlteryxでRestAPIを使うには

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

 

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

 

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

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

 

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

 

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

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

 

alt_restapi_restapiflow.png

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

 

alt_restapi_login_step1.png

 

まず事前準備が必要です。アクセスしようとしている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)

 

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

 

alt_restapi_TextInput.png

 

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

3-2.ログイン

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

 

 

 

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

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

 

alt_restapi_login_step2.png

 

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

 

alt_restapi_loginformula.png

 

alt_restapi_login_step3.png

 

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

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

 

 

 

 

 

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

 

alt_restapi_login_response.png

 

alt_restapi_login_step4.png

 

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

 

 

 

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

 

alt_restapi_login_xml_parsed.png

 

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

3-3.User List取得

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

 

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

 

 

 

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

 

alt_restapi_userreq_url.png

 

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

 

 

 

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

 

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

 

 

alt_restapi_userreq_basic.png

 

alt_restapi_userreq_header.png

 

alt_restapi_userreq_payload.png

 

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

 

alt_restapi_userreq_download.png

 

 

 

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

 

 

 

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

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

 

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

 

 

4.まとめ

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

時点の情報です。

 

※本記事は弊社ブログ「【AlteryxTips】AlteryxからTableauServerのRestAPIを叩いてみる」の転載となります。

Akimasa Kajitani
Deputy Manager, Data Solution Dept.

I like to help people who are having trouble using Alteryx and focusing on improving the everyone's Alteryx skill. And I’m exploring how far we can go with no code or with code using Alteryx. My companiy's blog : https://newssdx.kcme.jp/ My private blog for Alteryx : https://analytics-x.tech/en/

I like to help people who are having trouble using Alteryx and focusing on improving the everyone's Alteryx skill. And I’m exploring how far we can go with no code or with code using Alteryx. My companiy's blog : https://newssdx.kcme.jp/ My private blog for Alteryx : https://analytics-x.tech/en/