概要
アクセスフィルターは、レポートを実行中のユーザーに基づいて、表示するデータを制限することができます。例えば、管理職に、自身の部下の人事データだけを閲覧させたい場合に使用することができます。アクセスフィルターは、Yellowfin内で任意の参照IDを持つユーザーを検索し、レポート実行時に、そのIDをフィルターとして使用します。
アクセスフィルター設定手順は、以下の通りです。
- データソース上でアクセスフィルターを作成します。
作成したアクセスフィルターを、ビュー上のフィールドに適用します。
ビュー上で、デフォルトのアクセスフィルターを定義します。
レポートにアクセスフィルターを適用します。
参照タイプの設定
作成したすべてのソースフィルターは、参照タイプを使用して、カテゴライズをする必要があります。これは、ソースシステム内のデータを、Yellowfinのメタデータとリンクさせる時に使用します。また、対象のビューに対して、利用可能にすることのできるフィルターのタイプを、カテゴライズする方法も提供します。
1. アクセスフィルター一覧下部にある、「参照タイプの設定」ボタンをクリックします。
2. 参照タイプ名を入力し、「追加」ボタンをクリックします。あるいは、既存の参照タイプ名の横にある「×ボタン」をクリックして、これを削除します。
注意:フィルタータイプを削除したい場合、編集ポップアップにてタイプを選択し、削除をクリックします。変更を保存するために、「OK」ボタンのクリックを促されます。使用中のタイプを削除した場合、レポートのフィルタープロセスに影響します。
アクセスフィルターの作成
1. 接続詳細ページで、アクセスフィルターの項目を開きます。
2. 新しいアクセスフィルターを作成するために、「追加」ボタンをクリックします。
アクセスフィルターを初めて作成する場合は、こちらのメッセージが表示され、アクセスフィルターがどのように機能するのかを確認することができます。
次回アクセスフィルターを作成する際に、このメッセージを表示させないのであれば、「次回からこのメッセージを表示しない」、をクリックします。
次回もこのメッセージを表示するのであれば、「続行」をクリックします。
3. アクセスフィルターレコードを指定する方法を選択します。以下のオプションを利用することができます。
- 手動 - アクセスフィルターの組み合わせを手動で登録することができますが、レコードのメンテナンスはユーザーに依存します。こちらのオプションは一般的に、以下の方法を使用する前に、アクセスフィルターの仕組みを確認するために用意されています。
- レポート - レポート結果を、アクセスフィルターのレコードとして使用することができます。こちらのオプションには、アクセスフィルターのレコードとして利用できるレポートが必要です。
- SQLクエリー - アクセスフィルターのためのレコードを返すSQLクエリーを記述して、SQLを実行することでアクセスフィルターのレコードを登録することができます。
- CSV - アクセスフィルターのレコードの登録方法として、CSVファイルをアップロードして登録することができます。
- インラインSQL - アクセスフィルター値が必要になるたびに実行されるパラメーターを含むSQLクエリーを入力することができます。
フィルターパラメーター
各アクセスフィルターには、Yellowfin ユーザーの参照IDと一致する1つ以上のレコードが一覧に含まれています。これらのレコードは、次の4つの方法でシステムに登録することができます。手動入力、CSVファイル、Yellowfin レポートから、ソースデータベース上でのSQLクエリーのスケジュール実行です。
どの方法を選択した場合でも、以下の4つのフィールドを1レコードとして、この順序通りに登録する必要があります。
識別子のタイプ | 識別子 | フィルタータイプ | 参照ID |
識別子のタイプと識別子は、Yellowfinユーザーを特定するために使用します。 識別子のタイプは、以下のいずれかになります
| 識別子フィールドは、識別子のタイプで指定したユーザー識別子(電子メールアドレス、YellowfinユーザーID、ユーザーIDのいずれか)を使用します。 | フィルタータイプフィールドは、どのようなタイプのフィルターなのかを定義するために使用します。これは、ユーザーがビューやレポートを作成する際に表示される名称です。そのため、ユーザーに分かりやすい名称を使用してください。 フィルタータイプを追加したり、削除したりする場合は、接続ページで参照タイプの設定ボタンをクリックしてください。 | 参照IDフィールドは、ユーザーに付随する値を指定します。参照IDで指定した値をフィルターの値として使用します。 |
手動アクセスフィルター
設定
アクセスフィルターレコードを、どのように指定し、更新するのかを定義するために、すべての設定をおこなう必要があります。
設定 | 説明 |
名前 | データソース接続のページとスケジュール管理のページで、このアクセスフィルターを識別できるように名前を指定します。 |
参照タイプ | ビューでフィールドに関連付けるときに、アクセスフィルターの値を識別できるようにラベルを指定します。 より詳細な情報は、参照タイプの設定を参照してください。 |
更新タイプ | 更新タイプには、2つのオプションがあります。
|
更新通知 | 定期的にこれらのレコードを更新をするためのリマインダーとしてシステムタスクを作成し、スケジュールを定義します。 |
ユーザー
値を割り当てたいユーザーを検索し、一覧からユーザー名を選択します。
値
各ユーザーに関連する値を定義します。各行に入力できる値は1つだけなので、複数の値を設定したい場合は、対象のユーザーを必要な回数追加してください。
レコード
アクセスフィルターに読み込まれたすべてのレコードを確認することができます。
使用
使用数を確認することで、アクセスフィルターがどのように、いつ使用されているのかを特定することができます。
レポートアクセスフィルター
設定
アクセスフィルターレコードを、どのように指定し、更新するのかを定義するために、すべての設定をおこなう必要があります。
設定 | 説明 |
名前 | データソース接続のページとスケジュール管理のページで、このアクセスフィルターを識別できるように名前を指定します。 |
レポートの選択 | アクセスフィルターのレコード登録用に設定されているレポートを選択します。 |
更新タイプ | 更新タイプには、2つのオプションがあります。
|
更新スケジュール | アクセスフィルターレコードを、スケジュールに基づいて自動的に更新するかどうかを定義します。 |
レポート
アクセスフィルターレコードとして使用するレポートを選択するために、こちらの設定が有効の状態で保存されたレポートが必要です。
右のようなレポートを使用することができます。
レコード
アクセスフィルターに読み込まれたすべてのレコードを確認することができます。
使用
使用数を確認することで、アクセスフィルターがどのように、いつ使用されているのかを特定することができます
SQLクエリーアクセスフィルター
設定
アクセスフィルターレコードを、どのように指定し、更新するのかを定義するために、すべての設定をおこなう必要があります。
設定 | 説明 |
名前 | データソース接続のページとスケジュール管理のページで、このアクセスフィルターを識別できるように、名前を指定します。 |
データソース | アクセスフィルターレコードを返すクエリーを実行するデータソースを選択します。 |
新規ユーザー作成による自動更新 | 新規ユーザーが作成されるたびに、アクセスフィルターレコードを自動的に更新するかどうかを定義します。 |
SQLクエリ― | アクセスフィルターの値を返すために使用されるクエリ―を定義します。フィルターパラメーターで概略されている書式を使用してください。 |
SQLを定義したら、テストをする必要があります。「テスト」ボタンをクリックすると、データベースからエラーが返されるか、「SQLは有効です」、というメッセージが表示されます。
設定 | 説明 |
更新タイプ | 更新タイプには、2つのオプションがあります。
|
更新スケジュール | アクセスフィルターレコードを、スケジュールに基づいて自動的に更新するかどうかを定義します。 |
設定が完了したら、「送信・実行」ボタンをクリックしてアクセスフィルターを保存し、値を読み込みます。
レコード
アクセスフィルターに読み込まれたすべてのレコードを確認することができます。
使用
使用数を確認することで、アクセスフィルターがどのように、いつ使用されているのかを特定することができます。
CSVアクセスフィルター
使用するCSVファイルは、上記に表示した通り、4つのフィールドでレコードが構成されていなくてはなりません。ファイルは、ヘッダー行を含み、タイトルは「Identifier Type」、「Identifier」、「Reference Type」、「Reference Id」でなければなりません。設定
アクセスフィルターレコードを、どのように指定し、更新するのかを定義するために、すべての設定をおこなう必要があります。
設定 | 説明 |
名前 | データソース接続とスケジュール管理のページで、このアクセスフィルターを識別できるように名前を指定します。 |
ファイル | アクセスフィルターレコードに値を提供するために、CSVファイルをアップロードします。フィルターパラメーターで概略されている書式を使用してください。 |
更新タイプ | 更新タイプには、2つのオプションがあります。
|
更新通知 | 定期的に、これらのレコードの更新をするためのリマインダーとしてシステムタスクを作成し、スケジュールを定義します。 |
レコード
アクセスフィルターに読み込まれたすべてのレコードを確認することができます。
使用
使用数を確認することで、アクセスフィルターがどのように、いつ使用されているのかを特定することができます。
インラインSQLクエリーアクセスフィルター
このタイプのアクセスフィルターの適用は、ユーザーとフィルター値の組み合わせが膨大な量になるお客様向けに導入されました。インラインSQLクエリーアクセスフィルターは、クエリー実行時に動的に実行され、より効率的です。SQLクエリーは、現在のユーザーのIDなどのパラメーター値を受け入れることができます。一致する値を返すために、SQLクエリー断片がクエリーに挿入されます。この方法では、アクセスフィルターが作成される対象のデータベースを使用するため、データベース接続は必要ありません。また、クエリーは毎回動的に実行されるため、この方法では値はキャッシュされません。
設定
アクセスフィルターレコードをどのように指定し、更新するのかを定義するために、すべての設定をおこなう必要があります。
設定 | 説明 |
名前 | 接続やタスク画面でこのアクセスフィルターを識別しやすい名前を提供します。 |
SQLクエリー | アクセスフィルター値を返すために使用されるクエリーを定義します。フィルタークエリーは、単一のユーザーのデータを返します。フィルターパラメーターには、以下のトークンのいずれかを使用してください。 ?USERID? ?EMAIL? ?YFPERSONID? ?FILTERTOKEN? |
SQLを定義したら、これをテストしなくてはいけません。テストボタンをクリックし、任意のパラメーターに値を入力します。これらのパラメーターはテスト用であり、実行時に実際の値に置き換えられます。データベースから返されたエラーが表示されるか、有効なメッセージが表示されます。完了したら、送信・実行ボタンをクリックして、アクセスフィルターを保存します。
この方法に関するその他の注意事項:
- SQLクエリーの代わりに、カスタムデータベース関数/プロシージャを使用することもできます(SQLで直接呼び出せる場合)。
例: getCountriesForUser({USERID}) - インラインSQLクエリーに基づくソースフィルターを実装したビューは、シグナルおよびキャッシュされたフィルターと互換性がありません。
- フィルタートークンは、SSOプロセスを介してユーザーセッションに渡すことができます。これは、SSOペイロードのパラメーターオプションで設定され、FILTERTOKEN=value という形式である必要があります。SQLに ?FILTERTOKEN? 参照が含まれ、フィルタートークンがセッションに渡されていない場合、レポートを実行しようとするとエラーメッセージが表示されます。FILTERTOKENは、バックグラウンドレポート実行シナリオでは動作しない場合があります。
- インラインSQLアクセスフィルターが有効な場合、一部のレポートフィルターオプションは利用できません。
- この方法は、以下では使用できません。
- サブセレクトまたはIN ステートメントのクエリーをサポートしていないデータソース
- 非リレーショナルデータソース
- ストアドプロシージャに基づくビュー
ビューへのアクセスフィルターの適用
データベース上で設定したアクセスフィルターは、そのソースに対して作成されるすべてのビューに適用することができます。- ビューを作成し、ステップ2.ビューフィールドページで、作成した参照タイプの1つと一致するフィールドを選択します。
- アクセスタブを開き、アクセスフィルター項目から対応するタイプを選択します。フィルターレコードを持たない参照タイプを選択することはできません。
- アクセスフィルターを選択したら、フィールドを保存します。必要に応じて、複数のフィールドに、異なるアクセスフィルタータイプを適用することができます。
- ビュー上でフィールドにアクセスフィルタータイプを適用したら、ビューセキュリティページに移動します。このビューから作成するレポートに適用するアクセスフィルターのデフォルトを選択することができます。必要無い場合は、選択しなくても構いません。デフォルト設定でフィルターを適用した場合、このビューを使用して作成されるすべてのレポートに、対象のフィルターが適用されます。適切なアクセス権限を持つレポート作成者のみ、レポート単位でこのフィルターの変更をしたり、設定を解除したりすることができます。
レポートへのアクセスフィルターの適用
ドラッグ&ドロップビルダーを使用してレポート作成をする場合、選択したビューにアクセスフィルターが定義されていれば、レポートにそのフィルターを適用することができます。
レポートのデータページで、画面中央にあるレポートオプションボックスから、レポートデータ項目を開きます。アクセスフィルター項目には、選択したビューに適用されているすべてのフィルターが表示されます。
ここでフィルターを選択すると、ユーザーがレポートを実行するたびに、その結果が適用されます。
注意:適切なセキュリティアクセス権限を持つユーザーのみ、レポートに適用されたアクセスフィルターの設定を変更することができます。
注意:アクセスフィルターが適用されたレポートでは、スクリーンショットを取得することができません。
アクセスフィルターの上書き
こちらの設定は、管理者など、特定のユーザーがアクセスフィルターを上書きすることで、すべての結果を表示できるようにします。これは、上書きコードを定義し、特定のユーザーのソースフィルターエントリーに追加することで実現できます。これにより、Yellowfinは設定されたユーザーにアクセスフィルターを適用せず、すべての結果を提供します。
アクセスフィルターのOn/Off切り替えができるのは管理者ユーザーのみで、設定が適用されたユーザー自身は、自らこれを制御することはできません。
上書き機能の有効化
アクセスフィルターを上書きするコードを使用する前に、この機能を有効化する必要があります。これは、データベース内の構成テーブルに、以下のSQLクエリーを追加することで実行できます。
INSERT INTO Configuration VALUES (1,'SYSTEM','SOURCEFILTERWILDCARD','%');
上記の例で、「1」はプライマリー組織IDを、「%」が上書きコードを示します。コードを定義するために、任意の文字、または文字シークエンスでコード値を指定します。例:「no_filters」
注意:こちらのクエリーを追加後、Yellowfinを再起動してこの機能を有効化します。