

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 行筛选表达式支持 PartiQL
<a name="partiql-support"></a>

您可以使用一部分 PartiQL 数据类型、运算符和聚合来构造行筛选表达式。Lake Formation 不允许在筛选表达式中使用任何用户定义的或标准的 PartiQL 函数。您可以使用比较运算符将列与常量（例如，`views >= 10000`）进行比较，但不能将列与其他列进行比较。

 行筛选表达式可以是简单表达式或复合表达式。表达式的总长度必须少于 2048 个字符。

**简单表达式**  
简单表达式的格式为 ` <column name > <comparison operator ><value >`
+ **列名称**

  它可以是表架构中的顶层数据列、分区列或嵌套列，并且必须属于下面列出的[支持的数据类型](#row-filter-supported-datatypes)。
+ **比较运算符**

   以下是支持的运算符：`=, >, <, >=, <=, <>,!=, BETWEEN, IN, LIKE, NOT, IS [NOT] NULL`
+  所有字符串比较和 `LIKE` 模式匹配项均区分大小写。不能对分区列使用 IS [NOT] NULL 运算符。
+ **列值**

   列值必须匹配列名称的数据类型。

**复合表达式**  
复合表达式的格式为 `( <simple expression >) <AND/OR >(<simple expression >)`。可以使用逻辑运算符 `AND/OR` 进一步组合复合表达式。

## 支持的数据类型
<a name="row-filter-supported-datatypes"></a>

如果行筛选器引用包含不支持的数据类型的 Amazon Glue Data Catalog 表，则会导致错误。以下是表列和常量支持的数据类型，它们映射到 Amazon Redshift 数据类型：
+ `STRING, CHAR, VARCHAR`
+ `INT, LONG, BIGINT, FLOAT, DECIMAL, DOUBLE`
+ `BOOLEAN`
+  `STRUCT` 

有关 Amazon Redshift 中数据类型的更多信息，请参阅《Amazon Redshift 数据库开发人员指南》中的[数据类型](https://docs.amazonaws.cn/redshift/latest/dg/c_Supported_data_types.html)。**

## 行筛选表达式
<a name="Row-Filter-Expressions"></a>

**Example**  
例如，以下便是包含列的表的有效行筛选表达式：` country (String), id (Long), year (partition column of type Integer), month (partition column of type Integer)`  
+ `year > 2010 and country != 'US'`
+ `(year > 2010 and country = 'US') or (month < 8 and id > 23)`
+ `(country between 'Z' and 'U') and (year = 2018)`
+ `(country like '%ited%') and (year > 2000)`

**Example**  
以下是包含嵌套列的表的行筛选条件表达式的有效示例：`year > 2010 and customer.customerId <> 1 `  
 定义嵌套的行级别表达式时，不应引用分区列下的嵌套字段。

字符串常量必须用单引号引起来。

## 保留关键字
<a name="partiql-reserved-keywords"></a>

如果您的行筛选表达式包含 PartiQL 关键字，则您会收到解析错误，因为列名可能与关键字冲突。发生这种情况时，使用双引号对列名进行转义。例如，下面便是一些保留关键字：“first”、“last”、“asc”、“missing”。有关保留关键字的列表，请参阅 PartiQL 规范。

## PartiQL 参考
<a name="partiql-ref"></a>

有关 PartiQL 的更多信息，请参阅[https://partiql.org/](https://partiql.org/)。