11月底

还有将近一个小时就要十二月份了。

回首这一个月, 其实还是有很多事情可以记录一下的。

告别了一段所谓的感情,想起那时常听的三首歌, If I could tell you, Love story meets viva la vida, anything could happen.

不知疲倦的工作,为了完成Universe的文档, 开始硬着头皮学习Java。其实我更想学习的是C++。

为了体验一下Black Friday,在感恩节买了一把剃须刀, 一个iPad,跟一个美国人一样去Target和Walmart顶着寒风排队。

退掉了NYSC的Membership, 被罚了150刀, 跟自己说, 嗯,就当是一次经历吧。

心血来潮想买一台笔记本, 翻来覆去还是想买Thinkpad或者Macbook Pro. Thinkpad被联想折腾的一点样子都没有了。

去Apple Store体验了一下Macbook, 其实真的挺难用的, 或许是我已经用惯了Windows了。于是买笔记本这件事算是不了了之。

马上就要十二月份了, 感觉就像是告别了什么一样。

又回头想了想今年这一年,或许真的是没有白过, 也真的是体会到了一点东西。

好吧,这篇短短的博客就当是我的无病呻吟。也算是我为这一个月做的小结。...

Read More...

强迫症发作

最近强迫症发作,做任何事好像都有一个人再跟我说话,已经不仅仅局限于拿起笔写字的时候了。

我很怕这种状况会延续,而正当我写下这段话的时候, 心中的那个”小人”又开始隐隐发话, “我就是要让你失败!!!”

“大概又要开始思考了吧”

“大概又要写好了吧”

“大概又要达成结论了吧”

“嗯, 达成结论你就成功了!”

“达成结论你就成功了!”

“这么分析你就成功了”

“这么分析大概你又要成功了”

“世界上,不, 全宇宙就你一个人有这种想法”

“哈哈, 全宇宙,全时代,就你一个人有这种想法”

“全维度, 我只存在于你身体中, 我就是要让你失败, 我就是要让你失败”

我很怕这种状况会延续下去, 一直到我死。

难道你就真的想这么一直延续下去吗?

难道你就真的想让我带着这种状况一直到老么?

难道真的想一直延续下去么?

这还算是强迫症么?

很怕这种状况会延续变成精神分裂症, 然后我就住进精神病院, 然后我就用世人无法理解的表情看着这个世界, 然后大家都会嘲笑我, 但是嘲笑中还参杂着些许怜悯。

于是世界上还会有很多慈善机构, 他们会定期的组织活动来看望我们这群人, 其实他们根本走不进我的世界, 因为全宇宙, 只有我心里的那个小人才能懂我。

我是特殊的, 心里的那个小人一直这么说,”你别想思考, 你就用木讷的眼神看着这个世界” ,他说。...

Read More...

Informatica Code Page Mismatch 错误解决方法

环境: Windows 2003 + Informatica9.1

刚才鼓捣了一下Informatica, 在启动Integration Service的时候出现了一个错误,

‘LM_36011 Code page mismatch. Service process is running in code page [MS Windows Latin 1 (ANSI), superset of Latin1] whereas the service is configured in the Admin Console to run in code ...

Read More...

SAP BusinessObjects WebI 3.x锁表头

Webi 本身其实并没有提供类似于Excel的锁定表头的功能,只能通过CSS+Javascript的方式实现。

个人理解, 被锁住的表头其实可以看作是另外一个Block, 该block的位置会随着浏览器页面上下滚动而调整相应位置。

完全手写一个table, 需要添加一个Free-standing cell作为容器,整个table的每个列要下面的block的列对齐。

在free-standing cell 中 添加如下代码:

 

 

设置Reading Content As HTML, 保存, 重新打开报表即可。

 

源代码:

 

<script type=”text/javascript”>

window.onscroll=function ()

{

 

var table=document.getElementByIdx_x_x(‘to_be_fixed’);

 

if (table.style.top.replace(“px”,””)-document.body.scrollTop<0)

{

table.style.position=”absolute”;

table.style.top=document.body.scrollTop+”px”;

}

else

{

table.style.top=”230px”; //根据实际情况进行调整

}

 

}

</script>...

Read More...

SAP BusinessObjects WebI 3.x 中的Custom Sort

Webi中有三种排序方式, Ascending, Descending和Custom Sort。默认是Ascending方式。

前两种很好理解,稍有数据库基础的人一看就懂。

比较好玩的是第三种。

 
 

1) 要排序的值都出现在报表中。

比如, 表值如下:

 
 

                                    ID
————————————–
                                     1
                                     2
                                     3
                                     4
                                     5

 
 

但是, 由于要求, 在报表上要显示为如下格式:

 
 

 
 

这时可以使用Custom Sort来完成。

 
 

 
 

 
 

点击”OK”即可。

 
 

对于使用了Custom Sort 的列,webi排序图标变成如下所示:

 
 

 

 
 

2) 添加其他数值。

 
 

现在报表中并没有出现”6″, 如果将来, 我想让”6″出现在1和3之间,怎么办?

 
 

只需手工添加即可:

 
 

 
 

 
 

测试: 在数据库中添加”6″, 于是

数据库中表值如下:

                                    ID
————————————–
                                     1
                                     2...

Read More...

Webi 中的 Merge Dimensions

由于项目原因要经常使用Merge Dimension, 今天抽空把其中的道道复习了一下。

为了方便描述, 依然沿用BO 自带的 Island Resort Marketing作为Universe。

 
 

分别创建两个Data Providers,

如下所示,

 
 

[Year 1998]:


 

[Year 1998 1999]: 

 

 
 

运行查询, 结果如图,

  

现在将Year, Resort两个Dimension Merge起来,拖出的报表如下所示:

  

 
 

可见, 现在的报表显示样式是根据Merge之后的Dimension叠加而来。 

 
 

如果我如果想使用DP1中的Dimension作为Driving Value,该怎么做呢?

OK, 打开Merge之后的Dimension, 选择第一个DP中的Dimension.

拖入报表, 这样, 报表后面的值就是根据第一个DP中的Dimension值而来。

 
 

  
 

同理, 可以将DP2中的值作为Driving value.

 
 

另: Document的Properties中有一个选项叫: Extended Merged Dimension ...

Read More...

BO Enable Database Credentials

这是在BO当中使用数据库已有账户进行数据查询的一种方式。

 
 

下面通过一个简单的例子来说明一下。

 
 

首先要确保在数据库中有相应用户。比如,有一个用户名叫”Test1″,他的名下有Test_Value这张表,表中有数据,如下:

 
 

                                    ID
————————————–
                                     1

 
 

与此同时,有Test2用户, 同样, 在他的名下也有Test_Value这张表, 数据如下:

 
 

                                    ID
————————————–
                                     2

 
 

去到CMC新建两个用户, BO1, BO2, 修改两者的属性, 分别指向数据库用户Test1和Test2.

 
 

使用BO1创建一个Universe, 创建基于Test_Value表的Object。

 
 

创建完之后修改connection的Authentication Mode为”Use BusinessObjects Credential Mapping”。(这步很重要,否则会以标准的方式去数据库取数,无视前面的”用户mapping”)

 
 

保存universe,然后Export。

 
 

分别使用BO1和BO2登录,新建一个基于刚刚创建的universe的Webi报表,运行,就能看出两者查询出来的结果是不一样的。

 
 

===================================

 
 

总觉得BO的这种用户Mapping方式应该和Oracle的VPD相结合,以达到最佳的维护和可定制性。 改天研究一下。...

Read More...

BO Reposiroty 从MySQL迁移至Oracle

等着看足球呢, 闲来无事,心血来潮, 把机器上的BO Repository 从MySQL迁移到 Oracle下。几经波澜,终于搞定了。

环境:

Windows 2003 SP2

BusinessObjects XI 3.1 SP1

Oracle 11g R2

MySQL 5.5

 
 

1)  Repository迁移:

打开 CMC >> 双击 SIA服务器,选择Configuration Tab >> 选择第二个 : “Copy data from another source”, 点击 “OK”, 在”Source Contains Data ...

Read More...