【自部門のみの】Dr.SumとMotionBoardでレコード権限設定をする【データを参照】

データ集計エンジンであるDr.Sumと可視化ツールであるMotionBoard、この２つを組み合わせて〇億件を超える大量データの分析やデータを可視化して全社共通の可視化基盤を作ることが可能です。

しかし企業で働く社員の全員が同じデータを見れてしまうというのはよろしくないこともあります。
例えば会計の仕訳データであれば、だれがどれくらい給料もらって・・・などは見れてはいけませんし、
人事・給与のデータは人事部の特定の人しか見てはならないですよね。

このデータは見ていい人と見てはならない人のように組織や役職で閲覧権限を設けなければなりません。

今回はDr.SumとMotionBoardを使って、自部門のデータのみを閲覧する場合のやり方を紹介します。

#全体の流れ
今回の流れは大きくわけて、４つとなります。

０.今回のやりたいこと
１.どんな権限がセットできるの？
２.Dr.Sumの設定
３.MotionBoardの設定


さっそく見ていきましょう。


<details><summary>【Dr.Sumとは】</summary><div>
大量のデータを高速集計するデータ分析特化型のDB
簡単な操作でデータを溜め、分析や可視化ができるツールとして、広く愛されているツールです。
MotionBoardと合わせれば、その効果は絶大。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/af16bbeb-2b4b-a22e-eb6b-9d594501d8dd.png" width=60%>

※キャプチャはウイングアーク1st社のホームページより抜粋
[ウイングアーク１ｓｔ株式会社　Dr.Sum](https://www.wingarc.com/product/dr_sum/index.html)
</div></details>
<details><summary>【MotionBoardとは】</summary><div>
様々なデータソースからデータをあつめ、１つの画面上で統合するMotionBoard。
クラウドサービスとの接続もでき、チャットツール送信もできるのでとてもおもしろいです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657180/877897e8-35d1-b055-a80c-b9051866bc38.png" width=60%>
※キャプチャはウイングアーク1st社のホームページより抜粋
[ウイングアーク１ｓｔ株式会社　MotionBoard](https://www.wingarc.com/product/motionboard/index.html)
</div></details>


#０.今回のやりたいこと
極めてシンプルです。
登場人物は関東一郎さん、関西二郎さん、全国三郎さんの３名。
彼らはMotionBoardの同一のボード、つまりはDr.Sumの同一のテーブルを参照しているのですが、
人によって、見えてくるデータが違います。
下記のイメージとなります。

関東一郎さんでログイン
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/2507f0ab-35b0-0554-de28-3aebaea2181f.gif" width=60%>


関西二郎さんでログイン
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/034dc168-67e5-9f18-1877-fa48dfcc4181.gif" width=60%>


全国三郎さんでログイン
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/44db7223-ef5f-8534-5888-0a2ca4f0f0ba.gif" width=60%>


この処理は実はなかなか難しいです。
MotionBoard単体（DBがDr.Sumじゃなくても）できることはできますが、手間がかかりますし、メンテナンス性も良くないです。
他のBIツールでも同じです。
また、データベース内のテーブル構成を頑張って設計すれば、まぁそれもできなくはないです。

しかし、**Dr.Sumがあれば、Dr.Sumに内包される機能だけで実装できます。**
これがとても便利なのです。


#１.どんな権限がセットできるの？
Dr.Sumは権限設定がしっかりとつけられるところがとても素晴らしいです。
そもそもが**全社員で扱えるようなデータ分析基盤**をテーマに開発されているので、
1人がメインで使うセルフサービスBI系とは発想が違います。
全社で使う、また導入後にも様々なデータをどんどん放り込める環境なので、多岐な権限設定が可能になります。

権限はグループ（組織）ごとに設定できます。
例えば販売DBがDr.Sumの中に入っているとして、
・販売DBを参照することができる
・販売DBにデータを取り込むことができる
・販売DBのテーブルを使ってビューを作ることができる
・販売DBの売上テーブルだけ参照することができる
・販売DBの売上テーブルの該当の項目だけ参照することができる
などなどの設定ができます。

つまりは**自分の部門専用のDBを作ることができ、現場のユーザーが自由にデータを放り込み、分析する環境が用意できます。**
もちろんユーザー独自に超大量データ入れられたらどうするの？などの運用の懸念点は発生しますが、
各現場で独自に使えるデータ分析基盤ができるというのは、とても素晴らしいことです。


そして今回は、上記にはない権限である
**・販売DBの売上テーブルの自部門のデータしか参照できないようにする**
の説明をします。


*２.Dr.Sumの設定
ではさっそく設定を見ていきましょう。
まずはDr.Sum側にユーザーとグループを作成します。

作る内容はこんな感じ。

|ユーザー  |グループ  |権限内容  |
|---|---|---|
|関東一郎  |関東グループ  |関東のみのデータを参照|
|関西二郎  |関西グループ  |関西のみのデータを参照|
|全国三郎  |全国グループ  |関東と関西のデータを参照|


###ユーザー・グループを設定する
Dr.SumのEnterprise Managerの「ユーザー」タブより、ユーザを新規作成し、それぞれを作ります。
まだグループは作っていないので、グループの割り当てはなし。
（すみませんキャプチャでは割り当てちゃってますが無視してください）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/95bf3235-af42-50f3-aac5-f4c013225b1a.png" width=60%>


そしてグループを作成し、ここでユーザーを割り当てます。
関東グループには関東一郎さんを割り当てます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/49383750-c02a-47e1-53e3-95f668ce8040.png" width=60%>

ここで「環境変数」タブを開きます。
定数を入れることができますので、関東グループの場合は「関東」、関西グループには「関西」を入れます。
**全国グループには何も入れません**
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/39affc15-e6bd-ae68-f780-45cecb02aab4.png" width=60%>



###ビューに抽出条件を入れる
むずかしい言い方をすると、ビューのWHERE条件に今の環境変数をセットします。
MotionBoardで使いたいビューを開きます。
この「V_売上実績_環境変数」にはどこの地区で売れたかという情報があり、「関東」「関西」「九州」などのブロック情報を持っています。
ここの抽出条件に先ほどの環境変数をいれます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/089f461b-8b93-6cdd-70df-327deb94771f.png" width=60%>

ブロック名の抽出条件に

```
IN ( GET_GROUP_INFO(ENV1) )
```
と入れます。
グループ項目の環境変数1の値を使いなさい、という意味になります。

この指定をすると、
①関東一郎さんでログイン
②関東一郎さんは関東グループに所属している
③関東グループの環境変数は"関東"である
④抽出条件に"関東"を入れて、関東だけのデータを表示する
という処理がされるのです。

これで関東一郎さん、関西二郎さんの設定は終わりましたが、まだ全国三郎さんが残っています。
全国三郎さんの全国グループには環境変数をセットしていません。
全国三郎さんはグループレベルのセットをしてみます。

###グループレベルのセットをする
またまた「ユーザー」タブにうつります。
今回はグループレベルの設定です。

グループレベルはグループに対して、階層を付けることができます。
全国グループは関東グループと関西グループの上位にあたりますので、下図のセットをします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/dfeafb12-85ae-b08d-6816-91993dfbd09a.png" width=100%>

こうすると全国グループでは関東と関西のデータが参照できるようになります。
つまり末端のグループに権限を付与して、上位階層は下位階層の権限を引き継ぐようにすると、異動の運用も軽くなります。

これらユーザー・グループ・グループレベルはすべてCSVでのインポートエクスポートが可能なので、
GUI上で設定せずに一括で変更することもできます。便利です。


##３.MotionBoardの設定
こちらはシンプルに作りました。
Dr.Sumの"V_売上実績_環境変数"を参照したボードを作成します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/92729c76-1db9-ca9c-ca68-8f724fdc09c5.png" width=80%>

左側の「全国グループ　全国三郎 さん」はMotionBoardの変数を入れています。
図形の中に

```
${group_name:1}
${user_id} さん
```
と入れています。

これで作業は完了です。


##確認

それぞれのユーザーでログインして、内容を確認します。
関東一郎さんでログイン
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/2507f0ab-35b0-0554-de28-3aebaea2181f.gif" width=60%>


関西二郎さんでログイン
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/034dc168-67e5-9f18-1877-fa48dfcc4181.gif" width=60%>


全国三郎さんでログイン
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/44db7223-ef5f-8534-5888-0a2ca4f0f0ba.gif" width=60%>


MotionBoard側のユーザー設定でスタートページを設定すると、ログインしたら該当のページに遷移してくれます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/3c807c02-7265-9a09-62cf-6b2f4060a6d6.png" width=60%>


##おわりに
Dr.Sumの権限設定は優秀です。
先ほども少し書きましたが、グループごとに何のDBの何のテーブル（orビュー）の何の項目まで参照できるできないという権限も付与することができます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/657414/a5320cbf-6eaa-a9e2-5f04-bbb3882b83c1.png" width=60%>

BI導入当初は部門だけで使ってそれを徐々に全社展開していく、というプロジェクトも多数あります。
あとからどんどんやりたいことが変わっていった時も、Dr.Sumは柔軟に対応できるところが優れた点です。

ぜひ、この魅力を体感してください。