メインコンテンツまでスキップ

行フィルター policy で行を絞り込む

行フィルター policy を使うと、複数のチームが 1 つのテーブルを共有しながら、各チームには自分たちの行だけを表示できます。たとえば、地域ごとの営業チームに、それぞれの地域の注文だけを表示します。

前提条件​

  • role に governance:row_policies:write が含まれていること。portal_admin role と policy_manager role に含まれています。Portal の role と権限を参照してください。
  • policy に含まれるユーザーが、アクセス policy を通じて、すでにそのテーブルの SELECT を持っていること。
  • テーブルのカラム名を把握していること。Data Explorer で確認できます。

行フィルター policy を作成する​

  1. 左サイドバーで Data Security → Security policies を選択し、Row level filter タブを開きます。
  2. Create policy を選択します。
  3. Policy name を入力します。必要に応じて Description も入力します。
  4. フィルターを適用する対象を、User、Group、Service Account に追加します。1 件以上追加してください。
  5. Catalog、Schema、Table を選択します。1 つの policy で対象にできるテーブルは 1 つです。
  6. Row Filter Condition に、行が満たすべき条件を入力します。WHERE は入力しないでください。
  7. Active を選択したままにします。
  8. Create を選択します。

Permission は常に SELECT で、変更できません。

行フィルター条件を入力した Create row level filter policy フォーム

約 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 を編集してください。

次のステップ​