集合修饰符

通过添加或更换选择项可修改集合。此类修改可写入集合表达式。

集合修饰符包括一个或多个字段名称,每个字段后接此字段上的选择项,所有选择项均使用尖括号 <> 括起来。例如:<Year={2007,2008},Region={US}>。字段名称和字段值可以照常使用引号,例如:<[Sales Region]={’West coast’, ’South America’}>

集合修饰符可修改先前集合标识符的选择项。如果未引用集合标识符,则默认为当前选择项状态。

可以通过多种方法定义选择项:

  • 基于另一个字段
  • 基于元素集(修饰符中的字段值列表)
  • 强制排除

在下面的小节中介绍了这些方法。

基于另一个字段

一种简单的做法是,选择项基于另一个字段的所选值,例如 <OrderDate = DeliveryDate>。此修饰符将获得 DeliveryDate 的所选值,并将这些值作为选择项应用于 OrderDate。如果字段包括很多不同特殊值(数百个),则该操作是 CPU 密集型的,应避免此操作。

基于元素集

集合表达式的最常见的示例是基于包含在波浪括号中的字段值的列表的集合表达式。值由逗号分隔,例如 <Year = {2007, 2008}>。波浪括号中定义的是元素集,所含元素可以是显式字段值或字段值搜索。

除非列出的值包含空白或特殊字符,否则不需要引号。列出的值将直接与字段值匹配。该比较区分大小写。

如果列出的值包含空白或特殊值,或者如果您希望使用通配符,那么您需要将值包含在引号中。如果列出的值为显式字段值,则应当使用单引号。然后将在列出的值以及各个字段值之间进行大小写匹配。

应当将双引号用于搜索,即包含通配符的字符串或以关系运算符或等号开头的字符串。例如,<Ingredient = {"*Garlic*"}> 将选择包含字符串 ’Garlic’的所有部分。双引号可替换为括号,例如 <Ingredient = {[*Garlic*]}>。双引号可替换为沉音符,例如 <Ingredient = {`*Garlic*`}>。搜索要区分大小写。

备注:

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

强制排除

最后,处于 AND 模式的字段也可能会强制排除。如果要强制排除特定字段值,需要在字段名称前加“~”。

备注: 仅在使用 Qlik 引擎 API 时支持 AND 模式。

Examples and results:  

示例 结果
sum( {1<Region= {USA} >} Sales ) 返回 USA 区域的销售额,忽略当前选择项
sum( {$<Region = >} Sales ) 返回当前选择项的销售额,但移除“Region”中的选择项
sum( {<Region = >} Sales )

返回与上一例相同的销售额。当省略要修改的集合时,则假定 $

备注: 上两例的语法被解释为在“Region”中“没有选择项”,也就是说所有区域假定其他选择项可用。它不等同于解释为没有区域的语法 <Region = {}>(或等号右侧的任何其他文本默认生成空白元素集)。
sum( {$<Year = {2000}, Region = {US, SE, DE, UK, FR}>} Sales ) 返回当前选择项的销售额,但“Year”和“Region”中均有新选择项。
sum( {$<~Ingredient = {“*garlic*”}>} Sales )

字段 Ingredient 处于 AND 模式。

返回当前选择项的销售额,但强制排除所有包含字符串“garlic”的原料。

sum( {$<Year = {“2*”}>} Sales ) 返回当前选择项的销售额,但在字段“Year”中选择所有以数字“2”开头的年份,例如:2000 年及之后的年份。
sum( {$<Year = {“2*”,”198*”}>} Sales ) 与上例一样,但现在选择项中还包括 20 世纪 80 年代。
sum( {$<Year = {“>1978<2004”}>} Sales ) 返回当前选择项的销售额,但使用用于确定年度范围以计算销售总和的数值搜索。