# 集合修饰符

集合表达式用于定义计算范围。集合表达式的中心部分是指定选择的集合修饰符。这用于修改用户选择或集合标识符中的选择，结果定义了新的计算范围。

集合修饰符由一个或多个字段名组成，每个字段名后面都有一个应在该字段上进行的选择。修饰符由尖括号括起： `< >`

例如：

* `Sum ( {$<Year = {2015}>} Sales )`

* `Count ( {1<Country = {Germany}>} distinct OrderID )`

* `Sum ( {$<Year = {2015}, Country = {Germany}>} Sales )`

## 元素集

可以使用以下内容定义元素集：

* 值列表

* 搜索

* 另一字段的引用

* 集合函数

如果省略元素集定义，则集合修饰符将清除此字段中的任何选择。例如：

`Sum( {$<Year = >} Sales )`

## 示例：基于元素集的修饰符集合的图表表达式

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-modifiers.htm)

#### 示例 - 图表表达式

加载脚本

将以下数据作为数据加载编辑中的内联加载载入，以创建以下图表表达式示例。

```
MyTable:
Load * Inline [
Country, Year, Sales
Argentina, 2014, 66295.03
Argentina, 2015, 140037.89
Austria, 2014, 54166.09
Austria, 2015, 182739.87
Belgium, 2014, 182766.87
Belgium, 2015, 178042.33
Brazil, 2014, 174492.67
Brazil, 2015, 2104.22
Canada, 2014, 101801.33
Canada, 2015, 40288.25
Denmark, 2014, 45273.25
Denmark, 2015, 106938.41
Finland, 2014, 107565.55
Finland, 2015, 30583.44
France, 2014, 115644.26
France, 2015, 30696.98
Germany, 2014, 8775.18
Germany, 2015, 77185.68
];
```

有关使用内联加载的详细信息，请参见[使用内联加载来加载数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)。

图表表达式

使用以下图表表达式在 Qlik Sense 工作表中创建表。

表格 - 基于元素集的集合修饰符

| 国家/地区 | Sum(Sales) | 求和({1&lt;国家/地区={比利时}&gt;} 销售额) | 求和({1&lt;国家/地区={"\*A\*"}&gt;} 销售额) | 求和({1&lt;国家/地区={"A\*"}&gt;} 销售额) | Sum({1&lt;Year={$(=Max(Year))}&gt;} Sales) |
| --- | --- | --- | --- | --- | --- |
| 总计 | 1645397.3 | 360809.2 | 1284588.1 | 443238.88 | 788617.07 |
| 阿根廷 | 206332.92 | 0 | 206332.92 | 206332.92 | 140037.89 |
| 奥地利 | 236905.96 | 0 | 236905.96 | 236905.96 | 182739.87 |
| 比利时 | 360809.2 | 360809.2 | 0 | 0 | 178042.33 |
| 巴西 | 176596.89 | 0 | 176596.89 | 0 | 2104.22 |
| 加拿大 | 142089.58 | 0 | 142089.58 | 0 | 40288.25 |
| 丹麦 | 152211.66 | 0 | 152211.66 | 0 | 106938.41 |
| 芬兰 | 138148.99 | 0 | 138148.99 | 0 | 30583.44 |
| 法国 | 146341.24 | 0 | 146341.24 | 0 | 30696.98 |
| 德国 | 85960.86 | 0 | 85960.86 | 0 | 77185.68 |

解释

* 维度：

  * `Country`

* 度量：

  * `Sum(Sales)`

    没有集合表达式的总和 `Sales`。

  * `Sum({1<Country={Belgium}>}Sales)`

    选择 `Belgium`，然后选择相应的 `Sales`。

  * `Sum({1<Country={"*A*"}>}Sales)`

    选择具有 `A` 的所有国家，然后将对应的 `Sales` 求总和。

  * `Sum({1<Country={"A*"}>}Sales)`

    选择以 `A` 开头的所有国家，然后将对应的 `Sales` 求总和。

  * `Sum({1<Year={$(=Max(Year))}>}Sales)`

    计算 `Max(Year)`，其为 `2015`,，然后将对应的 `Sales` 求总和。

设置基于元素集的修饰符

设置基于元素集的修饰符

设置基于元素集的修饰符 ![设置基于元素集的修饰符。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_setanalysis_set_modifiers_element_sets.png)

## 列出的值

元素集的最常见的示例是基于包含在波浪括号中的字段值的列表的集合表达式。例如：

* `{$<Country = {Canada, Germany, Singapore}>}`

* `{$<Year = {2015, 2016}>}`

内部花括号定义元素集。各个值之间用逗号分隔。

## 引号和大小写区分

如果值包含空格或特殊字符，则需将值加引号。单引号将与单个字段值进行文本、区分大小写的匹配。双引号表示与一个或多个字段值不区分大小写的匹配。例如：

* `<Country = {'New Zealand'}>`

  仅匹配 `New Zealand`。

* `<Country = {"New Zealand"}>`

  匹配 `New Zealand`、`NEW ZEALAND` 以及 `new zealand`.

日期必须用引号括起来，并使用相关字段的日期格式。例如：

* `<ISO_Date = {'2021-12-31'}>`

* `<US_Date = {'12/31/2021'}>`

* `<UK_Date = {'31/12/2021'}>`

双引号可以用方括号或重音符代替。

## 搜索

也可以通过搜索创建元素集。例如：

* `<Country = {"C*"}>`
* `<Ingredient = {"*garlic*"}>`
* `<Year = {">2015"}>`
* `<Date = {">12/31/2015"}>`

通配符可用于文本搜索：星号 (`*`) 表示任意数量的字符，问号 (`?`) 表示单个字符。关系运算符可用于定义数值搜索。

搜索时应始终使用双引号。搜索要区分大小写。

有关更多信息，请参阅[集合修饰符和高级搜索](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-modifiers-advanced-searches.htm)。

## 美元符号扩展

如果要在元素集中使用计算，则需要货币符号扩展。例如，如果只想查看最后一年，请使用：

`<Year = {$(=Max(Year))}>`

有关更多信息，请参阅[集合修饰符和货币符号扩展](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-modifiers-dollar-sign-expansions.htm)。

## 其他字段中所选择的值

修饰符可基于另一个字段的所选值。例如：

`<OrderDate = DeliveryDate>`

此修饰符将获得 `DeliveryDate` 的所选值，并将这些值作为选择项应用于 `OrderDate`。如果字段包括很多不同特殊值（数百个），则该操作是 CPU 密集型的，应避免此操作。

## 元素集函数

元素集也可以基于 `P()` 集合函数（可能值）和 `E()`（排除值）。

例如，如果要选择已销售产品 ‘`Cap`’ 的国家/地区，可以使用：

`<Country = P({1<Product={Cap}>} Country)>`

类似地，如果要选择产品 `Cap` 尚未销售的国家，可以使用：

`<Country = E({1<Product={Cap}>} Country)>`

有关更多信息，请参阅[使用集合函数的集合修饰符](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-modifiers-implicit-field-value-definitions.htm)。

## 了解详情

* [集合分析](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)

* [集合标识符](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-identifiers.htm)

* [集合运算符](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-operators.htm)