適用対象:
Databricks SQL
Databricks Runtime 12.2 LTS 以降
Unity カタログのみ
リレーションシップから行がフェッチされるたびにフィルターとして適用される関数を指定します。
行フィルターは、次の場合に追加できます。
- CREATE TABLE を使ってテーブルを作成します。
- ALTER TABLE を使ってテーブルを変更します。
- CREATE MATERIALIZED VIEWを使用して具体化されたビューを作成します。
- ALTER MATERIALIZED VIEWを使用して具体化されたビューを変更します。
- CREATE STREAMING TABLEを使用してストリーミング テーブルを作成します。
- ALTER STREAMING TABLEを使用してストリーミング テーブルを変更します。
重要
行フィルターは、データ ソースから行がフェッチされるとすぐに適用されます。
行フィルターの使用方法の詳細については、「 行フィルターと列マスク」を参照してください。
必要な特権
テーブルに行フィルターを追加する関数を割り当てるには、関数に対する EXECUTE 権限、スキーマに対する USE SCHEMA 権限、親カタログに対する USE CATALOG 権限が必要です。
新しいテーブルの作成時に行フィルターを追加する場合は、スキーマに対するCREATE TABLE権限が必要です。
既存のテーブルに行フィルターを追加する場合は、テーブルの所有者であるか、テーブルに対するMANAGE権限を持っている必要があります。
構文
ROW FILTER func_name ON ( [ column_name | constant_literal [, ...] ] ) [...]
パラメーター
-
スカラー SQL UDF。
関数の戻り値の型は
BOOLEANである必要があります。 関数がFALSEまたはNULLを返した場合、行はフィルターで除外されます。 -
func_nameに渡すサブジェクト関係の列を指定します。 各column_nameは、func_nameの対応するパラメータにキャスト可能である必要があります。 関数のシグネチャで必要な数の列を指定する必要があります。 この機能では、0 個の入力列を渡すことがサポートされています。この場合、SQL UDF は 0 個のパラメーターを受け取り、入力行の値に依存しないブール値の結果を返す必要があります。重要
列のデータ型が対応する関数パラメーター型と正確に一致しない場合、列の値は暗黙的にキャストされます。 ANSI_MODE無効にすると、キャストできない値はサイレントモードで
NULLに変換され、予期しないフィルター結果が生成される可能性があります。 UDF パラメーター型は、渡される列のデータ型と一致する必要があります。 「データ型の不一致の動作」を参照してください。 constant_literal
関数パラメーターと一致する型の定数パラメーターを指定します。 サポートされている型は、
STRING、数値 (INTEGER、FLOAT,、DOUBLE、DECIMALなど)、BOOLEAN、INTERVAL、NULLです。
例
その他の例については、 行フィルターと列マスクを参照してください。
-- 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