見出し画像

初期表示データをユーザーごとに変える方法[DATA Saber挑戦 #Week7]

DATA Saber BridgeプロジェクトにApprenticeとして参加しています。
週一note更新目指します。

ユーザー個別のデータを初期表示させたいニーズは多い

Tableau Server/Tableau Cloudに関してお話を聞くと、「同じURL(同じダッシュボード)で、ユーザーごとに初期表示のフィルターを変えたい」という話をよく耳にします。
このページでは、そういったニーズに応えるためのTableauでのユーザー個別データの初期表示方法を紹介します。

実装方法は色々ある

といっても、初期表示データを変えるための実装方法は色々あります。

実装方法については、「他の人のデータを閲覧不可にする(行レベルのセキュリティ)」「フィルターから選択することで他の人のデータも閲覧できるようにする」かに分類できます。それらの中でも、今回は設定が複雑でない以下の4つを取り上げます。

他にも実装方法はあるかもしれないが、ポピュラーな方法としては上記になるだろう。

基本的に、以下のフローで実装方法を選択すればよいと思います。(もちろん例外もあるので、そこは臨機応変に…)

実装方法を選ぶためのフローチャートはこちら。

今回は「フィルターから選択することで他の人のデータも閲覧できるようにする」方法(3、4)をメインに解説します。

具体的な実装方法

1.ユーザーフィルターを設定する

Tableauの標準機能である「ユーザーフィルター」を使って、行レベルでデータのアクセスを制限する方法です。
行レベルでのセキュリティを設定する方法のため、ダッシュボード閲覧者は他の人のデータを見ることはできません。

ただ、グループ一つひとつ、またはユーザー一人ひとり設定する必要があり、多くのグループ・ユーザーがいる場合にはあまり向いている方法とは言えません。

参考サイト:手動でユーザー フィルターを作成し、ユーザーを値にマッピングする | Tableau

2.ユーザー関数を利用して、行レベルセキュリティを実装する

Tableauの関数である「USERNAME()」や「FULLNAME()」を使用して、行レベルセキュリティを実装する方法です。

もちろんこの方法でも初期表示をユーザー固有のものにできますが、自分以外・自グループ以外のデータを閲覧することはできません。

上記のような計算フィールドを作成し、フィルターに入れるだけでOK。
状況に応じて、データソースフィルターに設定する。
ちなみに、Tableau Publicにユーザー関数入りVizをパブリッシュしようとするとエラーになる。

参考サイト:データでセキュリティ フィールドを使用して動的フィルターを作成する | Tableau

3.ユーザーごとにカスタムビューを設定してもらう

ダッシュボードを公開してから、各ユーザーに「カスタムビュー」を作成してもらう方法です。

各ユーザーの見たいようにフィルターを掛けてもらい、その状態でカスタムビューを保存してもらうことで、初期表示時にユーザーごとに見たいデータを見てもらうことができます。

1、2で紹介した方法と明確に異なる点は、他の人のデータも閲覧できることです。

ただ、設定を各ユーザーに委ねる必要がある、という問題点もあります。組織内で活用を進めるためには、カスタムビューの設定についてViewerの方々に説明する必要が出てきそうです。

設定方法はTableauの公式サイトが詳しいです。

Tableau Server/Cloudでのカスタムビュー保存時に
「既定に設定」にチェックを入れると、
次回表示時はこのカスタムビューが初期表示される。

参考サイト:カスタム ビューの使用 | Tableau

4.ユーザー関数とパラメーターを利用する

ダッシュボードにアクセスしたユーザー名などをパラメーターに入れることで、表示するデータを切り替える方法です。

各ユーザー(Viewer)による設定作業が必要なく、かつ他ユーザーのデータも閲覧できる方法となります。

ただし、パラメーターでユーザーを選択するため、ユーザーの複数選択はできません。

設定方法としては以下の通り。

用意したサンプルデータソース。
紛らわしいが、User Nameが「(Tableau上の)表示名」、E-mailが「(Tableau上の)ユーザー名」にあたる。
Developer Programで使用しているTableau Cloud環境のため、一部モザイクをかけている。

1.アクセスユーザーのユーザー名を全行に格納する

パラメーターの初期値に設定するためには、データソース内で一意の値にしておく必要があります。そこで、「表範囲LOD式」を使って表の中の列値を全て USERNAME() の結果に揃えます。

LOD関数内では集計する必要があるため、MAXで集計している。
Tableau公式サイトによると、FIXED、INCLUDE、EXCLUDEを付けないLOD計算は「表範囲LOD式」と呼ばれるらしい。

※FULLNAME関数でも同様の設定ができますが、USERNAME関数(つまりユーザー名)はサイト内で必ず一意であるのに対しFULLNAME関数(つまり表示名)は一意でない場合があります。

2.パラメーターを作成する

ユーザー名選択用のパラメーターを作成します。
この際、以下の通り設定します。

  • データ型:文字列

  • 許容値:リスト

  • リストの値:「固定」→「ワークブックが開いている場合」、USERNAME()に対応するフィールド(今回はE-mail)を選択する

  • ワークブックが開いているときの値:1で作成した計算フィールド

この「ワークブックが開いているときの値」が、パラメーターの初期値となります。

「ワークブックが開いているときの値」の選択肢は表範囲LOD式もしくはパラメーターが表示される。もし初期表示したいフィールドがここに出てこない場合は、表範囲LOD式になっているか確認を。

3.フィルター用の計算フィールドを作成する

先ほど作成したパラメーターの値と一致している行のみに絞るための計算フィールドを作成します。

=で結ぶだけで良い。

4.フィルター用計算フィールドをフィルターに設定する

3で作成したフィルターをワークシートのフィルターに設定します。もちろん、「真」のデータのみ表示するよう設定します。

【フィルター設定前】
【フィルター設定後】

2で作成したパラメーターをワークシートまたはダッシュボードに表示させることで、疑似的なフィルターとして表現することができます。

選択したTableau上のユーザー名(メールアドレス)でフィルターされている。

4 補足.ユーザー関数とパラメーターを利用して初期表示を自グループにする

この実装方法を応用すれば、初期表示を自グループに設定することもできます。

表範囲LOD式を使って全行に格納する集計に、以下のようにIF条件を設定してTableau Server/Cloudのユーザー名とE-mailが等しい行のグループ名が入るようにします。

MAX()などの集計の中にはIF文を入れることができる。

そしてパラメーター、フィルター用の計算フィールドも作成すればOKです。

パラメーター作成も同様に。
計算フィールドも同様に。
Tableau Server/CloudのユーザーIDに対応するデータが初期表示されるようになった。

おわりに

Tableau Server/Cloudでの初期表示データの操作方法について記載してきました。

中でも「初期表示を各ユーザー個人のデータにしたい、でも他のユーザーのデータも閲覧できるようにしておきたい」という場合の解決方法を手厚く記載しました。

「目的のデータを見つけるのが大変」と言われて、折角作成したダッシュボードが使われない…なんてことの無いように、ユーザーの手間も考えてダッシュボードは作成しましょう。

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