全部產品
Search
文件中心

Data Lake Formation:行過濾器和列脫敏

更新時間:Sep 18, 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. 單擊确定儲存。儲存後,可在权限頁簽的列脫敏規則地區查看或撤銷規則。

使用須知

  • 修改規則時,請一併提交該使用者在該表上需要保持脫敏的所有列;僅提交部分列會使其餘列失去脫敏。

  • 同一列可以為多個授權對象配置規則。置空可與任意方式並存;除置空外,其他脫敏方式及其配置必須完全一致。