Skip to main content
Ken Takao (CyberAgent, Inc.) 님이 Japan에 질문했습니다

Tableau Serverの運用:その1 サイトカラーをカスタマイズする

先週に引き続き、運用のTipsを書いてみようと思います。

 

今回はTableau Serverを利用しているユーザーをGoogle Spreadsheetで管理してみたいと思い作成したスクリプトを共有させて頂きます。

 

思い立った経緯

Tableau Serverではサーバー管理者の他に、サイト毎に管理者を設定することが出来ます。

一般的にはサイト管理者がユーザーの追加・削除などの管理をされると思うのですが、

その際、他のサイトで対象のユーザーがどんな権限で利用しているかを知る方法がありません。

 

(もしかしたら私が知らないだけかも。。知ってたら教えてください!)

 

どのユーザーがどのサイトでどの権限で利用していて、最大サイトロールが何かを共有する方法がないので、

Google Spreadsheetにユーザーの情報を一覧で定期的に書き出す仕組みを作ってみました。

 

選定技術

・Tableau Server Python Client

GitHub - tableau/server-client-python: A Python library for the Tableau Server REST API

今回はTableau Serverとの通信は直接REST APIを使わず

ライブラリを利用することにしました。

REST APIで実現可能なことは大体このライブラリを使う事で実現できます。

 

・AWS Lambda(Python)

この仕組みは一定期間ごとに(私の場合は1時間毎で運用しています。)データを書き出す仕組みのため、

常にサーバーが稼働している必要はありません。

今回はAWS Lambdaを利用して、完全にサーバーレスで実装することにしました。

Tableau Server Python Clientを簡単に利用することができるのでおすすめです。

CloudWatch Eventsを利用して、CRONのように起動時間を設定しています。

 

・Google Spreadsheet

書き出し先にはGoogle Spreadsheetを選定しました。

データベースのようにお金もかかりませんし、

Tableauのデータソースとしても相性がばっちりです。

Lambdaで利用するにはgspreadというライブラリを使っています。

GitHub - burnash/gspread: Google Sheets Python API

 

スクリプト

GitHub - ken-takao/tableau-user-sync: user sync from tableau server

実際に使っているスクリプトをアップしてみました。

9-15行目あたりでTableauの認証情報やURL、Google SpreadsheetのIDやシート名を記載する必要があります。

あと、importで読み込んでいるライブラリを追加する必要と、

Google Spreadsheetへの認証情報としてauth.jsonファイルが必要になります。

認証情報のjsonファイルの取得は下記を参考

Using OAuth2 for Authentication — gspread 3.1.0 documentation

 

利用用途

このスクリプトにより、定期的にユーザーID、ロール、サイト名、最大ロールが

 

Google Spreadsheetに書き出されるようになります。

書き出されたスプレッドシートを共有することにより、下記の問題を解決出来ると思います。

 

・特定のサイトにアクセスしたいけど権限を持っている人が分からない

・他のサイトでCreatorロールが設定されている人にはCreatorロールを設定してあげたい

・全体でどの程度利用されているのかを分析してみたい

・ユーザーの棚卸しを自動化したい

 

まとめ

今回はTableau Server Python Clientをユーザーの管理に使っていますが、

様々な事が実現出来るので、もし他にも利用事例があれば是非教えて欲しいです!

その他、サーバー管理のTipsとか有れば是非シェアしてください!

よろしくおねがいします!

답변 1개
  1. 2019년 3월 13일 오후 7:57

    おー、ナレッジシェアなかなかいいですね。中身の詳細までは追いつけていませんが、素晴らしい試みです。ありがとうございます。

     

    Shin

0/9000