見出し画像

Tableau データソースにユーザーフィルター(行レベルセキュリティ)を持たせる

へりおんです。
ダッシュボードを公開していると、「ローデータ欲しい」と言われるのはあるあるですが、データ量が多いとExcelなどでは無理ですし手間です。
データソース自体を共有しようにも、ワークブックでユーザーや組織でアクセスできるレコードに制限をかけてる場合は、全量データが入っているデータソースは共有も厳しいです。
また Tableau Pulse はメトリクスを作るときに(今のところ)「データソース」を選択する仕様のため、閲覧するユーザーに対してレコード単位でアクセス制御したい場合に困ります。

そこで、Tableau DesktopやPrep、Pulseでデータソースに接続しても、ユーザーによってアクセスできるレコードが制御できるよう、データソース自体にユーザーフィルター(行レベルセキュリティ)を適用してみます。

異なるユーザーがPrepで同じデータソースに接続した際にアクセスできるレコードを変える
異なるユーザーがTableau Pulseで同じメトリクスを見た際に表示される内容を変える

Tableauの行レベルセキュリティは、データの特定の行に対するアクセス権を制御する機能です。これにより、ユーザーやユーザーグループが特定のデータ行にアクセスできるように設定できます。

Tableau の行レベルのセキュリティ オプションの概要 - Tableau

■Tableau Desktopで対象データを読み込む

Tableau Desktopで対象のデータを読み込みます。データ自体はPrepで出力した .hyper や .csv 、クラウドやオンプレミスのデータベースとかExcelでも大丈夫です。例として「サンプル - スーパーストア」のExcelを使ってみます。

■アクセス権設定用の計算フィールドを作る

アクセス権設定用の計算フィールドについては、ユーザーフィルターやユーザー関数で作成します。ユーザーフィルターは「サーバー」→「ユーザーフィルターの作成」→「(対象のディメンション)」で作成できます。ユーザーフィルターとユーザー関数を複合させた計算フィールドを作ることもできます。

◇ユーザーフィルターで作る場合

グループやユーザー単位でマッピングする

◇ユーザー関数で作る場合

ついでにデータペインの階層やフォルダ構造などを整理しておくと、データソースの利用者が楽になると思います。

■データソースフィルターを設定し抽出する

先ほど作成した計算フィールドをデータソースフィルターに入れます。

続いて、データを抽出します。なお、データソースフィルターを利用していますので、抽出できるレコードは抽出するユーザーに依存されます。できれば全レコードアクセス権のあるユーザーで抽出することをお勧めします。

抽出が完了すると、データソースのアイコンが変わります。これで抽出が完了しました。

■データソースをパブリッシュしパーミッションを設定する

いよいよTableau Cloud にデータソースをパブリッシュします。「サーバー」→「データソースのパブリッシュ」→「(対象のデータソース)」をクリックします。パブリッシュする場所は任意に選択してください。

パブリッシュが完了したら、データソースに対してユーザーが接続できるようパーミッションを設定しておきます。

データソースの「接続」を許可しておく

これで準備は完了です。なお、今回はTableau Desktop(ローカル環境)からデータソースをパブリッシュしていますので、Tableau Bridgeが利用できる環境でしたら、Tableau Bridgeでデータの更新ができます。

Tableau Bridgeは、Tableau Cloudにパブリッシュされたオンプレミスやローカル環境のデータを、Tableau Cloudで利用・更新するためのツールです。

Bridge を使用してデータを最新に保つ - Tableau

■データソースに接続してみる

設定に問題がなければ、パブリッシュしたデータソースに接続すると、ユーザーによってアクセスできるデータが変わっていると思います。また、Tableau Desktopで接続すると、データペインもデータソースをパブリッシュした際の構成になっています。

異なるユーザーでTableau Desktopから接続
異なるユーザーでTableau Prepから接続
異なるユーザーでTableau Pulseのメトリクスを見る

■補足

今回はローカル環境のデータを使う前提で書きましたので、データの更新はTableau Bridgeを利用することになると思います。そのためPrepでデータを作成される場合もローカル環境で実行することになるため、Prep CLI などと組み合わせるのがベターかと思います。

Tableau Prep のコマンドラインインターフェース(CLI)はPrepのフローをコマンドラインから実行できるため、タスクスケジューラと組み合わせてフローを自動実行できます。

コマンド ラインからフロー出力ファイルを更新 - Tableau

また Tableau Cloud の「パブリッシュされたデータソース」でも、同じように行レベルセキュリティを適用したデータソースの作成は可能です。
※2024.3時点ではPrep等でパブリッシュされたデータソースは未対応
※ユーザーフィルターも利用できないため、ユーザー関数での設定が必要

Tableau Cloud の「パブリッシュされたデータソース」

■最後に

いかがだったでしょうか?Tableauで行レベルセキュリティを実装する場合、設定したCreatorにしか中身が分からないのが難点です。
ただ、データソース側でアクセスできるレコードの制御ができると、データソース自体公開することができるようになるケースもあると思います。
その場合、データソースへのパーミッションを気にせずに済み、ワークブック自体も共有できたりしますので、ワークブック共有してほしいという声にも答えやすくなると思います。

パブリッシュしたワークブックのダウンロードを許可する場合

皆さんの参考になれば幸いです。

いいなと思ったら応援しよう!