# Dual 脚本和图表功能

Dual() 用于将数字和字符串组合为单个记录，以便此记录的数字呈现形式可用于排序和计算，同时字符串值可用于显示。

[Dual Function](https://play.vidyard.com/vNa9jcN6DizzYQ1hDZ5VAr)

语法：

Dual(text, number)

返回数据类型： 双

信息注释所有双返回值都右对齐。

参数

| 参数 | 描述 |
| --- | --- |
| text | 与数字参数组合使用的字符串值。 |
| number | 与字符串参数中的字符串组合使用的数字。 |

在 Qlik Sense 中，所有字段值都可能是双重值。这意味着字段值即可以是数值，也可以是文本值。例如，一个日期即可包含数值 40908，也可以包含文本呈现形式 '2011-12-31'。

信息注释当几个数据项读入到一个具有不同字符串呈现形式但具有同一有效的数字呈现形式的字段中时，所有数据项都将共享遇到的第一个字符串呈现形式。

提示注释在其他数据被读入到有关字段中之前，dual 函数通常在脚本中使用，以便创建首字符串呈现形式，这将显示在筛选器窗格中。

示例：图表表达式

| 示例 | 描述 |
| --- | --- |
| `Dual(IF(DayOfWeek = 0, 'Monday',`<br>`IF(DayOfWeek = 1, 'Tuesday',`<br>`If(DayOfWeek = 2 ,'Wednesday',`<br>`If(DayOfWeek = 3 ,'Thursday',		If(DayOfWeek = 4 ,'Friday',		If(DayOfWeek = 5 ,'Saturday',		 If(DayOfWeek = 6 ,'Sunday'`<br>`))))))), DayOfWeek)` | 字段 `DayOfWeek` 可在可视化中用作维度。在表格中，一周各天会自动按正确的数字顺序排列，而不是按字母顺序排列。 |
| `Dual(Pick( Priority , 'Low','Medium','High'), Priority)` | 字段 `Priority` 可在可视化中用作维度。在表格中，字段 `Priority` 会自动按正确的数字顺序排列，而不是按字母顺序排列。 |
| `Dual('Q' & Ceil(Month(Date)/3), Ceil(Month(Date)/3))` | 字段 `Date` 可在可视化中用作维度。创建文本值 `Q1` 至 `Q4` ，并分配数值 `1` 至 `4` 。 |
| `Dual(WeekYear(Date) & '-W' & Week(Date), WeekStart(Date))` | 字段 `Date` 可在可视化中用作维度。本例将创建一个 `'2012-W22'` 形式的文本值，同时分配与一周第一天的日期数对应的数值，例如：`41057` |

示例：加载脚本

| 示例 | 描述 |
| --- | --- |
| 在脚本中添加下例并运行。<br><br>`Load dual ( NameDay,NumDay ) as DayOfWeek inline` `[ NameDay,NumDay` `Monday,0` `Tuesday,1` `Wednesday,2` `Thursday,3` `Friday,4` `Saturday,5` `Sunday,6 ];` | 例如，字段 `DayOfWeek` 可在可视化中用作维度。在表格中，一周各天会自动按正确的数字顺序排列，而不是按字母顺序排列。 |
| `Load<br>Dual('Q' & Ceil(Month(Now())/3), Ceil(Month(Now())/3)) as Quarter<br>AutoGenerate 1;` | 本例提供当前季度。如果在一年的第一个三个月中运行 Now 函数，则将第一个三个月显示为 `Q1`，将第二个三个月显示为 `Q2`，以此类推。但是，在用于排序时，字段 `Quarter` 将按其数值顺序（1 到 4）排序。 |
| `Dual('Q' & Ceil(Month(Date)/3), Ceil(Month(Date)/3)) as Quarter` | 与之前的示例一样，使用文本值 `Q1` 到 `Q4` 创建字段 `Quarter`，并为其分配数值 `1` 到 `4`。为在脚本中使用此字段，必须加载 `Date` 的值。 |
| `Dual(WeekYear(Date) & '-W' & Week(Date), WeekStart(Date)) as YearWeek` | 本例将创建一个字段 `YearWeek`，该字段具有 `2012-W22` 形式的文本值，同时分配与一周第一天的日期数对应的数值，例如：`41057`。为在脚本中使用此字段，必须加载 `Date` 的值。 |

## 示例 - Dual 基本原理

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

#### 图表表达式

概述

数据集包含客户服务数据。您想查看一周内各天的电话数量。

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

加载脚本包含：

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

* 数据表中有以下字段：

  * `DayOfWeek`
  * `NoOfCalls`

加载脚本

```
Example:
Load * inline [
DayOfWeek, NoOfCalls
0, 25000
1, 30000
2, 27500
3, 32000
4, 23250
5, 28950
6, 32350
];
```

结果

加载数据并打开工作表。创建一个新的条形图，然后使用以下方法之一添加一个维度：

1. 在维度表达式中，添加以下内容：

   ```
   =Dual(IF(DayOfWeek = 0, 'Monday',
   IF(DayOfWeek = 1, 'Tuesday',
   If(DayOfWeek = 2 ,'Wednesday',
   If(DayOfWeek = 3 ,'Thursday',
   If(DayOfWeek = 4 ,'Friday',
   If(DayOfWeek = 5 ,'Saturday',
   If(DayOfWeek = 6 ,'Sunday'
   ))))))), DayOfWeek) 
   ```

2. 这种方法效率更高。在维度表达式中，添加以下内容：

   ```
   =Dual(pick( DayOfWeek +1 , 'Monday','Tuesday','Wednesday', 'Thursday','Friday', 'Saturday','Sunday' ), DayOfWeek)
   ```

创建以下度量：

* `=Sum(NoOfCalls)`，计算电话的数量。

结果：条形图显示一周各天的电话数量

结果：条形图显示一周各天的电话数量

结果：条形图显示一周各天的电话数量 ![使用维度表达式中的 Dual 函数创建的带有维度的条形图](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Resources/Images/dual-barchart.png)

条形图显示了一周内各天的电话数量。它能自动按正确顺序排列一周内的天数。

## 示例 – Dual 场景

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

#### 图表表达式

概述

数据集包含客户支持反馈。您希望对反馈进行排序和显示，首先显示负面响应，然后显示正面响应。

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

加载脚本包含：

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

* 数据表中有以下字段：

  * ResponseType
  * NoOfResponses

加载脚本

```
Example:
Load * inline [
ResponseType, NoOfResponses
1, 350
2, 560
3, 4350
4, 2350
5, 5350
];
```

结果

加载数据并打开工作表。创建一个新的条形图，并将以下表达式添加到维度中。

* =Dual(pick( ResponseType , 'Very Bad','Bad','Average', 'Good','Very Good'), ResponseType)

创建以下度量：

* =Sum(NoOfResponses)，计算响应的数量。

结果：按响应类型分列的响应数量条形图

结果：按响应类型分列的响应数量条形图

结果：按响应类型分列的响应数量条形图 ![使用维度表达式中的 Dual 函数创建的带有维度的条形图](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Resources/Images/dual-barchart2.png)

条形图按响应类型显示响应数。请注意，条形图会自动从负到正排序。响应类型是一个数值，已被分配了文本描述。