作者·2011-02-28 16:43
·

data manager里使用recursive levels

字数 1441阅读 3098评论 6赞 1
最近公司一同事问:cognos data manager里的recursive levels是什么。

我翻了下官方文档,咋一看,没看明白。原来自己有一个东西还没理清楚。那就是auto-levels hierachy,翻译过来就是自动层级关系。在维度建模里,如果原始维度数据的层级关系不是很明显,或者根本就是没有层级关系,只是定义了一个parent-child relationship。那么这个时候就要用auto-levels hierachy了。

而recursive levels是什么呢?字面上理解:递归层级。也就是递归的定义层级关系。我个人认为它与auto-levels有相同点,也有不同点,而且当你理解了auto-levels以后,理解递归层级就更好理解了。auto-levels的特点是层级数是未知的,你的维度数据里的父子关系有多少层,那么auto-levels hierachy就能生成多少层,而且层级的名称是固定的,你没办法更改或定义。(不能更改只是我的推测,但是定义是肯定不行的。)而recursive levels适用的场合也是维度数据没有明显的层级关系,也是根据原始维度数据里的父子关系来确定层级的,但是它比auto-levels多一个特点,层级数是固定的。这样你就可以显式的定义层级的名称:比如某公司有个员工信息表,现在我们要将其建立成一个员工的维度,其下的层级分为:事业部部长 --> 项目经理 --> 项目小组长 --> 程序员。在原始表里的数据是这样的:emp_id,emp_name,leader_id。那么父子关系就是通过leader_id来定义的。每个leader_id都指向一个emp_id。如下图:

650) this.width=650;">

它们的层级关系就是下面这样的:

650) this.width=650;">

上面这个图就是通过recursive level建立的层级关系,明晰了吧。虽然用auto-levels hierachy也可以生成上面的层级关系图,但是recursive level有它自己的优点,前面已经说过了。所以我们可以看到有时候recursive level还是有用的。

在定义recursive level的时候有个要注意的地方:大家可以看到陈部长的leader_id里有个100,这个leader_id在emp_id里是对应不到的,所以在定义recursive level的时候有个 apex detection method(翻译:顶点判定方法)。我们选择parent values:然后填上上面那个100就ok了,因为100是所有层级的最高点。

下面就说说如何传送我们已经建好的recursive level维度数据到目标数据仓库吧。

首先建立一个维度传输,然后就是注意:这里有一个 top parent id:我们将其填上上面的100。下面的操作都跟自带的向导一样(这里传输模式我选的是星型,如果选parent类型的话会报一个错误。等我以后测试来在给出相应的解释吧)。在数据仓库里的数据就是下面这种格式了:

650) this.width=650;">

而用auto-level做出来的层级,传送得到的维表则是下面这种:

650) this.width=650;">

可以看到二者还是有区别的。那么选择权在开发人员手里,主要看哪种方式适合就用哪种方式。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论6 条评论

trizytrizy软件开发工程师cc
2013-09-09 16:41
有相关中文文档吗?谢了
trizytrizy软件开发工程师cc
2013-09-09 16:41
有相关中文文档吗?谢了
trizytrizy软件开发工程师cc
2013-09-09 16:40
M@X 还会DATA manager  马上要用了,有机会请教一些问题,谢谢
Notes_chenlongNotes_chenlong软件开发工程师everlasting
2012-10-09 15:25
学习之
a2011ya2011y软件开发工程师all first
2012-06-25 18:05
学习了!
stilltherestillthere软件开发工程师HP
2011-03-24 09:21
高水平; 拜读乐。
Ctrl+Enter 发表

作者其他文章

相关问题

相关资料

X社区推广