全部产品
Search
文档中心

数据湖构建:行过滤器和列脱敏

更新时间:Sep 17, 2026

本文介绍数据授权中的行过滤器和列脱敏,包括配置方法、使用限制及规则冲突处理。

使用限制

行过滤器使用限制

  • 引擎版本:仅支持已对接 DLF ROW Filter 的计算引擎。当前仅 Serverless Spark 支持,且需使用以下版本:

    • esr-5.2.0(Spark 4.0.1,Scala 2.13)及以上

    • esr-4.8.0(Spark 3.5.2,Scala 2.12)及以上

    • esr-3.7.0(Spark 3.4.4,Scala 2.12)及以上

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

  • 写权限互斥:同一用户在同一张表上,行过滤器与写权限(ALL 或 UPDATE)不能同时配置。

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

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

列脱敏使用限制

  • 引擎版本:列脱敏规则可在 DLF 控制台配置。查询时,规则会下推至计算引擎执行。当前仅 Serverless Spark 支持,且需使用 esr-5.2.0(Spark 4.0.1,Scala 2.13)、esr-4.8.0(Spark 3.5.2,Scala 2.12)或 esr-3.7.0(Spark 3.4.4,Scala 2.12)及以上版本。

  • 写权限互斥:同一用户在同一张表上,列脱敏规则与写权限(ALL 或 UPDATE)不能同时授予。

  • Schema 变更限制:已配置脱敏的列及其嵌套字段不能改名、删除或修改类型。变更前请先撤销该列的脱敏规则。

行过滤器

行过滤器表达式用于限制查询结果的数据范围。表达式分为简单表达式(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>)

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

运算符对照表

支持的运算符及其在 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. 在左侧导航栏选择数据目录,依次选择目标 Catalog、数据库和表。单击权限页签,再单击授权。

  2. 在用户/角色中选择 RAM 用户/RAM 角色或 DLF 角色,然后在选择授权对象中选择授权对象。建议对具有相同脱敏需求的用户使用 DLF 角色统一授权。

  3. 在数据表中勾选 Select。未选择该权限时,无法启用列脱敏规则。

  4. 勾选启用列脱敏规则,然后为每个需要脱敏的列选择脱敏方式。

    脱敏方式

    效果

    适用列类型

    置空

    整列返回空值。

    任意类型。

    固定文本替换

    整列替换为指定的固定字符串。

    仅字符串列;替换内容最长 1024 字节。

  5. 单击确定保存。保存后,可在权限页签的列脱敏规则区域查看或撤销规则。

使用须知

  • 修改规则时,请一并提交该用户在该表上需要保持脱敏的所有列;仅提交部分列会使其余列失去脱敏。

  • 同一列可以为多个授权对象配置规则。置空可与任意方式并存;除置空外,其他脱敏方式及其配置必须完全一致。