OBIEE 12c发布后最吸引我的功能之一就是数据挖掘功能的集成,按Oracle Openworld上相关PPT的介绍,12c的版本能够和R集成、能够和Spark集成。
我想这太完美了,我最近正在寻找这方面的交互探索工具,如果现有的工具能够实现,那就太好了。
不过12c装完后,一直没找到怎么用。等sample app发布后,一看原来是用FORECAST等函数做的,这些函数估计调用R的程序生成数据挖掘结果,然后集成这些数据结果呈现。
仔细找了一下Oracle的文档,终于找到了相关内容,还是当初文档看得不仔细啊。
Advance Analytics分成了2部分
a.Advance Analytics Internal Logical SQL Functions
Comparison of BIN and WIDTH_BUCKET Functions
BIN Function
WIDTH_BUCKET Function
TRENDLINE Function
b.Advanced Analytics External Logical SQL Functions
EVALUATE_SCRIPT Function
FORECAST Function
CLUSTER Function
OUTLIER Function
REGR Function
其中Advanced Analytics External Logical SQL Functions是调用外部工具实现,目前看到的是支持R和Oracle的R, 据说Spark也会支持,估计要等数据源支持SparkSQL后了。
这次主要介绍这部分内容:
0.文档参考
安装部分见http://docs.oracle.com/middleware/1221/biee/BIESG/answersconfigset.htm#BIESG9384
使用说明见http://docs.oracle.com/middleware/1221/biee/BIEUG/appsql.htm#BIEUG14790
1.配置外部引用位置
在NQSConfig.INI中增加了新的配置部分说明如何调用外部借口
2.安装R
使用附带的r安装包(3.1.1 R version )安装,不知道和标准版本有什么区别,目前阶段先用了再说。
安装程序在 $ORACLE_HOME/bi/bifoundation/advanced_analytics/r-installer.tar.gz
执行以下命令(注意需要联网), 我的是在centos 6.6上运行的,7版本文档上说需要一些额外工作。
bash-4.1$ tar -xvzf ./r-installer.tar.gz
bash-4.1$ cd RInstaller
bash-4.1$ ./RInstaller.sh
Usage ./RInstaller { install | installpackages | uninstall }
bash-4.1$ sudo ./RInstaller.sh install
bash-4.1$ sudo ./RInstaller.sh installpackages
一些例外情况处理
万一提示proxy造成连不上
a.修改 RInstaller.sh中的
installROLE6(){
# configureProxy OLE6 -- 屏蔽掉
moveExistingRepoFiles
printHashLine "Copying over public-yum-ol6.repo"
cp ./OLE6/public-yum-ol6.repo /etc/yum.repos.d/
execYum
}
然后确认 /etc/yum.conf没有配置proxy. 而且public-yum.oracle.com 比较慢, 需要耐心等待。
b.安装package默认也是用proxy
修改 ./r-package-install.R
删除以下2行就可以了
proxy<-read.table("proxy.txt", header=FALSE, sep="=", stringsAsFactors=FALSE)[,2]
Sys.setenv(http_proxy=proxy)
万一提示RPM-GPG-KEY-oracle-ol6找不到
下载https://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
复制为/etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
然后执行
yum install R-3.1.1*
Error in library(OBIEEAdvancedAnalytics): there is no package called ‘OBIEEAdvancedAnalytics’ (HY000)
执行 ./RInstaller.sh installpackages 注意proxy问题
3.一个在sample lite rpd上的demo
forecast函数说明,注意series需要是时间类型
FORECAST(numeric_expr, ([series]), output_column_name, options, [runtime_binded_options])])
自建一个字段内容如下,就可以了
FORECAST("Sample Sales Lite"."Base Facts"."Revenue",("Sample Sales Lite"."Time"."Calendar Date"),'Forecast','numPeriods=%1;predictionInterval=70;',4)
一个简单的完整示例如下:
SELECT
0 s_0,
"Sample Sales Lite"."Time"."Calendar Date" s_1,
"Sample Sales Lite"."Time"."Per Name Month" s_2,
"Sample Sales Lite"."Time"."Per Name Year" s_3,
"Sample Sales Lite"."Base Facts"."Revenue" s_4,
FORECAST("Sample Sales Lite"."Base Facts"."Revenue",("Sample Sales Lite"."Time"."Calendar Date"),'Forecast','numPeriods=%1;predictionInterval=70;',4) s_5
FROM "Sample Sales Lite"
ORDER BY 4 ASC NULLS LAST, 3 ASC NULLS LAST, 2 ASC NULLS LAST
FETCH FIRST 65001 ROWS ONLY