見出し画像

「ユーザー関数」使っていますか

今年もTableauユーザーグループ「Tabjo」の
Advent Calendarの季節がやってまいりました。

私はDAY16の担当として、今回のnoteをお贈りします。


はじめに

Tableau Server/Cloudで、組織内のたくさんの人に
データを公開するのはとても素晴らしいこと!

ただ、閲覧する人に応じて見せるデータを制御したいケースもあるかと思います。

例えば、
全社を管理する立場の人は、全社のデータを閲覧してOK。でも、個社の社員には、自社データのみ閲覧OKにしたい、など。

そんな時に使えるのが
「行レベルセキュリティ(Row Level Security)」

ということで、Tableauにおける
行レベルセキュリティのことを書き進めていたのですが

行レベルセキュリティの話をしていると
「ユーザー関数?こんなのあったんだ!」
という反応をいただくことが多かったなーとふと思い

今回のテーマは「ユーザー関数」に変更しました。笑

ユーザー関数とは

ユーザー関数とは、
Tableau Server/Cloudにサインインしているユーザーの情報を取得/参照した結果を返す関数です。

全部で6つの関数があります。
①FULLNAME
②USERDOMAIN
③USERNAME
④ISFULLNAME
⑤ISMEMBEROF
⑥ISUSERNAME

①~③は、それぞれに該当するユーザー情報を
④~⑥は、引数とユーザー情報がイコールか否かを
教えてくれます。

言葉だけでは、イメージが湧きにくいので
実際にどんな結果が返されるのかを見てみましょう。

ユーザー関数を使ってみよう

今回の実験で使用するTableau Cloudには
以下の通りユーザー登録がされているとします。

ユーザー情報はすべてダミーです。

まずはDesktopからCloudにサインインします。
[サーバー]>[サインイン]>[Tableau Online]>サインイン情報を入力

UIはまだTableau"Online"ですね。


ワークブックの右下にサインインユーザー名が表示されたらOK!

今日の私は、みなさまお馴染み?の「辻岡 美羽」さんです。


以下の計算フィールドを作成し、ビューに表示すると…


じゃん!

①~③には、「辻岡 美羽」さんの情報が返され
④~⑤には、「辻岡 美羽」さんの情報と引数がイコール→「真」が返されました。


他のユーザーでサインインしたらどうなるのかも気になりますね。

そんな時は、サインインユーザー名の横の▼から
サインインユーザーを切り替えることができます。

「宮前 誠」さんを選択してみると…

青字になっているのが、現在のサインインユーザーです。


サインインユーザーが「宮前 誠」さんに切り替わり、ビューには…


じゃん!

「宮前 誠」さんに対応する結果が表示されました。

なんとなくイメージが湧いたでしょうか。

ユーザー関数の活用方法

じゃあ、このユーザー関数を使って何をできるの?
ということですが

ユーザー情報の取得・参照結果を用いて
閲覧する人に応じた、データのアクセス制御をできます。

「③USERNAME」を使用した一例を
実装手順に沿って、簡単にご紹介します。

1) 地域とユーザー名のマスタを作成

2) [地域]をキーに、トランザクションに結合

3) 以下のような計算フィールドを作成

4) 3)をデータソースフィルターに入れ「真」を保持


データソース内のデータがサインインユーザー名に紐づくレコードに絞られます。


例えば、「辻岡 美羽」さんがアクセスすると

USERNAMEで「miu.tsujioka@s-store.com」を取得し、その値が[ユーザー名]とイコールになるレコードにデータソースフィルターで絞られ(以下赤枠内)

ビューには、当該データのみ表示されます。

このように、データ1行単位のアクセス制御をすることを「行レベルセキュリティ(Row Level Security)」と言います。

Tableauでの行レベルセキュリティの実装には
前述のもの以外にもいくつかのやり方があります。

それぞれに、メンテナンス性や拡張性において
メリット・デメリットがあるので

制御単位や、権限変更の頻度等を考慮した上で
最適なやり方を選びます。

さいごに

ユーザー関数のことを書きながら
普段ダッシュボードを作る時のことを考えました。

"ビジュアライズの仕方と同じくらいに
ビジュアライズの対象を精査できているだろうか"

データをみんなで共有するのは素晴らしいこと。

でも、何でもかんでも見せるのがベストか、というとそうではないはず。

行レベルセキュリティが求められるような
見せることがNGなケースはもちろん

見せてもNGではないけれど、見えることで
相手を困惑させてしまうこともあるかもしれません。

Get dataも担うCreatorとして

ビジュアライズの仕方だけでなく
ビジュアライズ対象を丁寧に考え

あえて広く公開しない、という選択もできることが
大切なのかもしれないと思いました。

おしまい。


この記事が気に入ったらサポートをしてみませんか?