# 构建表达式

在添加列、编辑列表达式、创建转换规则或筛选数据集时，使用表达式来计算列值或定义条件。

表达式生成器列出当前任务可用的元素。移动任务参考涵盖 SaaS 管理的登陆、湖登陆和复制任务。存储、转换和数据集市表达式取决于数据平台或任务引擎。有关 CDC 存储和流式转换函数，请参阅 [转换函数](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Lakehouse/transformation-functions.htm)。使用编辑器中可用的函数和语法。

## 创建或编辑表达式

1. 从您正在配置的列、转换规则或数据集筛选器中打开表达式构建器。

   对于列表达式，请单击列上的 the 编辑列表达式 icon。

2. 选择一个元素，然后点击 the 插入所选表达式元素 icon 将其插入。

   您也可以键入表达式。插入列参数以提供来自每个源行的值，同时保留编辑器使用的语法。

   要从工具栏插入运算符，请在表达式中单击其所在位置，然后单击该运算符。

3. 将函数参数占位符替换为列参数、常量或嵌套表达式。

   将文本和日期常量用单引号括起来，例如 `'Unknown'` 和 `'2026-10-08'`。使用两个引号表示嵌入的引号：`'O''Brien'`。输入不带引号的数字，例如 `12` 或 `12.5`。对于缺失值，请使用 `NULL`，而不是文本 `'NULL'`。

4. 按照下文所述测试表达式，然后单击确定将其保存。

## 使用表达式元素

* 列：源数据集列提供正在处理的行中的值。

  对于流式转换任务，此列表还按源顺序包含诸如 `hdr__kafka_partition` 和 `hdr__file_name` 等登陆列。这些与移动任务表达式中的 `Q_H_` 标头是分开的。请参阅 [登陆表](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Lakehouse/lakehouse-datasets-architecture-streaming.htm#Landing)。

* 函数：计算或转换值。按照函数签名所示的顺序提供参数。请参阅 [表达式函数](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Expression-functions.htm)。

  信息注释对于 Azure Synapse Analytics 表达式，`$RTRIM` 和 `$LTRIM` 仅剪裁空格，无论指定的剪裁字符是什么。

* 运算符：组合值、比较值或定义条件。使用括号控制求值顺序。请参阅 [表达式运算符](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Expression-operators.htm)。

* 标头：在 SaaS 托管的登陆、湖登陆和复制任务中使用变更元数据。请参阅 [表达式标头](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Expression-headers.htm) 了解源端点适用性和处理阶段值。

## 示例：合并列值

以下表达式使用冒号连接 `first_file_name` 和 `first_file_title`：

```
${first_file_name} || ':' || ${first_file_title}
```

对于示例值 `sales` 和 `Sales June 2022`，结果为 `sales:Sales June 2022`。

编辑表达式

编辑表达式

编辑表达式 ![使用冒号组合两个数据集列的表达式编辑器。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_qdi_expression_editor.png)

## 测试表达式

在保存前，使用示例参数值检查计算结果。参数提取用于识别表达式输入；测试则使用您提供的值对表达式进行求值。

信息注释不支持测试对 `$SOURCE_LOOKUP` 和 `$TARGET_LOOKUP` 函数的调用。

1. 单击提取参数。

2. 为每个参数输入要测试的值，使用适合该列数据类型的值。

3. 单击测试表达式并检查结果。

如果表达式无效，请修正其语法和参数，然后在重新测试前再次提取参数。使用代表性值重复此操作，在相关情况下包括缺失值。成功的抽样测试不会检查每一个源数据行。