主要介绍了cognos 8穿透钻取的高级部分应用。定义穿透钻取分成以下几个步骤来实现:
1. 成员集的定义与形成
2. 钻取规则
3. 钻取的方式
1 成员集的定义与形成(Organize Items into Sets)
1.1 默认的成员集
把数据项分组形成成员集有一些默认的规则:
(1) 只有构成报表的数据项才可考虑组成成员集(如果数据顶在Query中但没有被用到形成报表,这些数据项没有必要考虑构成成员集)
(2) 默认形成成员集是根据数据项所在的维度层次。例如在Figure 1中有3个成员集。
[Years]与[Year]数据项构成一个成员集。因为它们都来自同一个维度
[Order Method]数据项自己构成一个成员集,因为它是来自Order Method维度的唯一数据项。
[Product Line]与[Order Method]一样也自己单独构成一个成员集。
1.2 自定义成员集
报表复杂的穿透钻取都需要自定义成员集。自定义成员集有以下基本规则:
(1) 报表范围内的数据项都可以构成成员集
(2) 来自同一个维度的不同层次的数据项没有必要再自定义组成一个成员集,因为它们默认就是一个成员集。但是可以把它们分别自定义成独立的不同成员集,这样它们在穿透钻取时就会互不影响。
(3) 其它在报表中没有被自定义构成成员集的数据项则根据系统默认的规则构成成员集。
(4) 自定义构成成员集的报表数据项本身并不具有穿透钻取的能力,除非人为给数据项赋予钻取能力。
自定义成员集有以下几个步骤:
1. 打开Query的定义页面
2. 在Query的属性框中把“Define Member Sets”属性值设置成“Yes”如图Figure 2所示:
3. 打开“Member Sets”tab页,把要构成成员集的数据项拖拽进去形成成员集。每个成员集的根结点数据项决定了各个成员集之间的分组关系。如Figure 3中Region根结点因为与Product Line、Product Type 两个数据项没有什么关系,所以自己形成了一个独立的成员集。
如果报表要求Product Line与Product Type两个数据项的钻取行为互不影响,则可以自定义这两个数据项为两个独立的成员集,而不是按Figure 3中把两个数据项嵌套在一起形成一个成员集。自定义成员集将会覆盖原来系统默认成员集的形成方式。
2 钻取的规则(Define Set Drillability)
2.1 默认的钻取规则
对于没有自定义成员集、自定义钻取方式构成报表的数据项有以下几条系统默认的钻取规则:
向下钻取规则:
(1) 数据项是从维度的数据成员中获取
(2) 默认的钻取规则只对构成报表的数据项有用
(3) 向下钻取的数据项必须是报表中某个维度层级中最低的一层。
如Figure 5中“Quarter”是时间维度中最低的层次,所以它可以向下钻取。报
表中时间维度的其它层次都不能向下钻取。
(4) 数据项不能是被“隔离”(The item must not be “isolated”)
“隔离”情况发生在钻取到维度的最低层次时。在这种情况下,钻取到的数据项,它的相邻兄弟成员都被消除,并且这个数据项不能再向下钻取。如从Figure 6向下钻取到Figure 7时,“2004/Jun”是时间维度中最低层的成员,它相邻的兄弟成员“2004/Apr”等已被消除,并且它也不能再向下钻取。
向上钻取规则:
(1) 数据项是从维度的数据成员中获取
(2) 数据项必须是下面情况中的一种:
a) 所在层次是报表中相对其它同维数据项是最低层次
b) 是所在层次最低层次的上一层
c) 最低层次不是维度中的最高层级
(3) 其它数据项必须隐式设置成不可向上钻取
2.2 自定义钻取规则
自定义钻取依照以下规则,规则的优先级依次从强到弱。规则1“取消向下钻取”的优先级比其它规则都高。
规则1:(优先级最高)取消向下钻取
通过“Drill Behavior”窗口可以对报表的任意数据项根据需要定义是否要向下或向上钻取。在Figure 8中,“Country”数据项被定义成禁止向下钻取:
规则2:成员集中的数据项没有定义钻取方式
如果数据项是成员集的一个结点,但它没有定义向上或向下的钻取方式。则这个数据项无法钻取。因为定义了成员集,就表示报表的制作者必须控制数据项的所
有行为,所以对钻取行为就要手工定义而原本的系统默认失效。
规则3:维度中的最高/最低层次
数据项如果是某个维度最高层次上的成员则无法向上钻取,如果是维度最低层次的成员则无法向下钻取。
规则4:系统对成员集定义好的默认规则
Table 1是对成员集钻取的默认规则,前面的所述会覆盖Table 1中定义的规则:
3 钻取的方式
钻取主要有以下几种方式,用户可以根据需要自定义
3.1 Replace Expression
向下钻取
当采用“Replace Expression”作为向下钻取的方式时,钻取的结果集将是向下钻取的数据项的所有子结点:children(inpupt member) [/co
lor]
例如在Figure 12中,在左图中对“United States”数据项向下钻取,则返回右图中“United States”所有的子记录。
向上钻取
数据项如果是报表中某个维度最底层的成员时,向上钻取采用“Replace Expression”方式,返回的结果集是数据项上一层的所有成员:
children(grandparent(input member))
数据项如果比报表中同维最底层数据项更高一层,则向上钻取返回的数据集是该数据项上层的母结点,而不是返回上一层所有的结点。
parent(input member)
3.2 Replace Item
向下钻取
当采用“Replace Item”作为向下钻取的方式时,钻取的结果将返回向下钻取的数据项它本身。
如在Figure 14 中左图“United States”向下钻取的结果是右图中的“United States”本身。
“Replace Item”经常和“Replace Expression”结合起来用。例如在一个自定义的成员集中一个数据项的钻取方式是“Replace Item”,另一个数据项
的钻取方式定义为“Replace Expression”。在 Figure 15 中,“Sales Territory”列定义为采用“Replace Item”,“Country” 列定义为“Replace Expression”。当从左图中的“United States”向下钻取时,“Sales Territory” 列的数据项就变成了右图中的“United States”。
向上钻取
数据项如果是报表中某个维度最底层的成员,当采用“Replace Item”作为向上钻取的方式时,向上钻取的结果集是返回钻取项上两层的祖父结点:
grandparent(input member)
在Figure 16 中左图的“Los Angeles”向上钻取时返回右图的“Americas”
数据项如果在报表中不是某个维度最底层的成员(报表中还有同维更底层的成员的数据项),当采用“Replace Item”作为向上钻取的方式时,向上钻取的结果集是返回钻取项上一层的父结点:
Parent(input member)
在 Figure 17 中左图“United States”向上钻取时返回的结果是右图中“United States”上一层的父结点“Americas”