父子维(上下级维)维度的建立

http://hi.baidu.com/tokyou/item/00913c4197585633fa896017

在cognos8中,用fm建模的时候,怎么才能将一张表的一个字段分成多个层呢,我的表结构是这样的

dwbm(编号),dwmc(名称),lsdw(隶属单位),dwjb(单位级别)
420000                                              1
420500                      420000           2
420501                      420500           3


请教一下,这种结构怎么建关系,是用一张表建呢,还是分层多张表?

---------------------------

FM要這樣設計

建立一個Query Object 叫做組織一
組織一裡面要下一個FILTER叫做dwjb(单位级别) = 1

建立一個Query Object 叫做組織二
組織一裡面要下一個FILTER叫做dwjb(单位级别) = 2

建立一個Query Object 叫做組織三
組織一裡面要下一個FILTER叫做dwjb(单位级别) = 3

組織一和組織二的關係:組織一.dwbm = 組織二.dwmc
組織二和組織三的關係:組織二.dwbm = 組織三.dwmc

用這樣的設計,便可以由你的需求建立出階層關係

----------------------

这样也不行啊,我重说一下我的需求:
怎样才能将一张表的一个字段分成多个层,我的表结构是这样的

dwbm(编号),dwmc(名称),lsdw(隶属单位),dwjb(单位级别)
420000 ,'','',1
420500 ,'',420000 ,2
420501 ,'',420500, 3

想建立一个有层次关系的维度,在分析中要实现向上、向下钻取,且要在这个维度中出现“dwbm(编号),”这个字段,要与其它表(事实表)进行连接,在事实表中也有一个dwbm的字段,方便得到分析结果。

----------------------------

楼主这个问题,我们项目也遇到过,不过处理办法是给表增加一个自增id,结果是可以上下钻取,但是不可避免,1,2,3级单位也许都会在同一级别出现,像这样的问题,除非单位的业务系统是从最底层进行的,但是事实不是这样,有的是在底层公司,有的是在分公司,有的在总公司完成的,甚至有的业务是跨级别的,这样就给项目造成很大的困难。4楼的这样建表是可以的,但是业务上也许达不到要求,求高人。。。

-------------------------

不规则层级机构维度的建立
以不规则层级的机构表为例,假如总公司、分公司、支公司、营业部等都可以进行业务处理,其维度的建立如下:

(1)数据
总公司   00
|--分公司1   01
|     |--支公司1   0101
|     |--支公司2   0102
|        |--营业部1   010201
|        |--营业部2   010202
|--分公司2   02
| |--支公司3 0201
| |--支公司4 0202
|--分公司3   03

(2)机构表结构为:
deptcode 机构代码
deptname 机构名称

(3)将机构表转为为维度所需要的表
deptcode   机构代码
deptname 机构名称
level1code 总公司代码
level1name 总公司名称
level2code 分公司代码
level2name 分公司名称
level3code 支公司代码
level3name 支公司名称
level4code 营业部代码
level4name 营业部名称

(4)对数据的处理
机构代码 名称     一级代码 名称     二级代码 名称     三级代码   名称    四级代码 名称
总公司 00           00           总公司   
分公司1   01       00           总公司 01       分公司1
支公司1   0101     00           总公司 01       分公司1   0101    支公司1
支公司2   0102     00        总公司 01       分公司1   0102    支公司2
营业部1   010201 00    总公司 01       分公司1   0102    支公司2 010201 营业部1
营业部2   010202 00    总公司 01       分公司1   0102    支公司2 010202 营业部2
分公司2   02        00    总公司 02       分公司2
支公司3   0201    00    总公司 02       分公司2   0201    支公司3
支公司4   0202    00    总公司 02       分公司2   0202    支公司4
分公司3   03        00    总公司 03       分公司3

注意:总公司从二级开始,代码、名称为空,对分公司从三级开始,支公司四级为空,树状结构,就能正常显示不规则层级结构了。如果总公司二、三、四级都填上00,分、支公司同样处理,在下拉分公司层时,会出现总公司,同样支公司层级会出现分公司,这种结构不符合实际情况。故要进行上述处理。

(5)对维度的理解
事实表Fact1,机构表TDept,机构维度DDept(其名称为机构),Tdept与Fact1一对多关系。在cognos 8.3中,报表增加提示页面,拖入树状提示页,参数为v_deptcode,选机构维度,操作符为in,Cognos显示的值是机构维度的名称,报表生成的过滤条件为[机构维度].机构 in (v_deptcode),由于机构维度中并没有出现机构代码,上述与维度关联的条件难以理解,可以理解为树状机构选中的节点(不是叶子节点)对应到Tdept表中,Tdept表与Fact1关联,形成正确的Sql语句。

(6)对Sql的困惑
Cognos很强大,但隐藏的Sql生成机制使开发人员困惑,有时关联关系、提示页面生成的数据并不是我们所需要的,如何查看提交给数据库的Sql语句呢?使用Oracle的Sql Monitor,无法跟踪。

不知各位是如何解决这个问题的。

------------------

可以的 分层可以这样来分。例如先把1层的做一个query然后把2层的做一个query以此类推(有个前提是:你的层的固定的)最后做层之间的关系就OK了

猜你喜欢

转载自housheng33.iteye.com/blog/1696957
今日推荐