BIEE项目实施心得
报表追溯
A某列报表追溯到B报表
1) 不带参数:报表开发编辑页面-列属性
交互-值/列标题:主交互()操作连接
操作-导航到BI内容
选择报表
OK 2) 带参数: 带参数的报表需要在被追溯的报表中添加列过滤器,运算符选择提示(如下图年月)
注意:A表传参数的字段和B表接受参数的字段,列公式:展示层的表名和列名必须一致:
如A表列公式为\"维度信息\".\"年月\",B表过滤器中提示的列公式也必须为\"维度信息\".\"年月\"
用户和权限
默认年月
建立提示,提示默认值转换成SQL,写入如下语句
a) 默认上月:year(current_date))*100+MONTH(CURRENT_DATE)-1 b) 默认当日:year(current_date))*100+MONTH(CURRENT_DATE)+DAYOFMONTH(CURRENT_DATE) c)
d) \"维度信息\".\"年月\" >= (year(current_date)-1)*100+MONTH(CURRENT_DATE)-1 e) \"维度信息\".\"年月\"
必须将发送的维度拖入到提示区
二次开发
1) 修改biee logo 用新的同样大的图片/png格式替换 登录主页Logo: oracle_logo.png
D:\\biee\\user_projects\\domains\\bifoundation_domain\\servers\\bi_server1\\tmp\\_WL_user\\analytics_11.1.1\\7dezjl\\war\\res\\sk_blafp\\login 报表页面Logo:oracle_logo.png D:\\biee\\user_projects\\domains\\bifoundation_domain\\servers\\bi_server1\\tmp\\_WL_user\\analytics_11.1.1\\7dezjl\\war\\res\\sk_blafp\\b_mozilla_4 2) 修改标题和头高度:
修改文件路径:
F:\\BIEE\\user_projects\\domains\\bifoundation_domain\\servers\\bi_server1\\tmp\\_WL_user\\analytics_11.1.1\\7dezjl\\war\\res\\b_mozilla\\ header.js
(a,\"IMG\");b.border=0;b.src=saw.header.getResUrl(\"branding_whitegradient.png\");b.alt=\"\";var c=saw.createChildElement 去掉抬头
false};saw.header.Viewer.launchAlerts=function(){var a=new obide.AlertsDialog.Model();new obide.AlertsDialog.Viewer(a,obips.FloatingWindow.Manager.getSingleton())};saw.header.Branding=function(e,a,d,b,c){this.headerModel=e;this.logo=a?a:saw.header.getResUrl(\"common/oracleLogo.png\");this.productName=d;this.desc=b;this.href=c?c:saw.commandToURL(\"bieehome\")};saw.header.Branding.prototype.render=function(f){var d=document;var e=f.insertCell(0);e.claName=\"HeaderLogo\";var b=saw.createChildElement(e,\"IMG\");b.border=0;b.src=this.logo;b.alt=saw.header.getLocalizedString(\"kmsgHeaderOracleLogo\");var a=f.insertCell(1);a.claName=\"HeaderBrandingCell\";b=saw.createChildElement(a,\"IMG\");b.border=0;b.src=saw.header.getResUrl(\"branding_whitegradient.png\");b.alt=\"\"--删除表头;var c=saw.createChildElement(a,\"span\");c.claName=\"HeaderBrandName\";saw.appendTextNode(c,\'BIEE\');--修改表头名this.nameSpan=c;saw.addEventListener(window,\"resize\",this.onWindowResize,this,true);this.gradientImg=b;this.container=f};saw.header.Branding.prototype.onWindowResize=function(b){var a=this.gradientImg;if(saw.userAgent.is_ie&&!saw.userAgent.is_ie9up&&b){var c=0;for(var d=0;d
登录主页点管理-
安全性-管理权限
登录主页设置
登录页面点我的账户
起始页
参数变量
Biee的变量分几种(库变量,会话变量,介绍变量,请求变量,Biee内部定义的变量不说了),用起来经常让大家糊涂,再此做个总结,有异议的地方请消息给我·· 欢迎讨论~ 现在开始吧,Administrator tool -Manage-Variable 下图~
这里是模型RPD定义变量的地方,也就是所定义的变量名都是保存在RPD模型中,Variable 所定义的变量类型分为两大类,一种是Repository(库变量),另外一种是Seion(会话变量)。
其中Repository分两种变量的类型:Dynamic(动态变量)和Static(静态变量) Seion也分两种变量类型:System(系统变量)和Non-System(非系统变量) 现在说一下库变量的用途,库变量的Static(静态变量)经常是作为项目需求中经常用的固定值做为这个静态变量值的,举个例子:如果一个项目中有10个Dashboard,每个Dashboard有10个page,每个page的下标都需要带上公司的版权注释,当公司被收购了版权需要更改的话怎么办,改一百次版权信息?这里如果用静态变量的话就方便多了,只需修改变量对应的缺省值就可以了。 用法如图:
建立一个Static的Repository Variable
变量名为SRV缺省值为222050000,其中要注意一下类型Type,因为是静态的,所以不需要初始化块。 在前端直接就可以调用了
命名必须和静态变量的名称相同(不用解释吧)~
看一下效果
OK ,调用静态的库变量成功。
这里需要注意一下,表达式和筛选调用库变量的时候是可以VALUEOF(\'SRV\')来引用,而其他地方调用的话例如文本:需要这么写@{biServer.variables[\'SRV\']} 。
再看一下动态(Dynamic)的库变量的用途,例如:一个项目中,要求当用户登录的时候看到的数据是当天(当月)的数据,这时候我们需要用到动态的库变量(也有其他方法,不做介绍了)。
所谓的“当前”,就是此刻所在的月,所以这些需要设置初始化块来设置时间的更新设置。 如图:
Edit Data Source是编辑查询的地方,会返回若干行值;
Edit Data Target是指定查询返回的数据用于初始化哪个变量的。返回值的顺序和需要初始化的变量顺序需要严格对称;
Schedule的地方就是制定查询执行的频率,即多久更新一次变量。 前端的调用方法可以静态的库变量相同;下图依文本为例:
效果如下:
这里需要提醒一下。库变量无论是静态的或是动态的,在前端都是无法对起变量值进行更改的,当然如果是库变量的取的关系库表中的值,通过回写数据库的数据来改动态的库变量也是一种方法哦~
再看一下什么时候Seion会话变量,回话变量的设置方法和库变量类似,也是可以直接设置Variables,当然也可以定义初始化块来定义更复杂的会话变量,其中会话变量分系统变量和非系统变量。
系统会话变量:DISPLAYNAME,EMAIL,GROUP,LAST_SYNCH_TIME and THIS_SYNCH_TIME, PORTALPATH,REQUESTKEY,SKIN,USER,WEBGROUPS.这里常用到的就USER,GROUP,DISPLAYNAME三个,其他变量是含义请参考 Busine Intelligence Server Administration Guide。非系统会话变量名称可以自定义,但不要和系统变量同名即可,这里不再说步骤了,和库变量定义相同,这里定义了一个非系统回话变量的如下:
其中Edit Execution Precedence是加载其他的应用程序定义的变量(例如:LDAP定义的用户变量)。
Test可以测试查看到变量名称和其缺省值
再前端调用一下
注意调用会话变量的时候是VALUEOF(NQ_SESSION.变量名)而调用库变量的时候是VALUEOF(变量名)
OK~调用成功。
注意当不加指标列的时候(只有会话变量列的时候会报错)~
系统自带的会话变量如USER,GROUP等就不举例了,网上有很多实例,也可以去看我的相关LDAP权限控制博文。 再看看前端可以定义的变量~ 前端可以定义的变量都是创建提示中设置
他分为介绍变量和请求变量,其中介绍变量是把提示中(也可叫筛选器)的所选项作为变量的Value值进行使用,用法如下: 定义介绍变量名
用@{变量名}的结果来引用
那么什么是请求变量,请求变量是从新定义会话变量的Value值的变量,其新定义的值来自提示所选项。
设置请求变量名的时候必须要和将修改的会话变量名称相同,上边已经定义了一个非系统会话变量SeionTest ,Value值为222010000,下面以这个为例,来修改会话变量SeionTest 的Value值。
定义一个提示的请求变量,名为SeionTest
在做一个会话变量的表
这里无需加筛选器,因为调节列是来自会话变量,我们实验的目的就是用提示的请求变量来修改这个会话变量的列~ OK~添加到仪表盘里看一下结果~
为了试验明显提示的缺省值没有进行设置,这里的缺省值是来自会话变量的222010000。
操作一下提示来改变会话变量的Value值~
OK~~!
变量用法总结:
库变量在Answers列的编辑公式中调用方法是VALUEOF(\"变量名\")
会话变量在在Answers列的编辑公式中调用方法是VALUEOF(NQ_SESSION.变量名)
库变量和会话变量在其他地方调用(例如文本中)是@{biServer.variables[‘变量名\']} 介绍变量的调用方法是@{变量名} 系统自带了一些会话变量如下: Delivers:@{currentMonth}。
currentTime => @{system.currentTime} = 2010-5-14 2:21:30 system.productVersion => @{system.productVersion} = 10.1.3.4 (Build 080726.1900) seion.locale => @{seion.locale} =zh-cn seion.language => @{seion.language} = zh rtl =>@{seion.rtl} = false
seion.loginTime => @{seion.loginTime} = 2010-5-14 1:42:36 seion.logoutTime =>@{seion.logoutTime } = 2010-5-14 1:42:31 seion.lastAcceTime =>@{seion.lastAcceTime} = 2010-5-14 2:21:29 seion.currentUser => @{seion.currentUser.id} = administrator
user.homeDirectory => @{user.homeDirectory} = /users/administrator user.id => @{user.id} = administrator
user.displayName => @{user.displayName} = administrator
数据权限设计
待讨论