全部产品
Search
文档中心

数据湖构建:行过滤器规范

更新时间:Apr 27, 2026

本文将介绍数据授权中关于行过滤器(Row Filter)的配置规范、支持的表达式及相关限制。

行过滤器表达式

行过滤器表达式用于限制查询结果的数据范围。表达式分为简单表达式(Simple Expression)和复合表达式(Composite Expression)。

简单表达式

简单表达式定义了针对单个列的基础比较逻辑。

语法格式:

<Column Name> <Comparison Operator> <Value>

参数说明:

  • Column Name(列名):指定用于过滤的列。支持的数据类型如下:

    • 逻辑型:BOOLEAN

    • 字符串:CHAR, VARCHAR

    • 数值型:DECIMAL, TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE

    • 时间型:TIME, TIMESTAMP

  • Comparison Operator(比较运算符):定义比较的方式。支持的运算符请参阅下文对照表。

  • Value(值):用于比较的常量。该值的类型必须与指定列的数据类型一致。

复合表达式

复合表达式通过逻辑运算符组合多个简单表达式,以实现更复杂的过滤逻辑。

语法格式:

(<Simple Expression>) <AND/OR> (<Simple Expression>)

复合表达式支持嵌套,可使用逻辑运算符ANDOR进一步组合。

运算符对照表

支持的运算符及其在 Apache Paimon 中的对应谓词实现。

运算符

说明

Paimon Predicate

示例

AND

逻辑与

PredicateBuilder.and

year > 2010 AND country <> 'US'

OR

逻辑或

PredicateBuilder.or

(year > 2010) OR (month < 8)

IS NULL

为空

PredicateBuilder.isNull

country IS NULL

IS NOT NULL

不为空

PredicateBuilder.isNotNull

country IS NOT NULL

IN

集合包含

PredicateBuilder.in

id IN (1, 2, 3)

NOT IN

集合不包含

PredicateBuilder.notIn

id NOT IN (1, 2, 3)

=

等于

PredicateBuilder.equal

year = 2010

<>

不等于

PredicateBuilder.notEqual

year <> 2010

<

小于

PredicateBuilder.lessThan

year < 2010

<=

小于等于

PredicateBuilder.lessOrEqual

year <= 2010

>

大于

PredicateBuilder.greaterThan

year > 2010

>=

大于等于

PredicateBuilder.greaterOrEqual

year >= 2010

BETWEEN

范围

PredicateBuilder.between

year BETWEEN 2010 AND 2025

限制与约束

配置行过滤器时,必须遵循以下限制:

  1. 引擎版本:仅支持已对接DLF ROW Filter的计算引擎。

    • Serverless Spark,请联系值班人员开启白名单使用最新版本。

    • 其他计算引擎暂不支持。

  2. 单一规则限制:对于同一张表,一个用户仅能设置一条复合表达式。

  3. Schema 变更影响:若重命名或删除列名,原有的过滤器表达式将失效,必须重新设置。

  4. 多策略合并:当同时配置了基于 Role(角色)和 User(用户)的过滤器时,系统将使用 AND 逻辑对多个过滤器进行合并。