![見出し画像](https://assets.st-note.com/production/uploads/images/94586646/rectangle_large_type_2_30d5eafed02330f3ed69fa7b77978e68.png?width=1200)
初期表示データをユーザーごとに変える方法[DATA Saber挑戦 #Week7]
DATA Saber BridgeプロジェクトにApprenticeとして参加しています。
週一note更新目指します。
ユーザー個別のデータを初期表示させたいニーズは多い
Tableau Server/Tableau Cloudに関してお話を聞くと、「同じURL(同じダッシュボード)で、ユーザーごとに初期表示のフィルターを変えたい」という話をよく耳にします。
このページでは、そういったニーズに応えるためのTableauでのユーザー個別データの初期表示方法を紹介します。
実装方法は色々ある
といっても、初期表示データを変えるための実装方法は色々あります。
実装方法については、「他の人のデータを閲覧不可にする(行レベルのセキュリティ)」か「フィルターから選択することで他の人のデータも閲覧できるようにする」かに分類できます。それらの中でも、今回は設定が複雑でない以下の4つを取り上げます。
![](https://assets.st-note.com/img/1672481334454-G6n17tjlLx.png?width=1200)
基本的に、以下のフローで実装方法を選択すればよいと思います。(もちろん例外もあるので、そこは臨機応変に…)
![](https://assets.st-note.com/img/1672481403472-KDJMsm3Y3G.png?width=1200)
今回は「フィルターから選択することで他の人のデータも閲覧できるようにする」方法(3、4)をメインに解説します。
具体的な実装方法
1.ユーザーフィルターを設定する
Tableauの標準機能である「ユーザーフィルター」を使って、行レベルでデータのアクセスを制限する方法です。
行レベルでのセキュリティを設定する方法のため、ダッシュボード閲覧者は他の人のデータを見ることはできません。
ただ、グループ一つひとつ、またはユーザー一人ひとり設定する必要があり、多くのグループ・ユーザーがいる場合にはあまり向いている方法とは言えません。
参考サイト:手動でユーザー フィルターを作成し、ユーザーを値にマッピングする | Tableau
2.ユーザー関数を利用して、行レベルセキュリティを実装する
Tableauの関数である「USERNAME()」や「FULLNAME()」を使用して、行レベルセキュリティを実装する方法です。
もちろんこの方法でも初期表示をユーザー固有のものにできますが、自分以外・自グループ以外のデータを閲覧することはできません。
![](https://assets.st-note.com/img/1672482644004-Y6ibimhb3L.png?width=1200)
状況に応じて、データソースフィルターに設定する。
ちなみに、Tableau Publicにユーザー関数入りVizをパブリッシュしようとするとエラーになる。
参考サイト:データでセキュリティ フィールドを使用して動的フィルターを作成する | Tableau
3.ユーザーごとにカスタムビューを設定してもらう
ダッシュボードを公開してから、各ユーザーに「カスタムビュー」を作成してもらう方法です。
各ユーザーの見たいようにフィルターを掛けてもらい、その状態でカスタムビューを保存してもらうことで、初期表示時にユーザーごとに見たいデータを見てもらうことができます。
1、2で紹介した方法と明確に異なる点は、他の人のデータも閲覧できることです。
ただ、設定を各ユーザーに委ねる必要がある、という問題点もあります。組織内で活用を進めるためには、カスタムビューの設定についてViewerの方々に説明する必要が出てきそうです。
設定方法はTableauの公式サイトが詳しいです。
![](https://assets.st-note.com/img/1672482996067-UsXXFN3aJ5.png)
「既定に設定」にチェックを入れると、
次回表示時はこのカスタムビューが初期表示される。
参考サイト:カスタム ビューの使用 | Tableau
4.ユーザー関数とパラメーターを利用する
ダッシュボードにアクセスしたユーザー名などをパラメーターに入れることで、表示するデータを切り替える方法です。
各ユーザー(Viewer)による設定作業が必要なく、かつ他ユーザーのデータも閲覧できる方法となります。
ただし、パラメーターでユーザーを選択するため、ユーザーの複数選択はできません。
設定方法としては以下の通り。
![](https://assets.st-note.com/img/1672484894575-5yfh0FAa6C.png?width=1200)
紛らわしいが、User Nameが「(Tableau上の)表示名」、E-mailが「(Tableau上の)ユーザー名」にあたる。
Developer Programで使用しているTableau Cloud環境のため、一部モザイクをかけている。
1.アクセスユーザーのユーザー名を全行に格納する
パラメーターの初期値に設定するためには、データソース内で一意の値にしておく必要があります。そこで、「表範囲LOD式」を使って表の中の列値を全て USERNAME() の結果に揃えます。
![](https://assets.st-note.com/img/1672485423794-2izJAP2ngt.png?width=1200)
Tableau公式サイトによると、FIXED、INCLUDE、EXCLUDEを付けないLOD計算は「表範囲LOD式」と呼ばれるらしい。
※FULLNAME関数でも同様の設定ができますが、USERNAME関数(つまりユーザー名)はサイト内で必ず一意であるのに対しFULLNAME関数(つまり表示名)は一意でない場合があります。
2.パラメーターを作成する
ユーザー名選択用のパラメーターを作成します。
この際、以下の通り設定します。
データ型:文字列
許容値:リスト
リストの値:「固定」→「ワークブックが開いている場合」、USERNAME()に対応するフィールド(今回はE-mail)を選択する
ワークブックが開いているときの値:1で作成した計算フィールド
この「ワークブックが開いているときの値」が、パラメーターの初期値となります。
![](https://assets.st-note.com/img/1672486174786-9cB1ri6kPF.png?width=1200)
3.フィルター用の計算フィールドを作成する
先ほど作成したパラメーターの値と一致している行のみに絞るための計算フィールドを作成します。
![](https://assets.st-note.com/img/1672487069639-iyojJKCnU1.png?width=1200)
4.フィルター用計算フィールドをフィルターに設定する
3で作成したフィルターをワークシートのフィルターに設定します。もちろん、「真」のデータのみ表示するよう設定します。
![](https://assets.st-note.com/img/1672487762060-QGtmBSjqOA.png?width=1200)
![](https://assets.st-note.com/img/1672487859660-j0UNTdPfwb.png?width=1200)
2で作成したパラメーターをワークシートまたはダッシュボードに表示させることで、疑似的なフィルターとして表現することができます。
![](https://assets.st-note.com/img/1672488009459-jyydr9Prhs.png?width=1200)
4 補足.ユーザー関数とパラメーターを利用して初期表示を自グループにする
この実装方法を応用すれば、初期表示を自グループに設定することもできます。
表範囲LOD式を使って全行に格納する集計に、以下のようにIF条件を設定してTableau Server/Cloudのユーザー名とE-mailが等しい行のグループ名が入るようにします。
![](https://assets.st-note.com/img/1672495839195-lJVfCjcHKh.png?width=1200)
そしてパラメーター、フィルター用の計算フィールドも作成すればOKです。
![](https://assets.st-note.com/img/1672496863959-DQ6ucIIa35.png?width=1200)
![](https://assets.st-note.com/img/1672497078341-2gJz25bSrd.png?width=1200)
![](https://assets.st-note.com/img/1672497287593-ETNj5278Ko.png?width=1200)
おわりに
Tableau Server/Cloudでの初期表示データの操作方法について記載してきました。
中でも「初期表示を各ユーザー個人のデータにしたい、でも他のユーザーのデータも閲覧できるようにしておきたい」という場合の解決方法を手厚く記載しました。
「目的のデータを見つけるのが大変」と言われて、折角作成したダッシュボードが使われない…なんてことの無いように、ユーザーの手間も考えてダッシュボードは作成しましょう。
この記事が気に入ったらサポートをしてみませんか?