设置修饰符
通过添加或更换选择项可修改集合。此类修改可写入集合表达式。
集合修饰符包括一个或几个字段名称,每个字段后均有属于此字段范畴的选择项,所有选择由 < 和 > 括起来。例如:<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*`}>。搜索不区分大小写。
在之前版本的 QlikView 中,在单引号和双引号之间不存在差异,并且所有带引号的字段都作为搜索处理。为了保持向后兼容性,通过较旧版本 QlikView 创建的文档将仍然和之前版本中的工作方式一样。通过 QlikView November 2017 或更高版本创建的文档将存在两种引号类型之间的差异。
强制排除
最后,对于字段输入模式,仍有可能需要强制排除。如果要强制排除特定字段值,需要在字段名称前加“~”。
示例和结果:
示例 | 结果 |
---|---|
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 ) | 返回当前选择项的销售额,但使用用于确定年度范围以计算销售总和的数值搜索。 |
如果要强制排除文本对象等对象中的特定字段值,则必须修改脚本语法。例如,如果脚本语句如下:
=count({<ANDActor=>}DISTINCT Title)
如下修改它:
=count({<~ANDActor=, ANDActor=>} DISTINCT Title)