Qlikview集合分析

集合分析

集合可用于聚合函数。聚合函数一般用于聚合当前选择范围定义的可能记录的集合。但替代记录集合可由集合表达式定义。因此,集合在概念上与选择范围类似。

在使用中,集合表达式时总是以波形括号开始和结束,例如:{BM01}。

集合标识符

可以用一个常数表示记录集 1。记录集表示应用程序中所有记录的完全集合。

符号 $ 代表当前选择项范围内的记录。因此,陈述集合表达式 {$} 与不陈述集合表达式的意义等同。更有趣的是,{1-$}定义了当前选择项的反置,即指未包括在当前选择项中的所有数据。

后退/前进堆叠中的选择项可用作集合标识符。比如,可用货币符号:$1 代表先前选择项,其等同于单击后退按钮。同样,$_1 则代表前进一步,其等同于单击前进按钮。任何无标记的整数都可用于表示后退和前进动作,如 $0 代表当前选择项。

最后,书签也可用作集合标识符。注意,只有服务器和文档书签才能作为标识符使用。书签 ID 或书签名称都可以使用,如 BM01 或 MyBookmark。仅选择的书签部分可用。不包括值。因此,就不可能为集合分析在书签中使用输入字段。

示例:

sum( {$} Sales )
其可返回当前选择项的销售额, 即如同 sum(Sales)。

sum( {$1} Sales )
其可返回之前选择的销售额。

sum( {$_2} Sales )
其返回下两个选择的销售额,即前进两步。如果执行两次后退操作才会用到。

sum( {1} Sales )
其返回应用程序中的总销售额,忽略选择项而不是维度。例如,如果在图表中使用产品作维度,则每样产品将得到一个不同的值。

sum( {1} Total Sales )
其返回应用程序中的总销售额,忽略选择项和维度。即如同 sum(All Sales)。

sum( {BM01} Sales )
其可返回书签 BM01 的销售额。

sum( {$1} Sales )
其可返回书签 MyBookMark 的销售额。

sum({Server\BM01} Sales)
其可返回服务器书签 BM01 的销售额。

sum({Server\BM01} Sales)
其可返回文档书签 MyBookMark 的销售额。

集合运算符

一些集合运算符可以在既存的集合表达式中使用。如上所述,所有集合运算符将集合作为操作数并返回集合形式的结果。

+ 并集运算符。此二元运算返回两个集合操作数中所有记录构成的集合。

- 排除。此二元运算返回由属于第一个集合操作数但不属于另一个集合操作数的记录构成的集合。如用于一元运算,则结果是补集。

* 交集运算符。此二元运算返回两个集合操作数共有记录构成的集合。

/ 对称差集(异或运算)运算符。此二元运算返回包含于两个集合操作数中但不为它们所共有的记录构成的集合。

运算符优先级是: 1)一元负运算符(补集),2)交集和对称差集运算符,3)并集和排除运算符。在同一组内,从左至右判断表达式。非优先级顺序可由标准括号确定,由于集合运算符不可交换顺序,所以括号可能很有必要,例如,A + (B – C) 与 (A + B) – C 不同,反过来与 (A – C) + B 也不同。

示例:

sum( {1-$} Sales )
其可返回除当前选择项以外的所有销售额。

sum( {$*BM01} Sales )
其可返回包括在当前选择项与书签 BM01 中的销售额的交集。

sum( {-($+BM01)} Sales )
其可返回未包括在当前选择项与书签 BM01 中的销售额。

注意!
当集合运算符与包括多个QlikView 表格字段的基本聚合表达式同时使用时,可能造成不可预知的后果,应避免此种情况。例如,如果数量和价格两个字段来自不同表格,那么应避免使用表达式sum({$*BM01}Quantity*Price).

集合修饰符

通过添加或更换选择项可修改集合。此类修改可写入集合表达式。集合修饰符包括一个或几个字段名称,每个字段后均有属于此字段范畴的选择项,所有选择由< 和 > 括起来。例如: 。字段名称和字段值可以照常引用,例如:<[Sales Region]={’West coast’, ’South America’}>。

以下有几种定义选择范围的方法:一种简单的做法是根据其他字段已选值定义选择范围,例如:。修饰符将获得源于DeliveryDate的已选值,并将其作为选择项应用于OrderDate。如果字段包括很多不同特殊值(数百个),则该操作是 CPU 密集型的,应避免此操作。

然而,最常用的选择范围是将字段值扩于波浪括号内,各值由逗号分隔,如下所示:。波浪括号中定义的是元素集,所含元素可以是字段值或字段值搜索。搜索通常由双引号定义,例如: ,其表示将选择包括字符串‘garlic’的所有原料。搜索不区分大小写,并且会在不包含的值上进行。

空白元素集,明显的例子如 ,不明显的例子如 (未搜索到匹配记录),这些均表示没有产品,即其得到的记录集不与任何产品相关。注意:设置不能通过普通选择创建,除非在其他字段中选择,例如:TransactionID。

最后,对于字段输入模式,仍有可能需要强制排除。如果要强制排除特定字段值,需要在字段名称前加“~”。

集合修饰符可用于集合标识符中,也可单独使用。它不能用于集合表达式。当用于集合标识符中时,应在集合标识符后立即写出修饰符,例如,{$}。单独使用时,就等于修改当前选择范围。

示例:

sum( {1} Sales )
其返回 US 区域的销售额,忽略当前选择项。

sum( {$} Sales )
其返回当前选择项的销售额,但是移除“区域”选择。

sum( {} Sales )
返回与上一例相同的销售额。当省略设置修改时,则假设 $。

注意!
上两例的语法被解释为在“区域”中“没有选择项”,即所有区域可以给定其他选择。它不等同于解释为没有区域的语法 (或在等号右侧的任意文本默认得出空白元素集)。

sum( {$} Sales )
其返回当前选择项的销售额,但在“Region”中有“Year” 的新选择。

sum( {$<~Ingredient = {“*garlic*”}>} Sales )
其返回当前选择项的销售额,但强制排除所有包含‘garlic’字符串的原料。

sum( {$} Sales )
其返回当前选择项的销售额,但应在字段“Year”中选择所有以数位“2”开头的年份,例如:2000 及其之后年份。

sum( {$} Sales )
如同上例,但包括 1980 年。

sum( {$1978<2004”}>} Sales )
如同上例,但包含数值搜索,以便指定任意范围。

集合修饰符和集合运算符

如上所述,字段中的选择可以使用集合运算符定义并可在不同元素集中工作。例如:修饰符 表示除“1997”年外,还将选择以“20”开头的年份,同时不包括“2000”。

示例:

sum( {$} Sales)
其返回当前选择项的销售额,但要添加“OurProduct1” 至选中产品列表中并从产品列表中移除“OurProduct2”。

sum( {$} Sales )
其返回当前选择项与字段“Year”中额外选择项的销售额,即:1997 和 所有以“20”开头的年份,但是不包括 2000。注意:如果当前选择项中包含 2000,它也将在修改后被包括进来。

sum( {$} Sales )
其返回与上例相同的销售额,即使初始时当前选择项中包括 2000,它也将被排除在外。该例显示的是使用括号定义优先顺序的重要性。

sum( {$} Sales )
其返回当前选择项的销售额,但在“Year”中选择除 2000 年之外的所有年份;并仅指包含字符串‘bearing’的产品。

集合修饰符使用赋值和默认集合运算符

以上表示法定义了新的选择范围,忽略了字段的当前选择范围。然而,如果想在字段内的当前选择范围的基础上添加新字段值。例如,此时可能需要这样的修饰符 。一个简短而等义的写法是 ,即以赋值运算符默认定义并集。同样,交集、补集和对称差集可由赋值运算符默认定义为 “*=”, “–=” and “/=”。

示例:

sum( {$} Sales )
其返回当前选择项的销售额,但使用使用默认并集添加产品“OurProduct1”和“OurProduct2”至选中产品列表。

sum( {$} Sales )
其返回当前选择项的销售额,但使用使用默认并集添加在选择中添加:1997 和 所有以“20”开头的年份,但是不包括 2000。注意:如果当前选择项中包含 2000,它也将在修改后被包括进来。如同

sum( {$} Sales )
其返回当前选择项的销售额,但仅为当前选中产品与“OurProduct1”产品的交集。

集合修饰符和货币符号扩展

变量和其他货币符号表达式可以在集合表达式中使用。

示例:

sum( {$} Sales )
其返回与当前选择项相关的上一年份的销售额。此处,包含相关年份的变量 vLastYear 被使用在货币符号表达式中。

sum( {$} Sales )
其返回与当前选择项相关的上一年份的销售额。在这里,货币符号表达式被用于计算上一年份。

集合修饰符和高级搜索

使用通配符和聚合的高级搜索可以用于定义集合。

示例:

sum( {$–1} Sales )
其返回当前选择项的销售额,排除产品名中包含‘Internal’或‘Domestic’的产品的交易。

sum( {$} Sales ) > 1000000”}>} Sales )
其返回当前选择项的销售额,但在字段 “Customer” 中有新选择:仅选择在 2007 年中总销售额超过 1000000 的客户。

集合修饰符带有默认字段值定义

在上述示例中,所有字段值均已明确定义或通过搜索定义。但是,还可使用嵌套集合定义定义字段值集合。

在这种情况下,必须使用 Element 函数 P() 和 E() ,分别呈现正值的元素集和字段排除值。在括号内,可以指定一个集合表达式和一个字段,如 P({1} Customer)。这些函数不能在其他表达式中使用:

示例:

sum( {$} Customer)>} Sales )
其返回当前选择项的销售额,但仅限于购买过‘Shoe’的客户。Element 函数 P( ) 可返回可能客户列表,即通过选择产品字段内的“A”暗指的客户列表。

sum( {$})>} Sales )
结果如上。如果省略 Element 函数中的字段,该函数将返回外部任务中指定字段的正值。

sum( {$} Supplier)>} Sales )
其返回当前选择项的销售额,但仅限于提供过‘Shoe’的供应商。Element 函数 P( ) 可返回可能供应商列表,即通过选择产品字段内的“Shoe”暗指的客户列表。供应商列表随后被当作选择在字段 Customer 中使用。

sum( {$})>} Sales )
其返回当前选择项的销售额,但仅限于没有购买过‘Shoe’的客户。Element 函数 E( ) 可返回排除的客户列表,即通过选择产品字段内的“Shoe”排除的客户列表。

时间: 2024-12-12 10:21:04

Qlikview集合分析的相关文章

java ArrayList集合分析

一. ArrayList概述: 本文的源代码分析基于的JDK版本是1.8. ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类. ArrayList实现了Se

【discuzX2】/source/function/function_forum.php论坛模块通用函数集合分析

<?php /** *      [Discuz!] (C)2001-2099 Comsenz Inc. *      This is NOT a freeware, use is subject to license terms *      论坛模块通用函数集合 *      $Id: function_forum.php 24723 2011-10-09 12:50:14Z yangli $ */ if(!defined('IN_DISCUZ')) { exit('Access Denie

DirectUI 2D/3D 界面库集合 分析之总结

DirectUI优点在于能够非常方便的构建高效,绚丽的,非常易于扩展的界面.作者是Bjarke Viksoe, 他的这个界面程序思想和代码都很优秀,他的代码主要表述了他的思想,尽管bug比較多,可是很合适学习. DirctUI在不断的完好,有各种各样的3d界面库出来来了,可是,是它在我懵懂时给了我编程的思想,让我踏上了编程之路,以下,我把我搜集的界面库以及重构的界面库都贴出来,大家技术交流交流. 当中下载包中有: Duilib 开发文档.帮助文档以及分析说明文档 diablo_trunk(UI)

【discuzX2】/source/function/function_delete.php数据清理函数集合分析

<?php /** *      [Discuz!] (C)2001-2099 Comsenz Inc. *      This is NOT a freeware, use is subject to license terms * *      $Id: function_delete.php 27060 2012-01-04 01:32:05Z songlixin $ */ if(!defined('IN_DISCUZ')) { exit('Access Denied'); } requi

关联分析(购物篮子分析market basket analysis)R练习

关联分析(association analysis)又称关联挖掘,就是在交易数据.关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式.简言之,关联分析是发现数据库中不同项之间的联系. 与回归问题.分类问题不同,关联算法不能进行预测,但可以用于无监督的知识发现,寻找数据之间的关联性.由于其本身不需要提前标记数据,算法实施也很便捷,但是关联算法除了从定性的角度衡量其有效性以外,尚无一个简单的方法来客观地衡量其性能. 基本概念: 1.A→B的支持度:事件A,B同时发生的概率suppo

ucinet常用分析路径

1.将多值关系数据转换成二值关系数据,路径:变换→对分   2.密度分析,路径:网络→凝聚力→密度→密度   3.利用Net-Draw程序生成可视化结构图, 路径:可视化→Net-Draw→Open→Ucinet Dataset→Network   4.中心性的可视化分析,路径:Analysis→Centrality Measures   5.节点中心度分析,路径:网络→中心度→度   6.接近中心度分析,路径:网络→中心度→接近性   7.中间中心度分析,路径:网络→中心度→Freeman中间

机器学习算法-Apriori关联分析

引文: 学习一个算法,我们最关心的并不是算法本身,而是一个算法能够干什么,能应用到什么地方.很多的时候,我们都需要从大量数据中提取出有用的信息,从大规模数据中寻找物品间的隐含关系叫做关联分析(association analysis)或者关联规则学习(association rule learning).比如在平时的购物中,那些商品一起捆绑购买销量会比较好,又比如购物商城中的那些推荐信息,都是根据用户平时的搜索或者是购买情况来生成的.如果是蛮力搜索的话代价太高了,所以Apriori就出现了,就是

金融业务系统日志精益化分析

大家好,很高兴有这次机会和大家分享一些日志分析方面的心得.金融业日志管理面临着一些共性的问题,日志易在助力数百家大型企业用户建设日志精益化分析体系的过程中,积累了一些经验.借这次直播的机会,和参与本次直播的诸位金融企业相关技术负责人,梳理业务系统日志分析平台的一些架构及分析思路,算是抛砖引玉,希望今后能和大家就日志分析有更加深入的交流. 本次分享共分三个部分. 第一部分会就金融业日志管理方面的共同面临的问题作出浅谈,供大家了解行业现状,这部分起名为"同是天涯沦落人". 第二部分是我们在

如何通过网络,辨别数字世界的真假

数字世界,电流涌动.有多少能量是一直被浪费的呢?如果说,现实生活中我们奢侈的吃喝丢弃粮食是一种浪费.那么,制造虚假数据的人,同样一直在浪费能量.如何充分利用网络?遇到的困境或许不是如何充分利用,或许是如何更新陈旧的法律. 那么,如何通过网络辨别数字世界真假?这可以转换一个角度,如何搜集真假事件的相关信息.真或者假不是终点,目的才是它的终点.那么,webspider就是一个good idea.以柴静事件为例,可以搜集所有相关方公开言论以及合法相关背景,用简单的时间为轴.把事件用时间来排序,或许可以