# Evaluate - 脚本函数

Evaluate() 用于确定是否可将输入文本字符串作为有效的 Qlik Sense 表达式来计算值，如果可以，则以字符串形式返回该表达式的值。如果输入字符串不是有效的表达式，则返回 NULL。

语法：

Evaluate(expression\_text)

返回数据类型： 双

参数

| 参数 | 描述 |
| --- | --- |
| text | 要计算的字符串。 |

信息注释此字符串函数不可用于图表表达式。

函数示例和结果

| 函数 | 结果 |
| --- | --- |
| `Evaluate( 5 * 8 )` | 返回 `40` |

## 示例 - 评估基础知识

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Evaluate.htm)

#### 加载脚本

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有一个名为 `ExpressionText` 的字段。

* 前置加载，使用 `Evaluate` 函数计算字段 `ExpressionText` 并返回两个新字段：`Evaluated` 和 `Evaluatedx4`。

加载脚本

```
Example:
Load
ExpressionText
, Evaluate(ExpressionText) as Evaluated
, Evaluate(ExpressionText)*4 as Evaluatedx4
;
Load * Inline
[ExpressionText
4
5+3
100/5
123*2
329-9
0123456789012345678
1234567890123456789
0123456.5512
0123456.5512479994578952364859346469
Today()
Bob
];
```

结果

数据表中加载了以下字段：

* `ExpressionText`

* `Evaluated`

* `Evaluatedx4`

Results table

| ExpressionText | Evaluated | Evaluatedx4 |
| --- | --- | --- |
| 4 | 4 | 16 |
| 5+3 | 8 | 32 |
| 100/5 | 20 | 80 |
| 123\*2 | 246 | 984 |
| 329-9 | 320 | 1280 |
| 0123456789012345678 | 0123456789012345678 | 4.9382715604938e+17 |
| 1234567890123456789 | 1234567890123456789 | 4.9382715604938e+18 |
| 0123456.5512 | 0123456.5512 | 493826.2048 |
| 0123456.5512479994578952364859346469 | 0123456.5512479994578952364859346469 | 493826.204992 |
| Today() | 11/5/2024 | 182404 |
| Bob | - | - |

`Evaluate` 函数的输出返回除最后一行之外的所有 `ExpressionText` 字符串的值。无法计算字符串 `Bob`，因此函数不返回值 - NULL。所有行都已求值，例如第二行添加 `5` 和 `3` 返回 `8`。一些 `ExpressionText` 字符串按原样返回字符串，因为字符串已经计算为一个数字。例如，字符串 `0123456789012345678` 计算为相同的数字。

虽然 Qlik Sense 存在 14 位的数值精度限制，但 `Evaluate` 函数将 18 位数字的字符串作为数字进行计算，并在脚本中应用乘法。这对于在脚本中处理非常大的数字非常有用。

## 示例 - Evaluate 场景

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Evaluate.htm)

#### 加载脚本

概述

销售数据集包含产品、价格和折扣。本例得出产品的折扣价。

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有以下字段：

  * `Product`

  * `Price`

  * `Discount %`

* 前置加载，它接受 `Price` 和 `Discount %` 值并计算一个名为 `DiscountedPrice` 的附加字段。此新字段使用 `Evaluate` 函数计算价格减去折扣。

加载脚本

```
Example:
LOAD
Product,
Price,
[Discount (%)],
Price * (1 - ​​Evaluate([Discount (%)] / 100)) AS DiscountedPrice
INLINE [
Product, Price, Discount (%)
Laptop, 1000, 15
Smartphone, 800, 10
Tablet, 600, 20
Headphones, 200, 5
];
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* `Product`

* `Price`

* `Discount %`

* `DiscountedPrice`

Results table

| Product | Price | Discount % | DiscountedPrice |
| --- | --- | --- | --- |
| Headphones | 200 | 5 | 190 |
| Tablet | 600 | 20 | 480 |
| Smartphone | 800 | 10 | 720 |
| Laptop | 1000 | 15 | 850 |

`Evaluate` 函数的输出演示了如何使用函数计算值。