行フィルター policy で行を絞り込む
行フィルター policy を使うと、複数のチームが 1 つのテーブルを共有しながら、各チームには自分たちの行だけを表示できます。たとえば、地域ごとの営業チームに、それぞれの地域の注文だけを表示します。
前提条件
- role に
governance:row_policies:writeが含まれていること。portal_adminrole とpolicy_managerrole に含まれています。Portal の role と権限を参照してください。 - policy に含まれるユーザーが、アクセス policy を通じて、すでにそのテーブルの
SELECTを持っていること。 - テーブルのカラム名を把握していること。Data Explorer で確認できます。
行フィルター policy を作成する
- 左サイドバーで Data Security → Security policies を選択し、Row level filter タブを開きます。
- Create policy を選択します。
- Policy name を入力します。必要に応じて Description も入力します。
- フィルターを適用する対象を、User、Group、Service Account に追加します。1 件以上追加してください。
- Catalog、Schema、Table を選択します。1 つの policy で対象にできるテーブルは 1 つです。
- Row Filter Condition に、行が満たすべき条件を入力します。
WHEREは入力しないでください。 - Active を選択したままにします。
- Create を選択します。
Permission は常に SELECT で、変更できません。

約 1 分後、policy に含まれるユーザーには、そのテーブルへのすべてのクエリで、条件に一致する行だけが表示されます。
条件の例
条件は、WHERE の後に書くときと同じように記述します。
| ユーザーに表示したい行 | Row Filter Condition |
|---|---|
| 1 つの部署の行。 | department = 'IT' |
| 複数の地域の行。 | region IN ('North', 'Central') |
| 2026 年以降の注文。 | order_date >= DATE '2026-01-01' |
| アーカイブされていない行。 | is_archived = false |
条件は単一の式にする必要があります。その後ろに 2 つ目のステートメントを追加することはできません。
動作を確認する
policy に含まれるユーザーに、Query Editor でそのテーブルに対して SELECT COUNT(*) を実行してもらいます。件数には、条件に一致する行だけが含まれます。policy に含まれないユーザーには、引き続きアクセス policy で許可されたすべての行が表示されます。
操作に失敗した場合
| メッセージ | 意味 | 対処 |
|---|---|---|
Enter a row filter condition. | Row Filter Condition が空です。 | 条件を入力してください。 |
Only a single filter condition is allowed. | 条件に複数のステートメントが含まれています。 | 式は 1 つだけにしてください。複数のチェックは AND または OR で組み合わせてください。 |
The row filter condition is invalid. | 条件に構文エラーがあるか、存在しないカラム名が指定されています。 | スペルとカラム名を確認してください。 |
注記
1 つのテーブルに設定できる行フィルター policy は 1 つだけです。条件を変更するには、既存の policy を編集してください。