今回は、TableauとAlteryxの連携ネタです。Tableau Serverの管理を楽にするために、Tableauが持つRestAPIをAlteryxから制御してみたいと思います。
Tableauは様々なAPIを持っています。その中でも「Tableau Server/OnlineのWebUIでの操作をプログラムにやらせる」イメージに該当するのが「REST API」です。
Alteryxはプログラミング言語ではありませんが、開発者カテゴリにひっそりと佇んでいるこのアイコンをご存知でしょうか?
HTTPアクセスを行うことができる「ダウンロード」ツールです。Rest APIにアクセスするためにはこのダウンロードツールを使います(もちろん、Pythonツールなどでも可能ですが、それは別途・・・)。
それでは、実際にAlteryxでTableauServerのRestAPIを叩いてみたいと思います。
今回行うのは、Tableau Server上に登録されている全ユーザーのリストを取得することです。
RestAPIに共通した流れとして、まずログインして認証用トークンを取得し、そのトークンを使って各種問い合わせや処理を行う形になります。
まず事前準備が必要です。アクセスしようとしているTableau Server/Onlineについて以下の情報が必要です。
項目名 | 内容 |
---|---|
URL | Tableau ServerのURLです |
SiteName | アクセスしようとしているSiteの名称です(デフォルトサイトであればNullでOK) |
UserName | 管理者権限を持っているユーザー名です |
UserPass | 管理者権限を持っているユーザーのパスワードです |
API_Version | APIのバージョンです。Tableau Serverのバージョンによって決まります(2019.1であれば3.3) |
上記情報をまずは「テキスト入力ツール」に入力しておきましょう。
※見えちゃまずいところはモザイクかけてます
RestAPIへアクセスする一般的なフローとして、Serverに投げるデータを作成→ダウンロードしたデータを使える形に加工、というのを繰り返します。
TableauServerのRestAPIを使うには、まずServerにログインし認証トークンを取得する必要があります。アクセスに必要な情報は以下のとおりです。
項目名 | 内容 |
---|---|
URI | POST /api/api-version/auth/signin |
リクエストボディ | <tsRequest> <credentials name="username" password="password" > <site contentUrl="content-url" /> </credentials> </tsRequest> |
上記の情報をダウンロードツールでTableauServerにPOSTするのですが、フォーミュラツールで作成しましょう。
その後、ダウンロードツールの「ベーシック」タブと「ペイロード」タブでそれぞれ以下の通り設定します。
タブ | 項目名 | 設定内容 |
---|---|---|
ベーシック | URL | フォーミュラツールで作成した「LoginURL」フィールド |
ペイロード | HTTPアクション | POST |
フィールドからクエリ列/本文を取得する | フォーミュラツールで作成した「AccessJson」フィールド |
アクセスに成功すると、以下のようなフィールドが出力されます。
上記データのうち、欲しいのは「DownloadData」ですが、XML形式で取得しているので、XMLパースツールを使って中身の値を取り出します。
これにより得られるデータは以下のとおりです。
なお、認証トークンは「x-tableau-auth」というフィールド名にしておく必要があります。選択ツールでフィールド名を変更しましょう。
ここまでで認証トークンが取得できたので、あとは好きな処理を行うだけです。今回は、ユーザーのリストを取得して行きたいと思います。使うのは「Get Users on Site」という機能です。
項目名 | 内容 |
---|---|
URI | GET /api/api-version/sites/site-id/users |
リクエストボディ | なし |
フォーミュラツールでデータを作成しましょう。今回はURIのみ作成すればOKです。
なお、page-sizeオプションに1000を指定しています。デフォルトでは100ですので、ユーザーが100名以上登録されている場合は全数出てこないので、調整が必要です。ちなみに、最大値は1000です。それを超えると、Page-numberオプションも組み合わせる必要があります。
その後、ダウンロードツールの「ベーシック」タブ、「ヘッダー」タブ、「ペイロード」タブでそれぞれ以下の通り設定します。
タブ | 項目名 | 設定内容 |
---|---|---|
ベーシック | URL | フォーミュラツールで作成した「UserRequestURL」フィールド |
ヘッダ | これらのフィールドからの値 | x-tableau-auth |
ペイロード | HTTPアクション | GET(or FTP) |
アクセスが成功すると、ダウンロードツールにより以下のようなデータが取得できます。
このうち、DownloadData2というフィールドに欲しいデータが入っているので、またもやXMLパースツールで中身を取り出します。設定は先程と同様です。
ちなみに、nameはTableauServerに登録されているユーザー名(アカウントID)です。弊社ではAD連携を行っているので、ユーザー名は社員番号になっています(モザイクかけています)。正直なところ社員番号ではなんだかよくわからないのでさらに詳細情報が欲しいところです。
さらにここから各ユーザーについて詳細を取得したければ「Query User On Site」などの機能を使って取得していく形となります。
ちなみに、今回のワークフロー全体は以下のとおりです。
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を叩いてみる」の転載となります。
ここにコメントを追加するには、ご登録いただく必要があります。 ご登録済みの場合は、ログインしてください。 ご登録がまだの場合は、ご登録後にログインしてください。