組織と従業員のデータを使って、セッション・パラメーター用の権限表を作成する方法

Exploratoryのセッション・パラメーターは、ダッシュボードやノートをパブリッシュした際、該当のコンテンツにブラウザを通してアクセスしたユーザーのメールアドレスやチーム情報に基づいて、表示されるデータを動的に切り替えられる強力な機能です。

この機能を実装する際、最も手間がかかるのは「誰がどのデータを見られるか」を定義した権限の対応表(マトリクス)の用意です。

少人数の組織であれば、手作業で対応表を作ることもできますが、組織が大規模になると、数百人分、あるいはそれ以上の閲覧権限を設定する必要があり、手作業で行うのは現実的とは言えません。

そこで、このノートでは、大規模な組織では一般的に用意されていることの多い従業員と組織のデータを使って、複雑な階層構造(部長なら配下の組織のデータが見えるような構造)を反映した権限対応表を、Exploratory上で効率的に生成する方法を紹介します。

利用データ

今回の作成にあたり、以下の2種類のサンプルデータを使用します。

まず1つ目は「従業員」のデータです。

このデータは1行が1人の従業員を表しており、従業員ID、所属する組織のID(組織コード)、そして「役職(長)」という情報を持っています。

このデータのポイントは、「役職(長)」の値によって「どの階層までを管轄しているか」が定義されている点です。

たとえば事業本部長であれば、その配下にある全ての部やグループの閲覧権限を持つことが期待されます。

なお、今回の組織では「事業本部」、「部」、「課」の順で階層が存在しています。

またセッション・パラメーターでは、メールアドレスやチームの情報でのみフィルタが可能なため、メールアドレスやチームの情報は、あらかじめ、列にもっておくか、全ての処理が完了した後に、従業員IDなどをキーに、それらの情報を列として追加してください。

2つ目は「組織」のデータです。

このデータは1行が1つの組織を表し、階層構造(事業本部、 部 、課)がそれぞれ独立した列として管理されています。

今回のデータの特徴として、部長クラスが所属する組織レコードの場合、それ以下の階層である「課」の列は欠損値になっていることがあります。

これは、その役職者が特定のグループに属しているのではなく、部そのものに直属していることを表しています。

注意点

これらのデータを加工する上での重要な前提条件として、従業員データの「役職(長)」に含まれるラベル(例:事業本部、部)と、組織データの列名が完全に一致していると効率的に作業を進められます。

作業手順

前述したようなデータが手元にあった場合、以下のステップで複雑な権限対応表を完成させられます。

  1. 従業員データに組織の情報を結合する:従業員のデータに組織のデータを結合し、各従業員が所属する組織を特定します。

  2. 不要な組織コードを削除する:直前の結合のステップで追加された「組織コード」が残っていると、後続のステップで、従業員のデータに組織のデータを再結合する際、不要な組織コードの列が重複するため、削除します。

  3. 権限ごとにデータを分割する:役職(事業本部、部、グループなど)ごとにデータを枝分かれさせ、同じ権限の粒度をもった従業員をまとめて処理できるようにします。

  4. 不要な列を削除する:結合時に不要な列ができないよう、自分の役職より下の階層列をあらかじめ削除します。

  5. 組織のデータを再結合する:再び組織データを結合します。この時、自分の管轄レベルを結合キーにすることで、配下の組織をすべて紐付けられます。

  6. データをマージする:役職ごとに展開されたデータを一つにまとめ、重複した権限を削除してクリーンな対応表を完成させます。

Exploratoryを使った操作

1. 従業員データに組織の情報を結合する

まずは「従業員」のデータフレームを開き、組織のマスターから所属情報を取得します。

「組織コード」の列ヘッダーメニューから「結合(列を追加する / Join)」を選択します。

結合のダイアログが開いたら、結合先のデータフレームに「組織」のデータを選択し、キー列に「組織コード」を選択して実行します。

これで、従業員の行に「事業本部」「部」「課」といった情報が追加されます。

2. 不要な組織コードを削除する

直前の結合のステップで利用した「組織コード」は、従業員のデータに組織のデータを再結合することで意味をなさないデータになるため、あらかじめ削除します。

「組織コード」の列ヘッダーメニューから「列を選択 / 削除」を選択します。

「列を選択」のダイアログが開いたら、「取り除く」にチェックを付けて、「組織コード」を選択して実行します。

これで組織コードを取り除けました。

3. 役職ごとにブランチを作成する

次に、役職に応じて閲覧可能な組織情報を紐付けます。

役職に応じて、閲覧可能な範囲が異なるため、まずは役職(長)ごとにデータを分割します。

ステップの「ブランチを作る」ボタンをクリックしブランチを作成します。

例えば、「1. 事業本部」「2. 部」といった名前を付けます。

このとき、階層順に数字の見出し番号を振っておくと視認性が高まります。

この作業をそれぞれの役職で繰り返します。

なお、今回の従業員データには、役職なしの従業員はおらず、課長が一番の下の役職者となるため、課長の権限用のデータは1のステップで生成が完了していますので、これ以上の処理は不要です。

次にそれぞれのブランチに移動した後、まずは「フィルタ」を使って、該当するブランチと一致する組織長のデータだけに絞り込みます。

例えば事業本部長のブランチで処理をする場合は、「役職(長)」列のヘッダーメニューから「フィルタ」、「等しい」を選び、

「事業本部」を選択し、実行します。

このような処理をブランチ(役職)ごとに繰り返します。

例えば、部長のデータフレームでは、「役職(長)」を「部」でフィルタします。

4. 不要な列を削除する

次に、各データフレームが表す階層よりも下位の階層の列を削除します。

例えば、「事業本部」のデータフレームを開いている場合、「事業本部」より下の階層の列(「部」「課」)が不要な列となります。

そのため、「事業本部」より下の階層の列(「部」「課」)を削除します。

このような処理をブランチ(役職)ごとに繰り返します。

そのため、例えば「部」のデータフレームを開いている場合、「部」より下の階層の列(「課」)を削除します。

5. 組織マスタを再結合して閲覧範囲を展開する

次に「従業員」のデータに「組織」のデータを再結合します。

この時の「キー列」の設定が、権限の範囲を決めます。

「事業本部」のブランチであれば、組織上、一番上の階層になるため、結合キーに「事業本部」だけを指定しますが、ここでのポイントは、対象のデータフレームの組織長より上の全ての階層の組織をキー列として設定することです。

プレビューを確認すると、同じ「事業本部」におけるすべての下位組織(部、課など)が組織のマスターから引き出され、元々1人1行だった本部長のデータが、配下の組織の数だけ「展開」されて増殖していることが分かります。

なお、今回のデータでは、「第二事業本部」には配下の組織がないため、従業員IDが004の従業員の行数はそのままになっています。

このとき、組織コードは不要になるため除外して実行します。

これで、事業本部長の権限データができあがりました。

続いて、「部」のブランチを処理します。同じように結合のダイアログを開き、結合キーに「事業本部」と「部」の2つを指定します。

先程と同じように、対象者が「長」を務める組織以上の階層をキー列として設定するため、ここでは「事業本部」と「部」を選択しています。

上記のような処理をすることで、同じ「事業本部」「部」の名前を持つすべての下位組織(課)が組織のマスターから引き出され、元々1行だった部長のデータが、配下の組織の数だけ「展開」されて増殖します。

この処理を結合キーを変えながら、全ての階層で実行します。

6. 全ての役職データをマージして重複を消す

すべてのブランチ(役職)で同様の「結合」が完了したら、これらを一つにまとめます。

メインの従業員のデータフレームから、ステップメニューの「マージ(行を結合する)」を選択します。

マージのダイアログが開いたら、全ての役職者の権限データを選択します。

このとき、「データフレーム名を保持する」「データ・タイプを強制的にそろえる」のチェックは不要なので、外して実行します。

マージが完了すると、全役職者の閲覧可能な組織コードが網羅されたリストになります。

しかし、この処理を実施したことで、1の処理で既に生成されている行と同じ内容の重複行が生成されてしまいます。(この重複行はデータフレームの各組織長の行です)

そこで最後に、ステップメニューから「これだけを残す/削除する」メニューから「一意な行」を選択します。

「重複する行を除く」のダイアログが開いたら、「評価の対象となる列」に「全ての列」を選択して実行します。

これにより、セッション・パラメーターでログインユーザーをフィルタした際に、その人が「見ても良い組織」がズラリと並ぶ、完璧なセッション・パラメーター用の権限表を用意できました。

なお、セッション・パラメーターでは、メールアドレスやチームの情報でのみフィルタが可能なため、全ての処理が完了した後に、従業員IDなどをキーに、それらの情報を列として追加してください

Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio