Tableau Serverに設定しているパーミッションを一括取得する(そしてTableau Desktopで可視化する) #tableau | Developers.IO

Tableau Serverに設定しているパーミッションを一括取得する(そしてTableau Desktopで可視化する) #tableau

はじめに

こんにちは。大阪オフィス唯一のDI部メンバー、tamaです。

Tableau Serverでは、非常に柔軟な権限設定を行うことが出来ます。しかし、ユーザーやグループ、ワークブックが増えてくると、だんだん「誰がどのビューに何の権限をもってたっけ?」と混乱してくることもあります。Tableau Serverでは、基本的には画面上で結構簡単にパーミッションを確認することができますが、「とりあえず一括で権限を見られないのか」という要望もあるかと思います。

今回は、Tableau Serverリポジトリを活用して、パーミッション情報を一気に取得し、Tableau Desktopで見る方法をご紹介したいと思います。

参考にしたTableau Community

準備

環境

  • Tableau Server 10.5
  • Tableau Desktop 2018.1

Tableau Serverリポジトリへアクセスできるようにしておく

下記の記事を参考にして、Tableau Serverリポジトリ(PostgreSQL)にアクセスできるようにしておきます。

データの読み込み

Tableau Desktopを開き、必要なデータを読み込んでいきます。

各コンテンツを取得するテーブルを用意する

下記のカスタムクエリを実行します。

SELECT
    ‘Workbook’ AS TYPE
    ,id
    ,name
FROM
    workbooks
UNION
SELECT
    ‘View’ AS TYPE
    ,id
    ,name
FROM
    views
UNION
SELECT
    ‘Project’ AS TYPE
    ,id
    ,name
FROM
    projects

そして、データペインにドラッグします。

各テーブルについて

next_gen_permissionsテーブルを右結合する

下記の項目で右結合します。

テーブルについて

capabilitiesテーブルを完全外部結合する

下記の項目で完全外部結合します。

テーブルについて

ユーザー情報を取得するカスタムSQLを左結合する

下記のカスタムクエリを実行します。

SELECT
    ‘User’ AS TYPE
    ,users.id AS id
    ,system_users.name AS name
FROM
    users
    JOIN system_users
    ON  users.system_user_id = system_users.id
    UNION
    SELECT
        ‘Group’ AS TYPE
        ,id
        ,name
    FROM
        groups

そして、下記の項目で、next_gen_permissionsに対して左結合します。

各テーブルについて

読み込み完了

各コンテンツ(ワークブック、ビューなど)とパーミッション情報、それに行える動作(capabilities)の情報とユーザーやグループ情報を一気に紐づけました。

ビジュアライズ

後は好きなようにビジュアライズすればよいのですが、ここで上記Communityに記載されていた一例をご紹介します。

列と行シェルフ

  • capabilitiesテーブルの「Capability Name」を列に配置します。
  • カスタムSQL「Objects」の「object type」「obhect name」を、それぞれ行に配置します。
  • カスタムSQL「identities」の「identity type」「identity name」を、それぞれ行に配置します。

パーミッションをひと目でわかるための計算フィールドを用意する

下記の計算フィールドを作成します。

CASE [Permission]
WHEN 1 then "GROUP ALLOW" 
WHEN 2 then "GROUP DENY" 
WHEN 3 then "USER ALLOW" 
WHEN 4 then "USER DENY"
ELSE STR([Permission])
END

そして、これをマークシェルフの色に配置します。

書式設定の調整やフィルタを配置して完成

後は、好きなようにビューを整えると、下記のようになります。ユーザーやグループが、各コンテンツに対して何の操作ができるのかがひと目でわかりますね。

後は、このビューをTableau Serverにパブリッシュして、データソースを定期的に更新するようにすれば、Tableau Server上で、この情報が確認できます。

おわりに

今回はTableau Serverリポジトリを活用して、Tableau Serverのパーミッションを確認する方法を見てきました。この例ではパーミッションに関するデータを見ていますが、Tableau Serverリポジトリには、他にもたくさんの情報が格納されています。米国のTableau Communityを覗いてみると、いくつか「俺が作った最強のカスタム管理ビュー」的なものがアップされていますので、一度見てみてはいかがでしょうか。