---
title: "アクセスフィルターによるデータ制限"
canonical: "https://wiki.yellowfin.co.jp/space/yfcurrent/1902018/%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%BC%E3%81%AB%E3%82%88%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E5%88%B6%E9%99%90"
format: markdown
---
> Macro (anchor)



> Macro (toc)

## 概要

アクセスフィルターは、レポートを実行中のユーザーに基づいて、表示するデータを制限することができます。例えば、管理職に、自身の部下の人事データだけを閲覧させたい場合に使用することができます。アクセスフィルターは、Yellowfin内で任意の参照IDを持つユーザーを検索し、レポート実行時に、そのIDをフィルターとして使用します。

アクセスフィルター設定手順は、以下の通りです。

1. データソース上でアクセスフィルターを作成します。
2. 作成したアクセスフィルターを、ビュー上のフィールドに適用します。
3. ビュー上で、デフォルトのアクセスフィルターを定義します。
4. レポートにアクセスフィルターを適用します。

### 参照タイプの設定

作成したすべてのソースフィルターは、参照タイプを使用して、カテゴライズをする必要があります。これは、ソースシステム内のデータを、Yellowfinのメタデータとリンクさせる時に使用します。また、対象のビューに対して、利用可能にすることのできるフィルターのタイプを、カテゴライズする方法も提供します。

1.  アクセスフィルター一覧下部にある、「**参照タイプの設定**」ボタンをクリックします。

![image](media://0c665177-adfd-474b-a20f-616c5d79a5cb)


2.  参照タイプ名を入力し、「**追加**」ボタンをクリックします。あるいは、既存の参照タイプ名の横にある「**×ボタン**」をクリックして、これを削除します。

**<span style="color: #FF0000">注意：</span>**フィルタータイプを削除したい場合、編集ポップアップにてタイプを選択し、削除をクリックします。変更を保存するために、「**OK**」ボタンのクリックを促されます。使用中のタイプを削除した場合、レポートのフィルタープロセスに影響します。

![image](media://564f6ec1-c356-43c2-928f-7bdf9994c30f)

## アクセスフィルターの作成

1.  接続詳細ページで、アクセスフィルターの項目を開きます。

2. 新しい**アクセスフィルター**を作成するために、「**追加**」ボタンをクリックします。

![image](media://96fe8c3e-20f4-4b40-9793-ec4c42f84d14)

アクセスフィルターを初めて作成する場合は、こちらのメッセージが表示され、アクセスフィルターがどのように機能するのかを確認することができます。

次回アクセスフィルターを作成する際に、このメッセージを表示させないのであれば、「**次回からこのメッセージを表示しない**」、をクリックします。

次回もこのメッセージを表示するのであれば、「**続行**」をクリックします。

![image](media://24085669-e97a-443a-a08e-edd86698175a)

3. アクセスフィルターレコードを指定する方法を選択します。以下のオプションを利用することができます。

- **手動**　-　アクセスフィルターの組み合わせを手動で登録することができますが、レコードのメンテナンスはユーザーに依存します。こちらのオプションは一般的に、以下の方法を使用する前に、アクセスフィルターの仕組みを確認するために用意されています。
- **レポート**　-　レポート結果を、アクセスフィルターのレコードとして使用することができます。こちらのオプションには、アクセスフィルターのレコードとして利用できるレポートが必要です。
- **SQLクエリー**　-　アクセスフィルターのためのレコードを返すSQLクエリーを記述して、SQLを実行することでアクセスフィルターのレコードを登録することができます。
- **CSV**　-　アクセスフィルターのレコードの登録方法として、CSVファイルをアップロードして登録することができます。
- **インラインSQL**　-　アクセスフィルター値が必要になるたびに実行されるパラメーターを含むSQLクエリーを入力することができます。

![image](media://372eedda-3614-4b9d-bbea-3c39fe6e467a)


### フィルターパラメーター

各アクセスフィルターには、Yellowfin ユーザーの参照IDと一致する1つ以上のレコードが一覧に含まれています。これらのレコードは、次の4つの方法でシステムに登録することができます。手動入力、CSVファイル、Yellowfin レポートから、ソースデータベース上でのSQLクエリーのスケジュール実行です。

どの方法を選択した場合でも、以下の4つのフィールドを１レコードとして、この順序通りに登録する必要があります。

|  |  |  |  |
| --- | --- | --- | --- |
| **識別子のタイプ** | **識別子** | **フィルタータイプ** | **参照ID** |
| 識別子のタイプと識別子は、Yellowfinユーザーを特定するために使用します。<br>識別子のタイプは、以下のいずれかになります<br>- EMAIL (電子メールアドレス)
- USERID (ユーザーID) | 識別子フィールドは、識別子のタイプで指定したユーザー識別子（電子メールアドレス、YellowfinユーザーID、ユーザーIDのいずれか）を使用します。 | フィルタータイプフィールドは、どのようなタイプのフィルターなのかを定義するために使用します。これは、ユーザーがビューやレポートを作成する際に表示される名称です。そのため、ユーザーに分かりやすい名称を使用してください。<br>フィルタータイプを追加したり、削除したりする場合は、接続ページで**参照タイプの設定**ボタンをクリックしてください。 | 参照IDフィールドは、ユーザーに付随する値を指定します。参照IDで指定した値をフィルターの値として使用します。 |

## 手動アクセスフィルター

![image](media://7fbc1561-2e81-4d23-bef3-2c5c22805cf1)

### 設定

アクセスフィルターレコードを、どのように指定し、更新するのかを定義するために、すべての設定をおこなう必要があります。

![image](media://0aeb92bc-e318-4710-aa27-53dbf8490744)

|  |  |
| --- | --- |
| **設定** | **説明** |
| **名前** | データソース接続のページとスケジュール管理のページで、このアクセスフィルターを識別できるように名前を指定します。 |
| **参照タイプ** | ビューでフィールドに関連付けるときに、アクセスフィルターの値を識別できるようにラベルを指定します。<br>より詳細な情報は、[参照タイプの設定](#id-アクセスフィルターによるデータ制限-参照タイプの設定)を参照してください。 |
| **更新タイプ** | 更新タイプには、2つのオプションがあります。<br>- **追加**：新しいアクセスフィルターの値を、現在のレコードの一覧に追加します。
- **上書き**：新しいアクセスフィルターの値で、現在のレコードの一覧を置き換えます。 |
| **更新通知** | 定期的にこれらのレコードを更新をするためのリマインダーとしてシステムタスクを作成し、スケジュールを定義します。 |

### ユーザー

値を割り当てたいユーザーを検索し、一覧からユーザー名を選択します。

![image](media://e2a2b8d9-0f40-4cf4-b7de-7c5dfcff4edf)

### 値

各ユーザーに関連する値を定義します。各行に入力できる値は1つだけなので、複数の値を設定したい場合は、対象のユーザーを必要な回数追加してください。

![image](media://c2423eb4-61e4-4ba6-a463-f10a40989357)

### レコード

アクセスフィルターに読み込まれたすべてのレコードを確認することができます。

![image](media://86a6a1ad-5d1e-40be-9c7b-1970f7b9eb3b)

### 使用

使用数を確認することで、アクセスフィルターがどのように、いつ使用されているのかを特定することができます。

![image](media://0fc45f6f-2649-4ee0-8332-213beeeb7c72)

## レポートアクセスフィルター

![image](media://be14a6e6-e2bd-4c6e-8a17-017f842a6fdf)

### 設定

アクセスフィルターレコードを、どのように指定し、更新するのかを定義するために、すべての設定をおこなう必要があります。

![image](media://75a2d87a-ae2e-45de-b764-6d7003f8514a)

|  |  |
| --- | --- |
| **設定** | **説明** |
| **名前** | データソース接続のページとスケジュール管理のページで、このアクセスフィルターを識別できるように名前を指定します。 |
| **レポートの選択** | アクセスフィルターのレコード登録用に設定されているレポートを選択します。 |
| **更新タイプ** | 更新タイプには、2つのオプションがあります。<br>- **追加**：新しいアクセスフィルターの値を、現在のレコードの一覧に追加します。
- **上書き**：新しいアクセスフィルターの値で、現在のレコードの一覧を置き換えます。 |
| **更新スケジュール** | アクセスフィルターレコードを、スケジュールに基づいて自動的に更新するかどうかを定義します。 |

#### レポート

アクセスフィルターレコードとして使用するレポートを選択するために、こちらの設定が有効の状態で保存されたレポートが必要です。

![image](media://60aa4b8b-a37a-4a3e-84c6-7e5fa3e20f92)


右のようなレポートを使用することができます。

![image](media://21bf610f-a493-4959-bc65-07134f7eae6c)

### レコード

アクセスフィルターに読み込まれたすべてのレコードを確認することができます。

![image](media://86a6a1ad-5d1e-40be-9c7b-1970f7b9eb3b)

### 使用

使用数を確認することで、アクセスフィルターがどのように、いつ使用されているのかを特定することができます。

![image](media://7d9f9499-6c5a-4eea-a895-4ea438c69f89)

## SQLクエリーアクセスフィルター

![image](media://80acb3a4-0e0f-4b21-a8e7-b7cc576420ef)

### 設定

アクセスフィルターレコードを、どのように指定し、更新するのかを定義するために、すべての設定をおこなう必要があります。

![image](media://d3ac76df-0e95-4e48-bc21-d0dc05d023c4)

|  |  |
| --- | --- |
| **設定** | **説明** |
| **名前** | データソース接続のページとスケジュール管理のページで、このアクセスフィルターを識別できるように、名前を指定します。 |
| **データソース** | アクセスフィルターレコードを返すクエリーを実行するデータソースを選択します。 |
| **新規ユーザー作成による自動更新** | 新規ユーザーが作成されるたびに、アクセスフィルターレコードを自動的に更新するかどうかを定義します。 |
| **SQL****クエリ―** | アクセスフィルターの値を返すために使用されるクエリ―を定義します。[フィルターパラメーター](#id-アクセスフィルターによるデータ制限-フィルターパラメーター)で概略されている書式を使用してください。 |

SQLを定義したら、テストをする必要があります。「**テスト**」ボタンをクリックすると、データベースからエラーが返されるか、「**SQL****は有効です**」、というメッセージが表示されます。

![image](media://20a17d26-55b4-4753-a040-34db3457eb4d)

![image](media://012226d2-8cc6-410e-8804-c499ce702da1)

|  |  |
| --- | --- |
| **設定** | **説明** |
| **更新タイプ** | 更新タイプには、2つのオプションがあります。<br>- **追加：**新しいアクセスフィルターの値を、現在のレコードの一覧に追加します。
- **上書き：**新しいアクセスフィルターの値で、現在のレコードの一覧を置き換えます。 |
| **更新スケジュール** | アクセスフィルターレコードを、スケジュールに基づいて自動的に更新するかどうかを定義します。 |

設定が完了したら、「**送信・実行**」ボタンをクリックしてアクセスフィルターを保存し、値を読み込みます。

### レコード

アクセスフィルターに読み込まれたすべてのレコードを確認することができます。

![image](media://86a6a1ad-5d1e-40be-9c7b-1970f7b9eb3b)

### 使用

使用数を確認することで、アクセスフィルターがどのように、いつ使用されているのかを特定することができます。

![image](media://7d9f9499-6c5a-4eea-a895-4ea438c69f89)

## CSVアクセスフィルター

使用するCSVファイルは、上記に表示した通り、4つのフィールドでレコードが構成されていなくてはなりません。ファイルは、ヘッダー行を含み、タイトルは「**Identifier Type**」、「**Identifier**」、「**Reference Type**」、「**Reference Id**」でなければなりません。

![image](media://38a5e839-2899-4726-8abc-e7c9ee26cd64)

### 設定

アクセスフィルターレコードを、どのように指定し、更新するのかを定義するために、すべての設定をおこなう必要があります。

![image](media://2cd6a43c-9cc1-4286-9c29-88636e3a518d)

|  |  |
| --- | --- |
| **設定** | **説明** |
| **名前** | データソース接続とスケジュール管理のページで、このアクセスフィルターを識別できるように名前を指定します。 |
| **ファイル** | アクセスフィルターレコードに値を提供するために、CSVファイルをアップロードします。[フィルターパラメーター](#id-アクセスフィルターによるデータ制限-フィルターパラメーター)で概略されている書式を使用してください。 |
| **更新タイプ** | 更新タイプには、2つのオプションがあります。<br>- **追加**：新しいアクセスフィルターの値を、現在のレコードの一覧に追加します。
- **上書き**：新しいアクセスフィルターの値で、現在のレコードの一覧を置き換えます。 |
| **更新通知** | 定期的に、これらのレコードの更新をするためのリマインダーとしてシステムタスクを作成し、スケジュールを定義します。 |

### レコード

アクセスフィルターに読み込まれたすべてのレコードを確認することができます。

![image](media://86a6a1ad-5d1e-40be-9c7b-1970f7b9eb3b)

### 使用

使用数を確認することで、アクセスフィルターがどのように、いつ使用されているのかを特定することができます。

![image](media://7d9f9499-6c5a-4eea-a895-4ea438c69f89)

## インラインSQLクエリーアクセスフィルター

このタイプのアクセスフィルターの適用は、ユーザーとフィルター値の組み合わせが膨大な量になるお客様向けに導入されました。インラインSQLクエリーアクセスフィルターは、クエリー実行時に動的に実行され、より効率的です。SQLクエリーは、現在のユーザーのIDなどのパラメーター値を受け入れることができます。一致する値を返すために、SQLクエリー断片がクエリーに挿入されます。この方法では、アクセスフィルターが作成される対象のデータベースを使用するため、データベース接続は必要ありません。また、クエリーは毎回動的に実行されるため、この方法では値はキャッシュされません。

![image](media://da6d7951-6fae-4276-bd6d-9b61d8e0cd8c)

### 設定

アクセスフィルターレコードをどのように指定し、更新するのかを定義するために、すべての設定をおこなう必要があります。

|  |  |
| --- | --- |
| **設定** | **説明** |
| **名前** | 接続やタスク画面でこのアクセスフィルターを識別しやすい名前を提供します。 |
| **SQLクエリー** | アクセスフィルター値を返すために使用されるクエリーを定義します。フィルタークエリーは、単一のユーザーのデータを返します。フィルターパラメーターには、以下のトークンのいずれかを使用してください。<br>?USERID?<br>?EMAIL?<br>?YFPERSONID?<br>?FILTERTOKEN? |

![image](media://58d5fb18-d6b0-40c6-9b8c-f3f5dda9c134)

SQLを定義したら、これをテストしなくてはいけません。**テスト**ボタンをクリックし、任意のパラメーターに値を入力します。これらのパラメーターはテスト用であり、実行時に実際の値に置き換えられます。データベースから返されたエラーが表示されるか、有効なメッセージが表示されます。完了したら、**送信・実行**ボタンをクリックして、アクセスフィルターを保存します。

![image](media://42d9c604-a882-489e-8cbe-32eaacf1b973)


**この方法に関するその他の注意事項:**

- SQLクエリーの代わりに、カスタムデータベース関数/プロシージャを使用することもできます(SQLで直接呼び出せる場合)。  
例: <span style="color: #000000">getCountriesForUser({USERID})</span>
- <span style="color: #000000">インラインSQLクエリーに基づくソースフィルターを実装したビューは、シグナルおよびキャッシュされたフィルターと互換性がありません。</span>
- フィルタートークンは、SSOプロセスを介してユーザーセッションに渡すことができます。これは、SSOペイロードのパラメーターオプションで設定され、<span style="color: #000000">FILTERTOKEN=value という形式である必要があります。SQLに ?FILTERTOKEN? 参照が含まれ、フィルタートークンがセッションに渡されていない場合、レポートを実行しようとするとエラーメッセージが表示されます。FILTERTOKENは、バックグラウンドレポート実行シナリオでは動作しない場合があります。</span>
- <span style="color: #000000">インラインSQLアクセスフィルターが有効な場合、一部のレポートフィルターオプションは利用できません。</span>
- <span style="color: #000000">この方法は、以下では使用できません。</span>
  - サブセレクトまたはIN ステートメントのクエリーをサポートしていないデータソース
  - 非リレーショナルデータソース
  - ストアドプロシージャに基づくビュー


## ビューへのアクセスフィルターの適用

データベース上で設定したアクセスフィルターは、そのソースに対して作成されるすべてのビューに適用することができます。

1. ビューを作成し、ステップ2.ビューフィールドページで、作成した参照タイプの1つと一致するフィールドを選択します。
2. アクセスタブを開き、アクセスフィルター項目から対応するタイプを選択します。フィルターレコードを持たない参照タイプを選択することはできません。
3. アクセスフィルターを選択したら、フィールドを保存します。必要に応じて、複数のフィールドに、異なるアクセスフィルタータイプを適用することができます。
4. ビュー上でフィールドにアクセスフィルタータイプを適用したら、ビューセキュリティページに移動します。このビューから作成するレポートに適用するアクセスフィルターのデフォルトを選択することができます。必要無い場合は、選択しなくても構いません。デフォルト設定でフィルターを適用した場合、このビューを使用して作成されるすべてのレポートに、対象のフィルターが適用されます。適切なアクセス権限を持つレポート作成者のみ、レポート単位でこのフィルターの変更をしたり、設定を解除したりすることができます。


## <span style="color: #009eec">レポートへのアクセスフィルターの適用</span>

ドラッグ&ドロップビルダーを使用してレポート作成をする場合、選択したビューにアクセスフィルターが定義されていれば、レポートにそのフィルターを適用することができます。

レポートのデータページで、画面中央にあるレポートオプションボックスから、レポートデータ項目を開きます。アクセスフィルター項目には、選択したビューに適用されているすべてのフィルターが表示されます。

ここでフィルターを選択すると、ユーザーがレポートを実行するたびに、その結果が適用されます。

**<span style="color: #FF0000">注意：</span>**適切なセキュリティアクセス権限を持つユーザーのみ、レポートに適用されたアクセスフィルターの設定を変更することができます。

<span style="color: #FF0000">**注意：**</span>アクセスフィルターが適用されたレポートでは、スクリーンショットを取得することができません。


## アクセスフィルターの上書き

こちらの設定は、管理者など、特定のユーザーがアクセスフィルターを上書きすることで、すべての結果を表示できるようにします。これは、上書きコードを定義し、特定のユーザーのソースフィルターエントリーに追加することで実現できます。これにより、Yellowfinは設定されたユーザーにアクセスフィルターを適用せず、すべての結果を提供します。

アクセスフィルターのOn/Off切り替えができるのは管理者ユーザーのみで、設定が適用されたユーザー自身は、自らこれを制御することはできません。

### 上書き機能の有効化

アクセスフィルターを上書きするコードを使用する前に、この機能を有効化する必要があります。これは、データベース内の構成テーブルに、以下のSQLクエリーを追加することで実行できます。

```sql
INSERT INTO Configuration VALUES (1,'SYSTEM','SOURCEFILTERWILDCARD','%');
```

上記の例で、「**1**」はプライマリー組織IDを、「**%**」が上書きコードを示します。コードを定義するために、任意の文字、または文字シークエンスでコード値を指定します。例：「**no_filters**」

**<span style="color: #FF0000">注意：</span>**こちらのクエリーを追加後、Yellowfinを再起動してこの機能を有効化します。