0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめての記事投稿
Qiita Engineer Festa20242024年7月17日まで開催中!

Tableau ServerにREST APIを使用してアクセスする(コマンドラインを利用)

Posted at

Tableauサーバへのアクセス

社内に立てられたTableauサーバにはREST APIでアクセスする機能があります。
この記事ではコマンドラインからアクセスする手順をまとめます。
具体的にはサーバの認証を行い、アップロードされたTableauのViewからグラフの画像とデータのCSVをダウンロードする方法をまとめます。

やりたいこととしてはREST APIを使用して以下のTableauの画面にアクセスし、グラフデータの画像とデータをブラウザアクセスなしに取得することです。
以下の画面だとダウンロードメニューからイメージとデータをダウンロードした場合と同じになります。

Tableau画面スクリーンショット 2024-07-13 140909.png

準備

Windows10またはWindows11でコマンドプロンプトを開きます。標準で使用できるcurlコマンドを使ってアクセスします。
その際に実行するフォルダを決めておいてそこに移動します。
以下の例では c:\work/rest フォルダで作業します。
コマンドプロンプト.png

##認証
まずはTableauサーバの認証を通す必要があります。
認証のREST APIについては以下に記載があります。
https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_concepts_auth.htm

ユーザー名とパスワードでもアクセスできそうですが、今回は個人用アクセストークンを使用して認証を通します。

個人用アクセストークンの準備

Tableauサーバの右上の個人アイコンをクリックし、「マイアカウントの設定」メニューをクリックします。セキュリティメニューの下の方に「個人アクセストークン」とありますので、そこで「トークン名」を決めて、「新しいトークンを作成」ボタンをクリックします。

スクリーンショット 2024-07-13 004545.png

ダイアログが表示されますので、トークン名とトークンをどこかに保存しておいてください。
アクセストークン.png
「クリップボードにコピー」ボタンをクリックするとトークンシークレットがコピーされます。

認証用のファイルの作成

curlでHTTP POSTをする場合はテキストファイル指定の方がやりやすいため以下の内容のテキストファイルを作成してください。例えばsignin_token.xmlと保存します。
ここではpersonalAccessTokenNameに先ほど決めた「トークン名」のtest、personalAccessTokenSecretにコピーした「トークンシークレット」例えば TTTTTTTTTTTTTTTTTTTTTTTTTTTTT を入れてください。
作成したファイルは実行するフォルダ(c:\work/rest)に保存してください。

signin_token.xml
<tsRequest>
	<credentials
	  personalAccessTokenName="test" personalAccessTokenSecret="TTTTTTTTTTTTTTTTTTTTTTTTTTTTT" >
  		<site contentUrl="" />
	</credentials>
</tsRequest>

認証の実施

以下のコマンドを実行して認証をします。
curl "https://サーバのアドレス/api/3.11/auth/signin" -X POST -d @signin_token.xml

<?xml version='1.0' encoding='UTF-8'?><tsResponse xmlns="http://tableau.com/api" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tableau.com/api https://help.tableau.com/samples/en-us/rest_api/ts-api_3_11.xsd">
<credentials token="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" estimatedTimeToExpiration="364:23:59">
    <site id="ssssssss-ssss-ssss-ssss-ssssssssssss" contentUrl=""/>
    <user id="dddddddd-dddd-dddd-dddd-dddddddddddd"/>
    </credentials>
</tsResponse>

これ以降はtokenにある文字列(XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)を使ってAPI実行できるようになります。

ビューの検索

REST APIでアクセスできるようになりましたら次にTableauのViewのIDを探します。
先ほどの認証で取得したsite idを使用してビューを検索します。

シート名を「Order_Sales」にしたのでシート名をキーに検索します。
curl "https://サーバのアドレス/api/3.11/sites/ssssssss-ssss-ssss-ssss-ssssssssssss/views?filter=viewUrlName:eq:Order_Sales" -X GET -H "X-Tableau-Auth:(XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

<?xml version='1.0' encoding='UTF-8'?><tsResponse xmlns="http://tableau.com/api" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tableau.com/api https://help.tableau.com/samples/en-us/rest_api/ts-api_3_11.xsd">
<pagination pageNumber="1" pageSize="100" totalAvailable="1"/>
<views>
    <view id="vvvvvvvv-vvvv-vvvv-vvvv-vvvvvvvvvvvv" name="Order_Sales" contentUrl="orders_sales_sample/sheets/Order_Sales" createdAt="2024-07-12T15:17:59Z" updatedAt="2024-07-12T15:18:58Z" viewUrlName="Order_Sales">
    <workbook id="wwwwwwww-wwww-wwww-wwww-wwwwwwwwwwww"/>
    <owner id="oooooooo-oooo-oooo-oooo-oooooooooooo"/>
    <project id="pppppppp-pppp-pppp-pppp-pppppppp"/>
    <tags/>
    </view>
    </views>
</tsResponse>

なお、シート名が日本語だったりわからない場合はViews全体に検索をかけれます。
curl "https://サーバのアドレス/api/3.11/sites/ssssssss-ssss-ssss-ssss-ssssssssssss/views" -X GET -H "X-Tableau-Auth:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

この場合はViewがすべて検索されるので何件もviewのデータが入ったXMLを読み解いてview idを見つけないといけないです。

グラフのダウンロード

このビューは以下のようなものなのでそのまま画像とデータを取得します。
スクリーンショット 2024-07-13 011038.png

画像のダウンロード

以下のコマンドを実行します。
curl "https://サーバのアドレス/api/3.11/sites/ssssssss-ssss-ssss-ssss-ssssssssssss/views/vvvvvvvv-vvvv-vvvv-vvvv-vvvvvvvvvvvv"/image?resolution=high" -X GET -H "X-Tableau-Auth:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" > test.png

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 59063    0 59063    0     0  25713      0 --:--:--  0:00:02 --:--:-- 25724

実行したフォルダ(c:\work\rest)にtest.pngというファイルがダウンロードされます。

データのダウンロード

以下のコマンドを実行します。
curl "https://サーバのアドレス/api/3.11/sites/ssssssss-ssss-ssss-ssss-ssssssssssss/views/vvvvvvvv-vvvv-vvvv-vvvv-vvvvvvvvvvvv"/data" -X GET -H "X-Tableau-Auth:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" > test.csv

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  5391    0  5391    0     0   2682      0 --:--:--  0:00:02 --:--:--  2686

実行したフォルダ(c:\work\rest)にtest.csvというファイルがダウンロードされます。

まとめ

簡単ですが、REST APIを使用してTableauのグラフの画像とデータをダウンロードする方法をまとめました。次回はこれをPythonプログラムから実行したいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?