本文档旨在说明如何在Oracle BI 中使用HTTP (URL或JavaScript) 方法实现一些特定的展示效果。
本文档包含以下主题:
1、使用Go URL在外部Portal或应用中引入Oracle BI视图;
2、使用Dashboard URL在外部Portal或应用中引用Dashboard内容;
3、使用Go URL传递SQL或筛选器;
4、使用JavaScript进行筛选
1 使用Go URL在外部Portal或应用中引入Oracle BI视图
此部分介绍了如何通过使用Go URL在外部Portal或应用中引入Oracle BI视图,包含以下内容:
(1)、Go URL结构;
(2)、Go URL参数;
1.1 Go URL结构
Oracle BI的Go URL命令可以将某一特定的Oracle BI视图引入外部portal或应用。当你向一个页面上添加一个视图,或是添加一个请求Oracle BI视图的链接,你会用到Go URL。
如果调用的是同一Web server上的页面,URL应该写成 /analytics/saw.dll?Go&Path= 的形式,”=”后面是你所引用的Oracle BI视图的路径。
如果调用的是不同Web server上的页面,URL应该写成 http://server_name_or_ip_address/Analytics/saw.dll?Go&Path= 的形式,”=”后面是你所引用的Oracle BI视图在该Web server上的路径。
下面的Go URL将返回Oracle BI的/share/test目录下名为testform的视图: /analytics/saw.dll?Go&Path=/shared/test/testform
1.2 Go URL参数
可以通过添加一个或多个参数来控制Go URL的效果。如果你所传递的参数中含有空格,那么必须用”+”将其替换。 ?
1.2.1 用户名和密码。
如果Go URL中所请求的视图需要特定的用户权限察看,或者用户未选 择保留登陆信息,那么需要在Go URL中提交用户名和密码。
格式如下:
&NQUser=uuu&NQPassword=ppp
例如:
用户以Administrator的身份登陆,密码为Administrator ?
1.2.2 链接选项。
返回的页面中将包含相关链接。
格式:
&Option=x x可以为以下字符: m: 修改 f: 刷新 d: 打印r: 下载
例如:
http://localhost:9704/analytics/saw.dll?Go&Path=/shared/test/testform&Options=mfdr ?
1.2.3 应用优化。
将根据具体参数值对返回的页面进行适当的优化。
格式:
&Action=
例如:
http://localhost:9704/analytics/saw.dll?Go&Path=/shared/test/testform&Action=print;
返回的页面不会包含页面控制,超链接等信息,适合打印(print)。 ?
1.2.4 指定视图。
将返回参数值所指定的视图而不是缺省的组合视图。
格式:
&ViewName=
例如:
http://localhost:9704/analytics/saw.dll?Go&Path=/shared/test/testform&ViewName=Chart;
假设请求的视图中包含一个名为Chart的图,那么返回的页面中只显示这个图。 ?
1.2.5 指定风格。
将以参数中指定的风格显示视图。
格式:
&Style=
例如:
http://localhost:9704/analytics/saw.dll?Go&Path=/shared/test/testform&Style=Lime ?
1.2.6 结果格式。
这个参数可以用来控制返回页面的格式。
格式:
&Format=XML/HTML
例子:
http://localhost:9704/analytics/saw.dll?Go&Path=/shared/test/testform&Format=XML;
显示的是页面的XML代码。
2 使用Dashboard URL在外部Portal或应用中引用Dashboard 内容
此部分介绍了如何通过使用Dashboard URL,包含以下内容: ?
(1)、Dashboard URL 结构;
(2)、Dashboard URL 参数;
(3)、Dashboard URL 的一个应用案例。
2.1 Dashboard URL 结构
Oracle BI的Dashboard URL命令可以将某一特定的Dashboard上的内容引入外部portal或应用。
如果调用的是同一Web server上的Dashboard,URL应该写成 /analytics/saw.dll?Dashboard&PortalPath= 的形式,”=”后面是你所引用的Dashboard的路径。
如果调用的是不同Web server上的页面,URL应该写成 http://server_name_or_ip_address/Analytics/saw.dll?Dashboard &PortalPath= 的形式,”=”后面是你所引用的Dashboard在该Web server上的路径。
下面的Dashboard URL将返回Oracle BI的/share/test/_portal/test 目录下名为page1的Dashboard:
/analytics/saw.dll?Dashboard&PortalPath=/shared/test/_portal/test&Page=page1
2.2 Dashboard URL 参数
Dashboard URL的参数类型和用法同Go URL类似,请参照Go URL参数。
2.3 Dashboard URL 的一个应用案例
Oracle BI 所生成的视图中,可以在列属性部分设置导航,指向某个页面或Dashboard。而且该列的所有行都将指向同一页面或Dashboard,也就是说返回的结果和该行的其它值无关。在实际应用中,常常期望返回和该行其它列相关的结果,可以利用Dashboard URL实现这一点。
下面通过一个例子来说明:
现在有一个名为Market Analysis Detail的表,如下所示
┌──────────┬───┬──────┬───────┐
│Market │Year│Dollars │link │
├──────────┼───┼──────┼───────┤
│ │2000│$282,113│Click here│
│ ├───┼──────┼───────┤
│ATLANTA │2001│$474,691│Click here│
│ ├───┼──────┼───────┤
│ │2002│$74,545 │Click here│
├──────────┼───┼──────┼───────┤
│ │2000│$85,595 │Click here│
│ ├───┼──────┼───────┤
│BIRMINGHAM │2001│$202,137│Click here│
│ ├───┼──────┼───────┤
│ │2002│$18,052 │Click here│
└──────────┴───┴──────┴───────┘
其中link是一个自定义的一个列。在列属性里设置”将文本视为HTML”。
编辑列公式为:
‘<a href=saw.dll?Dashboard&PortalPath=/shared/test/_portal/test&Page=test&Action=Navigate&P0=1&P1=eq&P2=Markets.Market&P3=1+‘||Markets.Market||‘>Click here</a>‘
这样,点击第一行的”Click here”就可以显示该行Market的详细销售信息。
前三行的”Click here”实际指向了:
saw.dll?Dashboard&PortalPath=/shared/test/_portal/test&Page=test&Action=Navigate&P0=1&P1=eq&P2=Markets.Market&P3=1+ ATLANTA
后三行的”Click here”实际指向了:
saw.dll?Dashboard&PortalPath=/shared/test/_portal/test&Page=test&Action=Navigate&P0=1&P1=eq&P2=Markets.Market&P3=1+ BIRMINGHAM
当然,使用Go URL也可以达到类似效果,只是最终指向的不是Dashboard,而是某个特定的Oracle BI视图。
3 使用Go URL传递SQL或筛选器
此部分介绍了如何在Go URL中传递SQL命令以及如何传递筛选器来控制Oracle BI视图结果,包含以下内容: ? (1)、在Go URL中传递SQL命令; ?
(2)、在Go URL中传递筛选器。
3.1 在Go URL中传递SQL命令
在Go URL中传递SQL命令的格式如下:
saw.dll?Go&SQL= 可以与&Style,&Options等参数同时使用。
需要注意的是,SQL语句中的空格必须用”+”替换。
例如:
saw.dll?Go&SQL=select+Region,Dollars+from+SupplierSales 将返回从名为SupplierSales中选出的名为Region.Dollars的列。
3.2 在Go URL中传递筛选器
Go URL中可以包含筛选器对所请求的目标进行筛选。需要注意的是,在URL中涉及的列必须是在视图中本身就含有筛选提示的列。
格式:
&Action=Navigate &P0=n n表示要进行筛选的列的数量,取值范围为1~6。
&P1=op op的值及其含义见下表。.
参数 说明
------------------------------------------------
eq 等于或在
neq 不等于或不在
lt 小于
gt 大于
ge 大于等于
bwith 开始于
ewith 结束于
cany 包含任何(&P3中的值)
call 包含所有(&P3中的值)
like 使用%25代替常规的%通配符
top &p3=1+n,n是要显示的项的数目
bottom &p3=1+n,n是要显示的项的数目
bet 介于(&P3中必须包含两个值)
null 为空(&P3必须为0或省略)
nnull 不为空(&P3必须为0或省略)
&P2=ttt.ccc ttt为表名,ccc为列名,空格必须用%20替换
&P3=n+xxx+yyy+zzz n为值的数目,xxx,yyy,zzz为实际的值
例如:
返回Central和East地区的记录:
Saw.dll?Go&Path=/Shared/Test/ testform&Action=Navigate&P0=1&P1=eq&P2=Customers.Region&P3=2+Central+East 返回地区名以E开头的记录: saw.dll?Go&Path=vate&P0=1&P1=bwith&P2=Customers.Region&P3=1+E
返回地区名为E....t格式的记录:
saw.dll?Go&Path=/Shared/Test/ testform&Action=Navigate&P0=1&P1=like&P2=Customers.Region&P3=1+E%25t
返回销量额前两名地区的记录:
saw.dll?Go&Path=/Shared/Test/ testform&Action=Navigate&P0=1&P1=top&P2="Sales%20Facts".Dollars&P3=1+2
返回销售额介于2,000,000 和 2,500,000之间的记录:
saw.dll?Go&Path=/Shared/Test/ testform&Action=Navigate&P0=1&P1=top&P2="Sales%20Facts".Dollars&P3=2+2000000 +2500000
返回地区名以E开头且销售额超过2,000,000的记录:
saw.dll?Go&Path=/Shared/Test/ testform&Action=Navigate&P0=2&P1=cany&P2=Customers.Region&P3=1+e&P4=gt&P5="Sales%20Facts".Dollars&P6=1+20000000
注意,在Go Dashboard也可以使用类似的格式和参数传递筛选器。
4 使用JavaScript进行筛选
Oracle BI提供了一些JavaSript函数,可以用来实现和使用提示及筛选器类似的效果。
这些函数定义在 OracleBI\oc4j_bi\j2ee\home\applications\analytics\analytics\res\b_mozilla\viewhelper.js中。 ?
4.1 GoNav & GoNavEx
这两个函数用于对某一特定的Oracle BI视图进行控制。
函数原型: GoNav(event, sPath, sTbl, sCol, sVal, sTarget)
其中:
event:事件指示符,一般设置为1
sPath:目标Oracle BI的路径及名称
sCol: 所要进行筛选的表名
sVal: 所要进行筛选的列名
sTarget (可选):设置为”_blank”表示在新窗口中显示结果
例如:
<a href= "javascript:GoNav(1,‘/Shared/Paint Demo/Sales Summaries/Regional Analysis/Market Analysis Detail‘, ‘Markets‘,‘Market‘, ‘BOSTON‘);">Click here to navigate to Transaction Details with ‘‘Some value‘</a>
该链接指向的页面显示名为Market Analysis Detail的视图中,Markets.Market为’BOSTON’的记录。 GoNav函数在其内部调用了GoNavEx。GoNavEx可以视为GoNav的多参数版本,可以同时对同一视图中的多个列(最多4个)进行筛选。
函数原型: GoNavEx(event, sPath,sTarget,sTbl1,sCol1,sVal1,sTbl2,sCol2,sVal2,sTbl3,sCol3,sVal3,sTbl4,sCol4,sVal4) 各参数的含义与GoNav中参数含义的类似。
注意,在GoNavEx中,sTarget必须设置,不能省略。
例如:
<a href= "javascript:GoNavEx(1,‘/Shared/Paint Demo/Sales Summaries/Regional Analysis/Market Analysis Detail‘,‘_blank‘,‘Markets‘,‘Market‘,‘ATLANTA‘,‘Periods‘,‘Year‘,‘2001‘);">Click here to navigate to Transaction with ‘‘Some value‘</a>
该链接指向的页面显示名为Market Analysis Detail的视图中,Markets.Market为’ATLANTA’且Year为’2001’的记录. ?
4.2 PortalNav & PortalPageNav
这两个函数用于对某一特定的Dashboard进行控制。
函数原型: PortalNav(event, sPortal,sTbl,sCol,sVal)
其中:
event:事件指示符,一般设置为1
sPortal:目标Dashboard的路径及名称
sCol: 所要进行筛选的表名
sVal: 所要进行筛选的列名
例如:
<a href="javascript:PortalNav(1, ‘/shared/test/_portal/test‘,‘Periods‘,‘Year‘,‘2001‘);">Click here to navigate to Transaction with ‘‘Some value‘</a>
该链接指向的页面显示名为test的Dashboard中,Year为’2001’的记录。
PortalNav函数在其内部调用了PortalPageNav。PortalPageNav可以视为PortalNav的多参数版本,可以同时对同一Dashboard中的多个列(最多9个)进行筛选。
函数原型: PortalPageNav(event,sPortal,null, sTbl1,sCol1,sVal1,sTbl2,sCol2,sVal2,sTbl3,sCol3,sVal3,……sTbl9,sCol9,sVal9)
各参数的含义与PortalNav中参数含义的类似。
例如:
<a href= "javascript:PortalPageNav(1,‘/shared/test/_portal/test‘,null,‘Markets‘,‘Market‘,‘ATLANTA‘,‘Periods‘,‘Year‘,‘2001‘);">Click here to navigate to Transaction with ‘‘Some value‘</a>
该链接指向的页面显示名为test的Dashboard中,Markets.Market为’ATLANTA’且年份为’2001’的记录。