ROW FILTER

適用対象:チェック済み Databricks SQL チェック済み Databricks Runtime 12.2 LTS 以降 チェック済み Unity カタログのみ

リレーションシップから行がフェッチされるたびにフィルターとして適用される関数を指定します。

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

重要

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

行フィルターの使用方法の詳細については、「 行フィルターと列マスク」を参照してください。

必要な特権

テーブルに行フィルターを追加する関数を割り当てるには、関数に対する EXECUTE 権限、スキーマに対する USE SCHEMA 権限、親カタログに対する USE CATALOG 権限が必要です。

新しいテーブルの作成時に行フィルターを追加する場合は、スキーマに対するCREATE TABLE権限が必要です。

既存のテーブルに行フィルターを追加する場合は、テーブルの所有者であるか、テーブルに対するMANAGE権限を持っている必要があります。

構文

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

パラメーター

  • func_name

    スカラー SQL UDF

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

  • column_name

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

    重要

    列のデータ型が対応する関数パラメーター型と正確に一致しない場合、列の値は暗黙的にキャストされます。 ANSI_MODE無効にすると、キャストできない値はサイレントモードでNULLに変換され、予期しないフィルター結果が生成される可能性があります。 UDF パラメーター型は、渡される列のデータ型と一致する必要があります。 「データ型の不一致の動作」を参照してください。

  • constant_literal

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

その他の例については、 行フィルターと列マスクを参照してください

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

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

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