全部產品
Search
文件中心

Data Lake Formation:行過濾器規範

更新時間:Apr 28, 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 邏輯對多個過濾器進行合并。