次の方法で共有


ROW FILTER clause

適用対象: check marked yes Databricks SQL Databricks Runtime 12.2 LTS 以上 Unity Catalog のみ

テーブルから行がフェッチされるたびにフィルターとして適用される関数を指定します。

行フィルターは、次の場合に追加できます。

  • CREATE TABLE を使用してテーブルを作成する。
  • ALTER TABLE を使用してテーブル変更します。

重要

行フィルターは、データ ソースから行がフェッチされるとすぐに適用されます。

行フィルターの使用方法の詳細については、「行フィルターと列マスクを使って機密性の高いテーブル データをフィルター処理する」を参照してください。

構文

ROW FILTER func_name ON ( [ column_name | constant_literal [, ...] ] ) [...]

パラメーター

  • func_name

    スカラー SQL UDF

    関数の戻り値の型は BOOLEAN である必要があります。 関数が FALSE または NULL を返した場合、行はフィルターで除外されます。

  • column_name

    func_name に渡すサブジェクト テーブルの列を指定します。 各 column_name は、func_name の対応するパラメータにキャスト可能である必要があります。 関数のシグネチャで必要な数の列を指定する必要があります。 この機能ではゼロの入力列を渡すことがサポートされており、その場合、SQL UDF はゼロのパラメータを受け入れ、入力行のいずれの値にも依存せずにブール値の結果を返す必要があります。

  • constant_literal

    関数パラメーターと一致する型の定数パラメーターを指定します。 サポートされている型は、STRING、数値 (INTEGERFLOAT,DOUBLEDECIMAL など)、BOOLEANINTERVALNULL です。

その他の例については、「行フィルターと列マスクを使って機密性の高いテーブル データをフィルター処理する」をご参照ください。

-- Create a table with a row filter column
> CREATE FUNCTION filter_emps(dept STRING) RETURN is_member(dept);
> CREATE TABLE employees(emp_name STRING, dept STRING) WITH ROW FILTER filter_emps ON (dept);
> INSERT INTO employees('Jones', 'Engineering'), ('Smith', 'Sales');

-- As a member of engineering
> SELECT * FROM employees;
  Jones Engineering

-- As a member of sales
> SELECT * FROM employees;
  Smith Sales