#tc18 [レポート] Tableau Server ClientとREST APIを使用した作業の自動化 – Tableau Conference 2018 at New Orleans
目次
セッション概要
当セッションの概要は以下の通りです。
<レベル> Intermediate
<セッション概要> Join this session to learn and understand how to use the REST API with the Tableau Server Client, and to explore ways to better automate your workflow. (このセッションに参加して、Tableau Server ClientでREST APIを使用する方法を理解し、ワークフローをより自動化する方法を検討してください。)
セッションレポート
Tableau REST APIとは何か?
そもそも「REST」とは何か?
RESTとはWebサービスの設計思想の一つですが、その思想に基づいて開発されたAPIがREST APIです。そのサービスのURIにHTTPメソッドでアクセスすることで、データの送受信を行うことができます。
データを操作するために必要な最低限の要素(CRUD)も、もちろん可能です。それぞれPOST、GET、PUT、DELETEという形で対応しています。また、返ってくるデータはXMLかJSONとなっています。
Tableau ServerのREST APIとは?
下記のような操作をAPI越しに実現できます。
- ユーザー管理
- ユーザーの作成、照会、更新
- コンテンツとパーミッションの管理
- ワークブックのパブリッシュ、照会、変更
- データソースのパブリッシュ、照会、変更
- サーバーの構成
- サイト、プロジェクト、グループ、パーミッション、スケジュール、サブスクリプション、タグ
Tableau ServerのREST APIを使用することで、下記ようなことも可能です。
- 組み込み分析
- コンテンツ監査
- ワークフローの統合
- 大規模な自動化
curl “http://MyServer/api/3.1/sites/site-id/groups/” –X POST –H “XTableau-Auth:12ab34cd56ef78ab90cd12ef34ab56cd" –d ‘<tsRequest><group name=“TC18" /></tsRequest>’
CurlでTableau Server REST APIを利用する場合はこのような形になります。グループの作成を行います。
(ユーザーをサイトに追加し、さらにグループに登録する部分を、REST APIで行うデモが実演されました。POSTMANを使用しています。)
Tableau Server Client Library(TSC)とは何か?
- Pythonで書かれたクライアントライブラリ
- Tableau Server REST APIの上に構築
- 配管(Plumbing)を扱う
- 例:POSTMANでREST APIを利用するとき、認証を手動で行う必要はない?
- 直感的なAPIデザイン
- PyPIで利用可能
pip install tableauserverclient
- オープンソースプロジェクト
- GitHub - tableau/server-client-python: A Python library for the Tableau Server REST API
プロジェクトを作成してみる
import tableauserverclient as TSC # Set up Authentication server = TSC.Server("server_address") server.use_server_version() tableau_auth = TSC.TableauAuth("username", "password") with server.auth.sign_in(tableau_auth): # Create new project new_project = TSC.ProjectItem("project_name" , "description") new_project = server.projects.create(new_project)
- TSCをインポートします。
- Tableau Serverに認証する処理を記述します。
- そして新規プロジェクトを作成する処理を記述します。
ワークブックをパブリッシュしてみる
REST APIでワークブックをパブリッシュするには、以下の課題があります。
- マルチパートXMLを処理する必要がある
- 1つのリクエストで64MBを超えるワークブックを送信できない
- Pythonでこれを行う場合、パブリッシュするには300行以上のコードが必要
各種リソース
- Dropbox - TC Developer Track Content - Public - 日常をシンプルに
- Tableau Developer Program | Tableau Software
- Tableau · GitHub
まとめ
Tableau ServerのREST APIの解説と、それをPythonで扱うことができるライブラリの紹介、そしてデモが実演されたセッションでした。ワークブックのパブリッシュについては若干面倒な印象を受けましたが、大量のユーザーやグループの追加あたりの単純作業は、これを利用することで楽に自動化することができそうです。