その他お問い合わせ先

lodestar@truestar.co.jp

運営会社

株式会社truestar
truestar activation株式会社

Tableauで閲覧ユーザごとに権限管理

Tableauでのアクセス制御について

作成したダッシュボードをユーザによって見せる、見せないを制御したいという場合、ユーザ毎の権限管理が必要になります 所属部署や、担当地域によって特定の領域だけデータを見られるようにしたい、といったようなケースです。Tableau Serverにはユーザまとめるためにグループを作ることが可能なので

例:部署でグループを作る

単に「ワークブック単位」でビューの表示権限を制御したいだけなら TableauServerで”パーミッション”設定をすれば簡単にワークブックを特定のグループ(ユーザ)に見せる、見せないというのは制御できます

ですが、ビュー自体の閲覧権限は与えつつ、見るユーザによって閲覧できるデータの範囲を制御したい場合にこの機構は使えないので、 そのビューの作りの中で制御する必要があります。今回はデータをユーザ毎に制御する方法を試します

ISMEMBEROF()を使って制御する

Tableauで使える関数の中にTableau Serverで定義された特定のグループに所属しているかどうか、を判定する関数 ISMEMBEROF()があるのでこれを利用します。 この関数は括弧内の引数で指定したグループにユーザが属しているかどうかをtrue/falseで返します

例として「地域ごとの利益率データ」表示するビューを使い、”担当の地域”だけ表示するというケースを想定して制御をかけてみます 前準備としてまずはTableauServerにグループを作ります 地域ごとにデータを制御したいので試しに「関東」、「関西」、「その他」という3つのグループを作りました。

地域別の利益率を月ごとに表示した簡単なグラフを例にとります (データはTableauにデフォルトで付属している”スーパーストア”のデータを使いました)

デフォルトでは特に権限制御はしていないので全ての地域の利益率が表示されます これをアクセスするユーザが所属しているグループによって、特定の地域のみ表示するという制御を加えます

まずは特定のグループに所属するユーザがこのビューを表示したとき、表示可能なデータの範囲がどの部分になるのかを判断するために、 “定義したグループごと”に許可/不許可を判別するためのデータを作ります この判別用のデータはあらかじめデータとして持たせた方がTableauで計算させる必要がなくなりますが、今回は簡単にTableauで生成してしまいます

関東グループには、地域が関東のみのデータを見せたいので、データが”関東地方”の場合にtrueを示すデータを作ります、所属グループが関東のユーザに対してはこのデータだけを見せることになります。 これをグループごとに作り、各グループに所属しているユーザがどのデータを見ればよいのか判定できるような状態にしておきます これで地域ごとに3つのグループそれぞれで真偽の判別が可能になります

最後にこの判別用のデータとユーザの所属するグループから、最終的にどのデータを表示させるのかを制御するための表示許可データを作ります。 ここはユーザに応じて動的な要素とのなるので、Tableauの計算が必須です

自分の所属グループが関東なら関東グループ用のデータ、関西グループなら関西グループ用のデータがTRUEとなるように作っています

最後にこの表示許可データがTRUEの場合のみ表示するという条件でフィルタにいれることで、 閲覧ユーザが所属するグループに応じて表示制御ができます

(関東グループのユーザが閲覧した場合)

(関西グループのユーザが閲覧した場合)

注意点

今回の場合、制御したいグループの数に応じた判別用のデータを持っておく必要があるため、制御したいグループが大量にある場合には向きません。

また、ISMEMBEROF()の関数は引数で与えるグループ名を文字列として決めうちで表記する必要があり、 Tableau Server上でのグループ名が変わった場合に機能しなくなるデメリットがあります

用途に応じて、適切に使えるかどうか考慮してためしてみてください

Toshihiro Rokusya

続きを読む Tableauで閲覧ユーザごとに権限管理

JIRAのデータをTableuと連携させて時間管理したはなし

JIRA×Tableau(×Alteryx)

今回はプロジェクト管理ツールであるJIRAのデータをTableauに自動で連携させタスクにかけた時間を可視化した事例の紹介です

JIRAとは課題管理やプロジェクト管理に用いられるツールで truestarでは細かいタスクをこれで管理し作業のステータスや作業ごとのやり取りをJIRAベースで管理しています

そのJIRAにはタスクごとにどの程度時間を使ったのかを記録できる「作業ログ」という機能で 各タスクにどの程度の時間をかけているかを記録できます

今回JIRAを使って記録した作業時間のログを自動で収集加工し Tableauにそのデータを取り込む仕組みを作って日々データが自動更新されるフローを作りました。

データのETL処理には加工や分析に特化したETLツールの1つであるAlteryxというツールを使っています 大きな流れは以下です

URLからJIRAデータを自動で取得 Alteryxが自動でETL処理、Tableau Serverにパブリッシュ Tableau でJIRAのデータを可視化 1.URLからJIRAデータを自動で取得

細かなJIRAの機能は割愛しますが各タスクのデータはタスクの検索結果をCSV出力するという機能があり これにはユニークなURLが振られています、特定のURLにアクセスすればタスクの検索結果をCSVファイルとしてダウンロードすることができます

今回は「時間管理ログ出力」フィルタを作りこのURLにアクセスしてCSVを拾います URLにアクセスできればなんでもよいのですが今回はここから自動でURLを抜くのにPythonを使いました

簡単にですが以下のようなイメージです 流れは至極簡単でJIRAの認証を通してURLアクセス後 ファイルを特定のフォルダに吐き出しているだけです このプログラムWindowsのスケジュール機能で定期的に動かしています

2.Alteryxが自動でETL処理、Tableau Serverにパブリッシュ

JIRAからひっぱってきたデータはタスクに関連するあらゆるデータを含んでいます そのままではTableauに取り込みづらいためAlteryxで必要なデータに加工をしてあげます

加工の処理もそれほど複雑なことはしていませんが自動化のための肝は2つです 1つめはJIRAの作業ログデータの特徴として1つのタスクに複数の作業ログが記録されている場合

データは「作業ログ」という同名の列を複数持つことになります、その数はタスクの作業ログの数に比例するので何個あるかは不明です

CSVデータのイメージ(*あくまでイメージですので実際の中味とは異なります) タスク名称,作業ログ,作業ログ,作業ログ… tableau-idの記事を書く, ドラフト版作成:1時間, 第1項作成:2時間, 成果物チェック:2時間,…

このデータをAlteryxに読み込ませるとAlteryxが忖度してくれて 「作業ログ1,作業ログ2,作業ログ3…」と勝手に連番をつけて読み込まれます Tableauで処理する都合上、この作業ログというデータはこのように横にくっつく形ではなく 縦に積み上げてデータを持つ形が理想です (縦に持っていたほうが作業ログ時間の”集計処理”などが楽なので)

なので必要な列データを選択するタイミングで”作業ログ~”という名称を持つデータをまとめて取り込み 「REGEX_Match([Name],”作業ログ.*”)」 対象の列を絞り込んだら作業ログをまとめて縦持ちにしておきます

2つ目は単純にAlteryxで処理したデータを最後にAlteryxでTableau Serverにパブリッシュしてしまう という点 Tableau Serverへのパブリッシュは「Publish

続きを読む JIRAのデータをTableuと連携させて時間管理したはなし

日常レポートにおけるストーリーの使い方

Tableauの機能の中でワークシート、ダッシュボードは使うけどストーリーは使ったことがないな?という方も多いのではないでしょうか。

(左からワークシート,ダッシュボード,ストーリーの追加)

Tableauの公式のヘルプを見ると以下のように記載されています。

Tableau のストーリーとは、情報を伝達するために連続した視覚化を組み合わせたものです。ストーリーを作成することで、データを物語風に語ったり、背景を提供したり、決定と結果の関連を示すことができます。または単に強力な説明を行うこともできます。

http://onlinehelp.tableau.com/current/pro/desktop/ja-jp/stories.html

もちろんこういった使い方が本来の用途かと思いますが、ストーリーの特性を利用して日常のレポーティングにも活用できる可能性があるかもしれない、 というのが今回の投稿内容となります。

 

スーパーストアのサンプルワークブックを使用します。

ストーリーはダッシュボード又はワークシートを挿入して更に説明書きを加える機能があります。

 

 

もう一つの特徴として、

・変更したフィルタは元のダッシュボードやワークシートには反映されず、そのストーリーポイント内のみで維持される

という点が上げられます。

これを利用すると、

・関東地方の情報、関西地方の情報をフィルタを切り替えずに配信したい

という時に、同じダッシュボードを複製してフィルタだけを切り替えたものを別途用意する必要がなくなる可能性があります。

var divElement = document.getElementById(‘viz1514440999796’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; vizElement.style.width=’1016px’;vizElement.style.height=’991px’; var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);

注意点としては、

・ストーリーポイント内で変更したフィルタは元のダッシュボードやワークシートでフィルタを変更しても反映されなくなる

点が上げられます。

逆に言えばストーリーポイント内で変更していないフィルタについては、元のダッシュボードやワークシートでフィルタを変更すれば反映されます。

少々癖があり使いにくい部分がありますが、使いこなせば便利な側面もありますので是非お試しください。

Tableau_id執筆者:林 周作(Shuusaku Hayashi)

続きを読む 日常レポートにおけるストーリーの使い方

アクションフィルターを並び替える

今回はアクションフィルターを並び替えるということでTIPSをご紹介致します。

よくあるシチュエーションとしては、画面遷移などでアクションフィルターを使用する際、 遷移先の画面でも同じフィルターを切替えて見たい(わざわざ元の画面に戻りたくない)。 そんな時はアクションフィルターをダッシュボード上に表示させれば解決!

・・・するはずが元々設定していた並び方と順番が違くて微妙。 並び替えはしてあるはずなのにどうして?

といった事態を解決するテクニックです。 それではストーリーで見ていきましょう。

サンプルで使用するデータはスーパーストアです。

 

var divElement = document.getElementById(‘viz1500951021497’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; vizElement.style.width=’1020px’;vizElement.style.height=’1033px’; var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);

  繰り返しにはなりますが、デメリットを挙げるとすると 並び替えの設定を複数回行う必要がある点ですが、 できるかできないかを知っておくことが実装の幅に繋がりますので 頭の片隅に置いておいて頂ければと思います。

Tomofusa.Oi

続きを読む アクションフィルターを並び替える

KPIダッシュボードサンプル改

4月19日のTableau Conference on Tour Tokyoにて 『ダッシュボードデザインの基本』 というテーマで登壇させていただきました。

その中で、KPIダッシュボードのビフォーアフターをご紹介しましたので、ファイルをTableau Publicで共有しました。

簡単な説明とともにご紹介。

 

Tableau-id上で、2014年8月にKPIダッシュボードサンプルという記事を書きましたが、 そこで公開したダッシュボードを『ビフォー』として、 デザイン観点(フォント・色・レイアウト)を意識して簡易に修正した『アフター』版、さらに コンテンツ観点(目的・情報整理・適切な可視化方法)まで加味した『アフターのアフター』版を作りました。

まず、これが『ビフォー』(※2017/04/21 誤って別のファイルを上書き保存してしまったのでver10.1で上げ直しました・・・)

var divElement = document.getElementById(‘viz1492766415867’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; vizElement.style.width=’1173px’;vizElement.style.height=’896px’; var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);

なかなか色がうるさいですね。無駄な枠線などもあります。数値も小さく見づらいです。

 

フォント、色、レイアウトを簡易に調整した『アフター』がこちら。

var divElement = document.getElementById(‘viz1492766350799’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; vizElement.style.width=’1173px’;vizElement.style.height=’896px’; var scriptElement = document.createElement(‘script’); scriptElement.src

続きを読む KPIダッシュボードサンプル改

KPIダッシュボードサンプル

先日、とある会合でシェアしたダッシュボードが好評だったため、Publicでの公開用に Coffee Chainのサンプルデータを用いたKPIダッシュボードを実装してもらいました。

var divElement = document.getElementById(‘viz1492762532372’); var vizElement = divElement.getElementsByTagName(‘object’)[0]; vizElement.style.width=’1173px’;vizElement.style.height=’896px’; var scriptElement = document.createElement(‘script’); scriptElement.src = ‘https://public.tableau.com/javascripts/api/viz_v1.js’; vizElement.parentNode.insertBefore(scriptElement, vizElement);

※2017/04/21 誤って別のファイルを上書き保存してしまったのでver10.1で上げ直しました・・・

※サンプルデータの問題で、『売上総利益』や『売上原価』などの一部データは 当年と前年の数値が完全一致となっており、増減率が0%となっています。

実装のキーポイントは4点

①ダッシュボードなのか分析ツールなのか、その用途を明確にする ・ダッシュボードならば、印刷して1枚で概要把握できるものを心掛ける ・ユーザーがドリルダウンすることを期待すべきではない(実際ほとんどしない)

②数字とグラフをバランスよく配置する ・正確な数値を認識すべきものと、ざっくりとボリューム感や結果を俯瞰すべきものを区別する

③一段階ドリルダウンした情報までは見せる ・全体の数値(総計)+1段階のドリルダウンだけで、良否の主要因は把握できる ・加えて、ユーザーの分析マインドに火をつける(きっかけになる)

④色はシンプルに設定する ・データや用途によってはグラデーションより2色や3色で見せる方が明確に事象を把握できる (グラデーションや多色の場合、プロジェクターでのプレゼンには向かない)

参考文献 Information Dashboard Design Stephan Few著(洋書)

ちなみに、このダッシュボードを実装したスタッフは、入社してわずか2週間後に これを完成させました。 参考になるファイルさえあれば、類似したアウトプットを簡単に実装できてしまうところが Tableauの良いところでもあります。

以上です。 ご参考になれば幸いです。

続きを読む KPIダッシュボードサンプル