适用于:
Databricks SQL
Databricks Runtime 12.2 LTS 及更高版本 ![]()
指定一个函数,当从关系中提取行时,该函数作为过滤器应用。
可以在以下情况中添加行筛选器:
- 使用 CREATE TABLE创建表。
- 使用 ALTER TABLE修改表格。
- 使用 CREATE MATERIALIZED VIEW 创建具体化视图。
- 使用 ALTER MATERIALIZED VIEW 更改具体化视图。
- 使用 CREATE STREAMING TABLE 创建流式处理表。
- 使用 ALTER STREAMING TABLE 更改流式处理表。
重要
从数据源提取行后,将立即应用行筛选器。
有关如何使用行筛选器的详细信息,请参阅 行筛选器和列掩码。
所需权限
若要分配向表添加行筛选器的函数,您必须对函数、EXECUTE架构和USE SCHEMA父目录具有USE CATALOG权限。
如果在 创建新 表时添加行筛选器,则必须对架构具有 CREATE TABLE 特权。
如果要在 现有 表上添加或删除行筛选器,则必须是表所有者,或者同时具有 MANAGE 表的和 SELECT 权限。
如果同一语句也会更改表架构,则还需要 MODIFY 对表拥有权限。
语法
ROW FILTER func_name ON ( [ column_name | constant_literal [, ...] ] ) [...]
参数
-
标量 SQL UDF。
函数的返回类型必须为
BOOLEAN。 如果函数返回FALSE或NULL,行会被筛选掉。 -
指定要传递给
func_name的主题关系列。 每个column_name必须可强制转换为相应的func_name。 必须提供函数签名所需的任意数量的列。 此功能支持传递零个输入列,在这种情况下,SQL 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