Cognos Analytics で Framework Manager無しでのデータ表示制御
Cognosで、ユーザー名や所属グループベースでの、レポートやダッシュボード内のデータに対するアクセスコントロールは、通常は以下の記事の様なやり方で、Framework Managerを使って行います。
Cognos 行・列単位でのデータアクセス権限付与
https://qiita.com/shinyama/items/6f2ca9c6b9db4c319dff
しかしながら、最近増えてきているSaaSや他のパッケージ製品へのCognosの組み込みでの提供方式で、Framework Managerが使えない環境もあります。
データ・モジュールでは、前述の記事のようなデータアクセス権限設定はできず、レポートの機能の中だけで同じような事ができないか、と困った時の対応方法です。
手順
基本的な方針は、レポート実行ユーザーの「ユーザー名」や「所属グループ」を関数で取得し、条件付きスタイルを使用して、表示・非表示設定を行います。
例1):ユーザー名によるリスト全体の非表示
以下の様なリストのレポートを例とします。
リストのクエリーに、以下の定義で「ユーザー名」というデータアイテム(クエリー計算)を追加します。
#sq($account.defaultName)#
リストのプロパティの「プロパティー」で、「ユーザー名」を含む全アイテムをチェックします。
リストのプロパティの「条件付きスタイル」で、以下のようにユーザー名が「cogadmin」の場合の条件を指定します。
作成された条件の設定で、詳細設定タブで「ボックスのタイプ」を「なし」とします。
このレポートをcogadminユーザーで実行すると、リストが表示されません。
例2):所属グループによるリストの特定行の非表示
リストのクエリーに以下の定義で「所属グループ」を作成します。
#sq(CSVIdentityNameList())#
リストのプロパティの「プロパティー」で「所属グループ」を指定します。
「リスト列の本体」を3列選択し、「条件付きスタイル」で以下の様な条件を作成します。
※「システム管理者」グループに所属し、「数量」が1千万以上の行が対象、という意味になります。
([クエリー1].[所属グループ] contains 'システム管理者') and ([クエリー1].[数量] > 10000000)
レポートを実行すると、以下のように「システム管理者」がレポートを実行した場合、数量が1千万以上の行は非表示となります。
どこかでFramework Managerが無い環境でデータ表示制御が必要になった時に、思い出してご活用頂ければと思います。