# 集合修饰符和高级搜索

可以通过使用集合修饰符进行搜索来创建元素集合。

例如：

* `<Country = {"C*"}>`
* `<Year = {">2015"}>`
* `<Ingredient = {"*garlic*"}>`

搜索应始终用双引号、方括号或严肃的重音符号括起来。您可以使用混合了文字字符串（单引号）和搜索（双引号）的列表。例如：

`<Product = {'Nut', "*Bolt", Washer}>`

## 文本搜索

通配符和其他符号可用于文本搜索：

* 星号 (\*) 表示任意数量的字符。

* 问号 (?) 表示单个字符。

* 扬抑重音 (^) 将标记单词的开头。

例如：

* `<Country = {"C*", "*land"}>`

  匹配以 `C` 开头或以 `land` 技术的所有国家。

* `<Country = {"*^z*"}>`

  这将匹配有以 `z` 开头的单次的所有国家，例如 `New Zealand`。

## 数字搜索

您可以使用以下关系运算符进行数字搜索：`>`、`>=`、`<`、`<=`

数值搜索始终以这些运算符之一开始。例如：

* `<Year = {">2015"}>`

  匹配 2016 年及以后年份。

* `<Date = {">=1/1/2015<1/1/2016"}>`

  匹配 2015 年期间的所有日期。请注意用于描述两个日期之间的时间范围的语法。日期格式需要与相关字段的日期格式匹配。

## 表达式搜索

可以使用表达式搜索进行更高级的搜索。然后为搜索字段中的每个字段值计算聚合。将选择搜索表达式返回 true 的所有值。

表达式搜索始终以等号开头：`=`

例如：

`<Customer = {"=Sum(Sales)>1000"}>`

这将返回销售额大于1000的所有客户。`Sum(Sales)` 根据当前选择计算。这意味着，如果您在另一个字段（如 `Product` 字段）中进行了选择，则您将仅获得满足所选产品销售条件的客户。

如果希望条件独立于选择，则需要在搜索字符串中使用集合分析。例如：

`<Customer = {"=Sum({1} Sales)>1000"}>`

等号后面的表达式将被解释为布尔值。这意味着，如果它的计算结果为其他值，任何非零数字都将被解释为 true，而零和字符串则被解释为 false。

## 引号

当搜索字符串包含空格或特殊字符时，请使用引号。单引号将与单个字段值进行文本、区分大小写的匹配。双引号表示不区分大小写的搜索可能匹配多个字段值。

例如：

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

  仅匹配 `New Zealand`。

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

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

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

有关更多信息，请参阅[在选择项或可视化中搜索](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Selections/SelectionsToolbar/search-selections.htm)。

信息注释在之前的 Qlik Sense 版本中，在单引号和双引号之间不存在区别，并且将所有引用的字符串作为搜索处理。要保持向后兼容性，使用较旧版本 Qlik Sense 创建的应用程序将继续和在之前版本中那样工作。使用 Qlik Sense November 2017 或更高版本创建的应用程序将存在两种类型引号之间的差异。

## 示例：带有搜索的集合修饰符的图表表达式

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

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

加载脚本

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

```
MyTable:
Load 
Year(Date) as Year,
Date#(Date,'YYYY-MM-DD') as ISO_Date, 
Date(Date#(Date,'YYYY-MM-DD'),'M/D/YYYY') as US_Date, 
Country, Product, Amount 
Inline
[Date, Country, Product, Amount
2018-02-20, Canada, Washer, 6
2018-07-08, Germany, Anchor bolt, 10
2018-07-14, Germany, Anchor bolt, 3
2018-08-31, France, Nut, 2
2018-09-02, Czech Republic, Bolt, 1
2019-02-11, Czech Republic, Bolt, 3
2019-07-31, Czech Republic, Washer, 6
2020-03-13, France, Anchor bolt, 1
2020-07-12, Canada, Anchor bolt, 8
2020-09-16, France, Washer, 1];	
```

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

示例 1：带有文本搜索的图表表达式。

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

表格 - 带文本搜索的集合修饰符

| 国家/地区 | Sum (Amount) | Sum({&lt;Country={"C\*"}&gt;} Amount) | Sum({&lt;Country={"\*^R\*"}&gt;} Amount) | Sum({&lt;Product={"\*bolt\*"}&gt;} Amount) |
| --- | --- | --- | --- | --- |
| 总计 | 41 | 24 | 10 | 26 |
| 加拿大 | 14 | 14 | 0 | 8 |
| 捷克共和国 | 10 | 10 | 10 | 4 |
| 法国 | 4 | 0 | 0 | 1 |
| 德国 | 13 | 0 | 0 | 13 |

解释

* 维度：

  * `Country`

* 度量：

  * `Sum(Amount)`

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

  * `Sum({<Country={"C*"}>}Amount)`

    总和 `Amount`，针对以 `C` 开头的所有国家，例如 `Canada` 以及 `Czech Republic`。

  * `Sum({<Country={"*^R*"}>}Amount)`

    总和 `Amount`，针对以 `R` 开头的所有国家，例如 `Czech Republic`。

  * `Sum({<Product={"*bolt*"}>}Amount)`

    总和 `Amount`，针对包含字符串 `bolt` 的所有产品，例如 `Bolt` 以及 `Anchor bolt`。

带文本高级搜索的集合修饰符

带文本高级搜索的集合修饰符

带文本高级搜索的集合修饰符 ![带有文本搜索的图表表达式。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_setanalysis_text_search.png)

有关表达式的更多信息，请参阅[在可视化中使用表达式](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm)。

示例 2：带有数字搜索的图表表达式

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

表 - 带有数字搜索的集合表达式

| 国家/地区 | Sum (Amount) | Sum({&lt;Year={"&gt;2019"}&gt;} Amount) | Sum({&lt;ISO\_Date={"&gt;=2019-07-01"}&gt;} Amount) | Sum({&lt;US\_Date={"&gt;=4/1/2018&lt;=12/31/2018"}&gt;} Amount) |
| --- | --- | --- | --- | --- |
| 总计 | 41 | 10 | 16 | 16 |
| 加拿大 | 14 | 8 | 8 | 0 |
| 捷克共和国 | 10 | 0 | 6 | 1 |
| 法国 | 4 | 2 | 2 | 2 |
| 德国 | 13 | 0 | 0 | 13 |

解释

* 维度：

  * `Country`

* 度量：

  * `Sum(Amount)`

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

  * `Sum({<Year={">2019"}>}Amount)`

    总和 `Amount`，针对 `2019` 之后的所有年份。

  * `Sum({<ISO_Date={">=2019-07-01"}>}Amount)`

    总和 `Amount`，针对 `2019-07-01` 或之后的所有日期。搜索中日期的格式必须与字段的格式匹配。

  * `Sum({<US_Date={">=4/1/2018<=12/31/2018"}>}Amount)`

    总和 `Amount`，适用于从 `4/1/2018` 到 `12/31/2018` 的所有日期，包括开始和结束日期。搜索中日期的格式必须与字段的格式匹配。

带有数字搜索的集合表达式

带有数字搜索的集合表达式

带有数字搜索的集合表达式 ![带有数字搜索的图表表达式。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_setanalysis_numeric_search.png)

示例 3：带有表达式搜索的图表表达式

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

Table - Set modifiers with expression searches

| Country | Sum (Amount) | Sum({&lt;Country={"=Sum(Amount)&gt;10"}&gt;} Amount) | Sum({&lt;Country={"=Count(distinct Product)=1"}&gt;} Amount) | Sum({&lt;Product={"=Count(Amount)&gt;3"}&gt;} Amount) |
| --- | --- | --- | --- | --- |
| Totals | 41 | 27 | 13 | 22 |
| Canada | 14 | 14 | 0 | 8 |
| Czech Republic | 10 | 0 | 0 | 0 |
| France | 4 | 0 | 0 | 1 |
| Germany | 13 | 13 | 13 | 13 |

解释

* 维度：

  * `Country`

* 度量：

  * `Sum(Amount)`

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

  * `Sum({<Country={"=Sum(Amount)>10"}>}Amount)`

    总和 `Amount` ，针对 `Amount` 的聚合总和大于 `10` 的所有国家。

  * `Sum({<Country={"=Count(distinct Product)=1"}>}Amount)`

    总和 `Amount`，针对准确地与一个不同的产品关联的所有国家。

  * `Sum({<Product={"=Count(Amount)>3"}>}Amount)`

    总和 `Amount`，针对数据中有三个以上交易的所有国家。

带有表达式搜索的集合表达式

带有表达式搜索的集合表达式

带有表达式搜索的集合表达式 ![带有表达式搜索的图表表达式。](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/ui_gen_setanalysis_expression_search.png)

| 实例 | 结果 |
| --- | --- |
| sum( {$–1&lt;Product = {“\*Internal\*”, “\*Domestic\*”}&gt;} Sales ) | 返回当前选择项的销售额，排除产品名中包含字符串 'Internal' 或 'Domestic' 的产品的相关交易。 |
| sum( {$&lt;Customer = {“=Sum({1&lt;Year = {2007}&gt;} Sales ) &gt; 1000000”}&gt;} Sales ) | 返回当前选择项的销售额，但“Customer”字段中有新选择项：仅限在 2007 年总销售额超过 1000000 的客户。 |