Weitere ähnliche Inhalte
Ähnlich wie Tableau Developers Club Season2 /*TableauのAPIすべて*/ Tableau Server REST API Workshop (20)
Mehr von Hiroshi Masuda (10)
Tableau Developers Club Season2 /*TableauのAPIすべて*/ Tableau Server REST API Workshop
- 2. REST APIって何
REpresentational State Transferの略
Webアプリケーションの「分かりやすい」インターフェイス
あるリソースに対する
GET(取ってくる)、POST(作る)、PUT(更新する)、DELETE(消す)
の操作をURLとHTTPメソッドで表現
言語は問いません
- 3. TableauServer REST API
Tableau ServerのWeb UIの操作がAPIで可能
URLへHTTPメソッドでアクセス
リクエスト、レスポンスの内容(ボディ)は、XML形式(JSONも可)
処理の成功、失敗は返却されるステータスコードで判断
処理順
1. サインイン
2. 各処理を実施
3. サインアウト
TableauServerの
WebUIで
操作するのと一緒!
※REST APIの詳細は、リファレンスを参照してください。
https://onlinehelp.tableau.com/current/api/rest_api/en-
us/REST/rest_api_ref.htm
- 5. 1. サインイン
curl "http://18.179.4.4/api/3.2/auth/signin" -X POST -d
@signin.xml
<tsRequest>
<credentials name="dev-club-creator"
password="password" >
<site contentUrl="dev-club" />
</credentials>
</tsRequest>
リクエスト
リクエストボディ(signin.xml)
TableauServer名
を指定
APIのバージョン
を指定
※注
APIバージョンはTableauServerのバージョンによって違います。
新しいTableauServerバージョンへ古いAPIバージョンでは
アクセスできません。(逆はOK)
・2018.3へ3.1でリクエスト NG
・2018.2へ3.2でリクエスト OK
TableauServerバージョンとAPIバージョンの対応はリファレンス
をご参照ください。
サインイン
ユーザ名
サインイン先
サイト名
パスワード
- 7. 参考:JSON形式なら
curl "http://18.179.4.4/api/3.2/auth/signin" -X POST -H "Accept: application/json" -H
"Content-Type: application/json" -d @signin.json
{
"credentials": {
"name": "dev-club-creator",
"password": "password",
"site": { "contentUrl": "dev-
club" }
}
}
リクエスト
リクエストボディ
(signin.json)
レスポンス
{
"credentials":{
"site":{
"id":"76c69004-de1b-4a49-b244-554d18cccf70",
"contentUrl":"Dev-club"
},
"user":{"id":"3f3a451b-18cc-4156-880a-186e67bf09d6"},
"token":"ub0uIiuJT5yNbbE0rHP6ug|1MT4v5cGFCwKVVtgCby7tY
Ure3PLHipp"
}
}
- 8. 2. ユーザリスト取得
curl "http://18.179.4.4/api/3.2/sites/76c69004-de1b-4a49-b244-
554d18cccf70/users" -X GET -H "X-Tableau-Auth: yRnoOOSWSSW5jVGWbR-
d7Q|IOCYGocPpH30ruaKNHi7jXcOjqvlwS6W"
リクエスト
サインイン時に取得した
サイトIDを指定
サインイン時に取得した
認証トークンを指定
<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-3.2.xsd">
<pagination pageNumber="1" pageSize="100" totalAvailable="2"/>
<users>
<user id="3f3a451b-18cc-4156-880a-186e67bf09d6" name="dev-club-creator“ siteRole="SiteAdministratorCreator"
lastLogin="2019-01-22T04:28:45Z" externalAuthUserId=""/>
<user id="1b003a5d-4e30-45f7-9b92-77f8283905af" name="dev-club-explorer" siteRole="SiteAdministratorExplorer"
externalAuthUserId=""/>
</users>
</tsResponse>
レスポンス
サイト内に作成されているユーザーの
情報がユーザー数分、返ってきます。
(今回は2人分)
- 11. REST API使ってどんなことするの?
Tableau ServerのWebUIで個々のリソースに対して、「手で」行う操作の自動化が
可能
ユーザー作成など運用作業の自動化が可能
(Tableau Serverとは別の)Webアプリケーション上で、Tableau Serverのリソース
操作を行うサーバの開発が可能(がんばれば…)
ここで、実際にREST APIを使用しているユーザーさんに
どんなことをしているか、お話していただきたいと思います。
- 14. Tableau Server Client (Python)とは
これらのhttp接続や、XMLデータの作成や、レスポンスXMLの解析を抽象化し、
「サーバへ接続」、「サインイン」「サイト一覧取得」など、分かりやすいメソッド群を
提供するPythonライブラリです。
pip install tableauserverclient で、簡単にインストール可能
- 15. Tableau Server Client (Python)を使ってみましょう
インストールされていますか?
お困りでしたら、slack #rest-api、またはお近くのスタッフにお声をおかけください。
- 16. Tableau Server Client – Tableau Server接続確認
お手元のカードの情報で、ブラウザからアクセス先のTableau Serverにログイン
できることを確認します。
- 17. Tableau Server Client (Python)を使ってみましょう
エディタを開き tdc_tsc1.py を作成します。
以下の一行を書き込み、保存します。
この行はtableauserverclientという(インストール済みの)モジュールを、”TSC”という名前でこれか
ら使用可能にします。という意味です。
import tableauserverclient as TSC
Anaconda Promptまたはターミナルから、以下の
コマンドでtdc_tsc1.pyを実行します。
$ python tdc_tsc1.py
何もエラーが返ってこなければ、正しくTableau Server Clientが使用可能です。
- 18. Tableau Server Client – サーバへ接続
以下のように、認証情報とログインアクションを書き込み、保存します。
import tableauserverclient as TSC
tablealu_auth = TSC.TableauAuth(‘お手元adminname’, ‘お手元Password’, ‘お手
元Sitename’)
server = TSC.Server(‘http://18.179.4.4’, ‘3.2’)
server.auth.sign_in(tableau_auth)
Anaconda Promptまたはターミナルから、以下のコマンドでtdc_tsc1.pyを実行
します。
$ python tdc_tsc1.py
何もエラーが返ってこなければ、ログイン成功です。
- 19. Tableau Server Client – ワークブック一覧取得
import tableauserverclient as TSC
tablealu_auth = TSC.TableauAuth(‘お手元adminname’, ‘お手元Password’,
‘お手元Sitename’)
server = TSC.Server(‘http://18.179.4.4’, ‘3.2’)
with server.auth.sign_in(tableau_auth):
all_workbooks, pagination_item = server.workbooks.get()
for wb in all_workbooks:
print(wb.name)
print(wb.id)
with の書式内で、
ログイン状態を維持
したまま各種処理が
可能
workbooks.get()メ
ソッドでワークブッ
ク一覧リスト(と
ページ番号)を取得
ワークブック一覧リストか
らワークブックオブジェク
トを一つづつ取得し、その
nameとidを出力
- 20. Tableau Server Client – ワークブック一覧取得
import tableauserverclient as TSC
tablealu_auth = TSC.TableauAuth(‘お手元adminname’, ‘お手元Password’,
‘お手元Sitename’)
server = TSC.Server(‘http://18.179.4.4’, ‘3.2’)
with server.auth.sign_in(tableau_auth):
all_workbooks, pagination_item = server.workbooks.get()
for wb in all_workbooks:
print(wb.name)
print(wb.id)
$ python tdc_tsc3.py
Regional.twbx
2baa2bd0-3310-43ec-9c7d-cc269a202d62
Superstore.twbx
7b4f8821-bab7-4118-9f84-489b161e2a98
実行結果
- 21. Tableau Server Client – 同様にサイトユーザ一覧取得
import tableauserverclient as TSC
tablealu_auth = TSC.TableauAuth(‘お手元adminname’, ‘お手元Password’,
‘お手元Sitename’)
server = TSC.Server(‘http://18.179.4.4’, ‘3.2’)
with server.auth.sign_in(tableau_auth):
all_users, pagination_item = server.users.get()
for u in all_users:
print("name:{} / role:{}".format(u.name, u.site_role))
$ python tdc_tsc4.py
name:admin / role:ServerAdministrator
name:058_admin / role:SiteAdministratorExplorer
name:058_1 / role:Creator
name:058_2 / role:Explorer
実行結果
.formatで一行
で出力
- 22. Tableau Server Client – ユーザ一覧からロール変更
import tableauserverclient as TSC
tablealu_auth = TSC.TableauAuth(‘お手元adminname’, ‘お手元Password’,
‘お手元Sitename’)
server = TSC.Server(‘http://18.179.4.4’, ‘3.2’)
with server.auth.sign_in(tableau_auth):
all_users, pagination_item = server.users.get()
for u in all_users:
if u.site_role == ‘Explorer’: # site_roleがExplorerだったら
u.site_role = ‘Unlicensed‘ # Unlicensedに変更して
u = server.users.update(u) # アップデート
print("name:{} / role:{}".format(u.name, u.site_role))
$ python tdc_tsc5.py
name:058_2 / role:Unlicensed
実行結果
- 24. Tableau Server Client - デバッグの友
httpトレースツール Fiddlerで、サーバサイドの問題の見当がつきます。
Signin認証エラーとな。
->サイトが間違っていた..
- 25. Tableau Server Clientのサンプルスクリプト
Tableau Server Clientのサンプルス
クリプトはgitリポジトリに含まれており
ます。
https://github.com/tableau/server-
client-pythonから”Download ZIP”でダ
ウンロード
もしくは”git clone
https://github.com/tableau/server-
client-python.git”