SlideShare a Scribd company logo
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
Embedded	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Execu)on	
  in	
  the	
  Oracle	
  Database	
  
	
  
	
  using	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .	
  	
  
	
  
Brendan Tierney
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
§  Data	
  Warehousing	
  since	
  1997	
  
§  Data	
  Mining	
  since	
  1998	
  
§  Analy)cs	
  since	
  1993	
  
11th	
  May	
  18:00-­‐20:00	
  
Bank	
  of	
  Ireland,	
  	
  
Grand	
  Canal	
  Dock	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
Oracle	
  R	
  Technologies	
  
R	
  Distribu)on	
   Oracle's	
  supported	
  redistribu)on	
  of	
  open	
  source	
  R,	
  provided	
  as	
  a	
  free	
  
download	
  from	
  Oracle,	
  enhanced	
  with	
  dynamic	
  loading	
  of	
  high	
  
performance	
  linear	
  algebra	
  libraries. 	
  	
  
Oracle	
  R	
  Enterprise	
   Integra)on	
  of	
  R	
  with	
  Oracle	
  Database.	
  A	
  component	
  of	
  the	
  Oracle	
  
Advanced	
  Analy)cs	
  Op)on.	
  Oracle	
  R	
  Enterprise	
  makes	
  the	
  open	
  source	
  R	
  
sta)s)cal	
  programming	
  language	
  and	
  environment	
  ready	
  for	
  the	
  
enterprise	
  with	
  scalability,	
  performance,	
  and	
  ease	
  of	
  produc)on	
  
deployment.	
  
Oracle	
  R	
  Advanced	
  Analy)cs	
  for	
  
Hadoop	
  
High	
  performance	
  na)ve	
  access	
  to	
  the	
  Hadoop	
  Distributed	
  File	
  System	
  
(HDFS)	
  and	
  MapReduce	
  programming	
  framework	
  for	
  R	
  users.	
  Oracle	
  R	
  
Advanced	
  Analy)cs	
  for	
  Hadoop	
  is	
  a	
  component	
  of	
  Oracle	
  Big	
  Data	
  
Connectors	
  soXware	
  suite. 	
  	
  
ROracle	
   An	
  open	
  source	
  R	
  package,	
  maintained	
  by	
  Oracle	
  and	
  enhanced	
  to	
  use	
  the	
  
Oracle	
  Call	
  Interface	
  (OCI)	
  libraries	
  to	
  handle	
  database	
  connec)ons	
  -­‐	
  
providing	
  a	
  high-­‐performance,	
  na)ve	
  C-­‐language	
  interface	
  to	
  Oracle	
  
Database.	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
But	
  !	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
But	
  !	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
But	
  !	
  
Our	
  data	
  no	
  longer	
  fits	
  on	
  our	
  laptop.	
  
	
  
a	
  Big	
  Data	
  issue?	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
R	
  -­‐	
  The	
  Challenges	
  	
  
§  Scalability	
  
§  Regardless	
  of	
  the	
  number	
  of	
  cores	
  on	
  your	
  CPU,	
  R	
  will	
  only	
  use	
  1	
  on	
  a	
  default	
  
build	
  
§  Performance	
  
§  R	
  reads	
  data	
  into	
  memory	
  by	
  default.	
  Easy	
  to	
  exhaust	
  RAM	
  by	
  storing	
  unnecessary	
  
data.	
  Typically	
  R	
  will	
  throw	
  an	
  excep)on	
  at	
  2GB.	
  
§  Paralleliza)on	
  can	
  be	
  challenge.	
  Is	
  not	
  Default.	
  Packages	
  available	
  
§  Produc)on	
  Deployment	
  
§  Difficul)es	
  deploying	
  R	
  in	
  produc)on	
  
§  Typically	
  need	
  to	
  re-­‐code	
  in	
  …..	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
What	
  has	
  Oracle	
  done?	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
> AggData <- aggregate(CUSTOMER_V$CUST_ID,
by = list(CUST_GENDER = CUSTOMER_V$CUST_GENDER),

FUN = length) 

> # Display the results 

> AggData 

CUST_GENDER x 

F F 18325 

M M 37175
select	
  cust_gender,	
  count(*)	
  X	
  
from	
  	
  	
  customer_v	
  
group	
  by	
  cust_gender;	
  	
  
CUST_GENDER X
----------- ----------
F 18325
M 37175
Oracle	
  R	
  Enterprise	
  
Transparency	
  Layer	
  
1
2
3
4
5
6
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
What	
  has	
  Oracle	
  done?	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
 ore.scriptDrop(CustomerAge3)
 ore.scriptCreate(CustomerAge3, function (dat) {
aggdata - aggregate(dat$AFFINITY_CARD,
by = list(Age = dat$AGE),
FUN = length) } )
 ageProfile - ore.tableApply(MINING_DATA_BUILD_V,
FUN.NAME=CustomerAge3,
FUN.VALUE=data.frame(Age=1, x=1) )
 ageProfile
AGE AGE_NUM
1 17 18
2 18 21
3 19 32
4 20 32
5 21 26
6 22 42
…
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
SELECT *
FROM table(rqTableEval(cursor(select * from MINING_DATA_BUILD_V),
NULL,
'select 1 AGE, 1 AGE_NUM from dual',
’CustomerAge3') );
AGE AGE_NUM
---------- ----------
17 18
18 21
19 32
20 32
21 26
22 42
23 41
…
 ore.scriptDrop(CustomerAge3)
 ore.scriptCreate(CustomerAge3, function (dat) {
aggdata - aggregate(dat$AFFINITY_CARD,
by = list(Age = dat$AGE),
FUN = length) } )
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
Embedded	
  R	
  Execu)on	
  using	
  SQL	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
rqEval	
  	
  -­‐	
  General	
  Purpose	
  func)on	
  
rqEval ( PAR_CUR REF CURSOR IN
OUT_QRY VARCHAR2 IN
EXP_NAM VARCHAR2 IN)
Can	
  be	
  a	
  data	
  set	
  (contain	
  one	
  row)	
  or	
  some	
  parameters	
  
You	
  need	
  to	
  define	
  the	
  format	
  of	
  the	
  returned	
  data,	
  rows	
  or	
  images	
  
This	
  is	
  the	
  actual	
  R	
  code	
  or	
  Script	
  	
  
BEGIN
--sys.rqScriptDrop('HelloBrendan');
sys.rqScriptCreate('HelloBrendan',
'function() {
res-data.frame(paste(Hello Brendan, the time is, format(Sys.time(),%X)))
res }
');
END;
-- Call the HelloBrendan ORE script
SELECT *
FROM table(rqEval(NULL,
'select cast(''a'' as varchar2(35)) Ans from dual',
'HelloBrendan') );
Ans
-----------------------------------
Hello Brendan the time is 15:19:32
The	
  last	
  R	
  statement	
  
defines	
  what	
  is	
  returned	
  
Defining	
  the	
  format	
  of	
  the	
  
output	
  :	
  Can	
  be	
  challenging	
  
at	
  first	
  
If	
  image	
  then	
  replace	
  
SELECT	
  with	
  ‘PNG’	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
rqTableEval	
  	
  -­‐	
  main	
  func)on	
  for	
  processing	
  data	
  set	
  
rqTableEval ( INP_CUR REF CURSOR IN
PAR_CUR REF CURSOR IN
OUT_QRY VARCHAR2 IN
EXP_NAM VARCHAR2 IN)
Cursor	
  defined	
  by	
  a	
  SELECT	
  statement	
  
Any	
  parameters	
  required	
  by	
  the	
  ORE	
  Script,	
  in	
  addi)on	
  to	
  the	
  data	
  
BEGIN
--sys.rqScriptDrop('AgeProfile1');
sys.rqScriptCreate('AgeProfile1',
'function(dat) {
aggdata - aggregate(dat$AFFINITY_CARD, by = list(Age =
dat$AGE), FUN = length) }
');
END;
SELECT *
FROM table(rqTableEval(cursor(select * from MINING_DATA_BUILD_V),
NULL,
'select 1 AGE, 1 AGE_NUM from dual',
'AgeProfile1') );
AGE AGE_NUM
---------- ----------
17 18
18 21
19 32
20 32
21 26
22 42
23 41
…
BEGIN
sys.rqScriptDrop('AgeProfile1');
sys.rqScriptCreate('AgeProfile1',
'function(dat) {
aggdata - aggregate(dat$AFFINITY_CARD, by = list(Age =
dat$AGE), FUN = length)
res - plot(aggdata$Age, aggdata$x, type = l) }
');
END;
SELECT *
FROM table(rqTableEval(cursor(select * from MINING_DATA_BUILD_V),
NULL,
PNG,
'AgeProfile1') );
NAME---------------------------------------------------------------
----------------- ID----------
IMAGE--------------------------------------------------------------
------------------
189504E470D0A1A0A0000000D49484452000001E0000001E008060000007DD4BE95
0000200049444154789CEDDD797494F5BD3FF0F79305421632210B181609C90448D
15A542C138522B46CB5B66CAD5A
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
rqTableEval	
  	
  -­‐	
  main	
  func)on	
  for	
  processing	
  data	
  set	
  
--Phase 1: Creating the Data Mining model
-- Create a Linear Regression model and store in an ORE data
store
BEGIN
--sys.rqScriptDrop('DEMO_LM');
sys.rqScriptCreate('DEMO_LM',
'function(dat, ds_name) {
mod - lm(alcohol ~., data=dat)
ore.save(mod, name=ds_name, overwrite=TRUE)
} ');
END;
-- Now you need to run the DEMO_LM ORE script to create the
model
select *
from table(rqTableEval(cursor(select * from white_wine),
cursor(select 1 as ore.connect, 'DEMO_LM_DS' as ds_name
from dual),
'XML',
'DEMO_LM') );
-- Phase 2: Applying the Data Mining model
-- Create the script that applies the stored model to new data
-- Return the actual value and the predicted value
BEGIN
--sys.rqScriptDrop('DEMO_LM_APPLY');
sys.rqScriptCreate('DEMO_LM_APPLY’,
'function(dat, ds_name) {
ore.load(ds_name)
pre - predict(mod, newdata=dat,
supplemental.cols=alcohol”)
res - cbind(dat, PRED=pre)
res - res[,c(alcohol, PRED)]
} ');
END;
-- Run the apply script on the new data
select *
from table(rqTableEval(cursor(select * from white_wine),
cursor(select 1 as ore.connect, 'DEMO_LM_DS' as ds_name
from dual),
'select 1 as alcohol, 1 as PRED from dual’,
'DEMO_LM_APPLY') );
alcohol PRED
---------- ----------
10 9.58434071
10.6 8.83113972
10.7 10.378701
10 9.58434071
12.5 12.146045
10.6 8.83113972
12.8 12.668966
…
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
Embedded	
  R	
  Execu)on	
  using	
  SQL	
  
These	
  func)ons	
  
allow	
  Parallel	
  
Execu)on	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
Database	
  Server	
  
Machine	
  
Oracle	
  Database	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
Tables	
  
In-­‐Database	
  
SQL	
  Func)ons	
  
R	
  Language	
  Installa)on	
  
ORE	
  Installed	
  Packages	
  
R	
  
Scripts	
  
Oracle	
  SQL	
  Client	
  Interfaces	
  
SQL	
  Developer	
  
SQLcl	
  
SQL*Plus	
  
etc	
  
ORE	
  Installed	
  Packages	
  
ORE	
  Transparency	
  Layer	
  
R	
  Client	
  Installa)on	
  
R	
  processes	
  are	
  spawned.	
  	
  
One	
  for	
  each	
  Parallel	
  division	
  
Memory	
  Management	
  
becomes	
  an	
  issue	
  !	
  
	
  
You	
  don’t	
  want	
  to	
  run	
  
out	
  of	
  memory	
  !	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
§  Vcells	
  are	
  memory	
  allocated	
  for	
  vectors	
  and	
  arrays	
  
§  Ncells	
  are	
  memory	
  allocated	
  for	
  objects	
  such	
  as	
  lists	
  
 sys.rqconfigset('MIN_VSIZE', '10M') -- min heap 10MB, default 32MB
 sys.rqconfigset('MAX_VSIZE', '100M') -- max heap 100MB, default 4GB
 sys.rqconfigset('MIN_NSIZE', '500K') -- min number cons cells 500x1024, default 1M
 sys.rqconfigset('MAX_NSIZE', '2M') -- max number cons cells 2M, default 20M
§  Some	
  guidelines	
  	
  
–  Set	
  parallel_degree_policy	
  to	
  MANUAL	
  
–  Set	
  parallel_min_servers	
  to	
  the	
  number	
  of	
  parallel	
  slave	
  processes	
  to	
  be	
  started	
  when	
  the	
  
database	
  instances	
  start,	
  
•  This	
  avoids	
  start	
  up	
  )me	
  for	
  the	
  R	
  processes.	
  	
  This	
  is	
  not	
  a	
  problem	
  for	
  long	
  running	
  
processes.	
  But	
  can	
  save	
  )me	
  with	
  processes	
  running	
  for	
  10s	
  seconds	
  
–  To	
  avoid	
  overloading	
  the	
  CPUs	
  if	
  the	
  parallel_max_servers	
  limit	
  is	
  reached,	
  set	
  the	
  hidden	
  
parameter	
  _parallel_statement_queuing	
  to	
  TRUE.	
  	
  Avoids	
  overloading	
  and	
  lets	
  processes	
  wait.	
  
–  set	
  applica)on	
  tables	
  and	
  their	
  indexes	
  to	
  DOP	
  1	
  to	
  reinforce	
  the	
  ability	
  of	
  ORE	
  to	
  determine	
  
when	
  to	
  use	
  parallelism	
  
Use	
  garbage	
  collec)on	
  
informa)on	
  in	
  R	
  using	
  gc()	
  
to	
  determine	
  memory	
  usage	
  
for	
  a	
  process.	
  
	
  
Get	
  before	
  and	
  aXer	
  
memory	
  usage	
  values.	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
rqGroupEval	
  	
  -­‐	
  Doesn’t	
  really	
  exist	
  !!!	
  
§  A	
  concept	
  and	
  Framework	
  for	
  defining	
  it	
  !	
  
BEGIN
--sys.rqScriptDrop('DEMO_GROUP_EVAL');
sys.rqScriptCreate('DEMO_GROUP_EVAL’,
'function(dat) {
dat$AVG_SUGAR - mean(dat$residual.sugar)
res - dat[,c(alcohol, residual.sugar, AVG_SUGAR)]
} ');
END;
CREATE OR REPLACE PACKAGE WhiteWinePkg AS
TYPE cur IS REF CURSOR RETURN WHITE_WINE%ROWTYPE;
END WhiteWinePkg;
CREATE OR REPLACE FUNCTION My_GroupEval(
inp_cur WhiteWinePkg.cur,
par_cur SYS_REFCURSOR,
out_qry VARCHAR2,
grp_col VARCHAR2,
exp_txt CLOB)
RETURN SYS.AnyDataSet
PIPELINED PARALLEL_ENABLE (PARTITION inp_cur BY HASH (alcohol))
CLUSTER inp_cur BY (alcohol”)
USING rqGroupEvalImpl;
SELECT *
FROM table(MY_GroupEval(cursor(SELECT * FROM WHITE_WINE),
NULL,
'select 1 as alcohol, 1 as residual_sugar, 1 as Avg_Sugar
from dual’,
'alcohol',
'DEMO_GROUP_EVAL'));
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
From	
  the	
  DB	
  server	
  
rqRowEval	
  
Carefully	
  consider	
  the	
  ‘number	
  of	
  rows’	
  
selected	
  as	
  that	
  determines	
  the	
  degree	
  of	
  
parallelism.	
  
	
  
Be	
  mindful	
  of	
  server	
  resources	
  in	
  calcula)ng	
  
the	
  degree	
  and	
  then	
  the	
  ‘number	
  or	
  rows’	
  	
  
SELECT *
FROM table(rqRowEval(cursor(select * from white_wine),
cursor(select 1 as ore.connect, 'DEMO_LM_DS' as ds_name from dual),
'select 1 as alcohol, 1 as PRED from dual',
500,
'DEMO_LM_APPLY') );
500	
  
records	
  
500	
  
records	
  
500	
  
records	
  
Results	
  
Results	
  
Results	
  
Integrate	
  
Results	
  
Back	
  into	
  the	
  DB	
  server	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
Integra9ng	
  ORE	
  with	
  other	
  products	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
Integra)ng	
  with	
  OBIEE,	
  BI	
  Publisher	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Any	
  other	
  Language	
  or	
  Tool	
  
Database	
  Server	
  
Machine	
  
Oracle	
  Database	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
-­‐-­‐-­‐-­‐-­‐	
  
Tables	
  
In-­‐Database	
  
SQL	
  Func)ons	
  
R	
  Language	
  Installa)on	
  
ORE	
  Installed	
  Packages	
  
R	
  
Scripts	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
--
-- Create an embedded R script
-- Called using the ORE SQL API
-- - performs an aggregration of the data
-- - creates a Graphic Plot
--
begin
sys.rqScriptDrop('AgeProfile');
sys.rqScriptCreate('AgeProfile',
'function(dat) {
mdbv - dat
aggdata - aggregate(mdbv$AFFINITY_CARD,
by = list(Age = mdbv$AGE),
FUN = length)
res - plot(aggdata$Age, aggdata$x, type = l) } ');
end;
/
--
-- Execute the embedded R Script
-- - Graphic created in PNG format for import into OBIEE
-- - change PNG to XML for BI Publisher
--
select * from table(rqTableEval( cursor(select * from MINING_DATA_BUILD_V),
cursor(select 1 ore.connect from dual),
'PNG','AgeProfile'));
ORE	
  Demo	
  
ORE	
  Demo	
  Data	
  Chart	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
§  Check	
  for	
  OBIEE	
  examples	
  in	
  Book	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
R	
  Text	
  Mining	
  using	
  SQL	
  
 ore.scriptCreate(prepare_tm_data_2, function (local_data) {
library(tm)
library(SnowballC)
library(wordcloud)
tm_data -
for(i in 1:nrow(local_data)) {
tm_data - paste(tm_data, local_data[i,]$DOC_TEXT, sep= )
}
txt_corpus - Corpus (VectorSource (tm_data))
# data clean up
tm_map - tm_map (txt_corpus, stripWhitespace) # remove white space
tm_map - tm_map (tm_map, removePunctuation) # remove punctuations
tm_map - tm_map (tm_map, removeNumbers) # to remove numbers
tm_map - tm_map (tm_map, removeWords, stopwords(english)) # to remove stop words
tm_map - tm_map (tm_map, removeWords, c(work, use, java, new, support))
# prepare matrix of words and frequency counts
Matrix - TermDocumentMatrix(tm_map) # terms in rows
matrix_c - as.matrix (Matrix)
freq - sort (rowSums (matrix_c)) # frequency data
res - data.frame(words=names(freq), freq)
wordcloud (res$words, res$freq, max.words=100, min.freq=3, scale=c(7,.5),
random.order=FALSE, colors=brewer.pal(8, Dark2))
} )
select *
from table(rqTableEval( cursor(select * from MY_DOCUMENTS),
null,
'PNG',
'prepare_tm_data_2'));
hrp://www.oraly)cs.com/2016/08/oracle-­‐text-­‐oracle-­‐r-­‐enterprise-­‐and_17.html	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
hrp://www.oraly)cs.com/2016/09/how-­‐to-­‐display-­‐blob-­‐image-­‐in-­‐apex-­‐report.html	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
hrp://www.oraly)cs.com/2016/07/crea)ng-­‐ggplot2-­‐graphics-­‐using-­‐sql.html	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
 install.packages(googleVis)
There	
  are	
  a	
  few	
  restric)ons	
  with	
  using	
  these	
  in	
  your	
  applica)on.	
  
Some	
  charts	
  open	
  in	
  web	
  browser	
  and	
  some	
  require	
  flash.	
  
hrp://www.oraly)cs.com/2016/06/googlevis-­‐r-­‐package-­‐for-­‐crea)ng-­‐google.html	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
	
  	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  brendan.)erney@oraly)cs.com	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  @brendan)erney	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  www.oraly)cs.com	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ie.linkedin.com/in/brendan)erney	
  
 	
  	
  www.oraly)cs.com 	
  t	
  :	
  @brendan)erney 	
  e	
  :	
  brendan.)erney@oraly)cs.com	
   	
   	
   	
  	
  
Word	
  Cloud	
  of	
  the	
  Oracle	
  Advanced	
  
Analy)cs	
  web-­‐pages	
  
	
  
hrp://www.oraly)cs.com/2015/01/crea)ng-­‐word-­‐cloud-­‐of-­‐oracle-­‐oaa.html	
  

More Related Content

What's hot

Data Exploration with Apache Drill: Day 1
Data Exploration with Apache Drill:  Day 1Data Exploration with Apache Drill:  Day 1
Data Exploration with Apache Drill: Day 1
Charles Givre
 
R data-import, data-export
R data-import, data-exportR data-import, data-export
R data-import, data-export
FAO
 
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016
Sasi, cassandra on the full text search ride At  Voxxed Day Belgrade 2016Sasi, cassandra on the full text search ride At  Voxxed Day Belgrade 2016
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016
Duyhai Doan
 
Apache Drill Workshop
Apache Drill WorkshopApache Drill Workshop
Apache Drill Workshop
Charles Givre
 
(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...
(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...
(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...
Amazon Web Services
 
Big Data - Load CSV File & Query the EZ way - HPCC Systems
Big Data - Load CSV File & Query the EZ way - HPCC SystemsBig Data - Load CSV File & Query the EZ way - HPCC Systems
Big Data - Load CSV File & Query the EZ way - HPCC Systems
Fujio Turner
 
Cassandra introduction apache con 2014 budapest
Cassandra introduction apache con 2014 budapestCassandra introduction apache con 2014 budapest
Cassandra introduction apache con 2014 budapest
Duyhai Doan
 
Data Exploration with Apache Drill: Day 2
Data Exploration with Apache Drill: Day 2Data Exploration with Apache Drill: Day 2
Data Exploration with Apache Drill: Day 2
Charles Givre
 
R the unsung hero of Big Data
R the unsung hero of Big DataR the unsung hero of Big Data
R the unsung hero of Big Data
Dhafer Malouche
 
Foreign Data Wrapper Enhancements
Foreign Data Wrapper EnhancementsForeign Data Wrapper Enhancements
Foreign Data Wrapper Enhancements
Shigeru Hanada
 
Introduction to Apache Drill - NYC Apache Drill Meetup
Introduction to Apache Drill - NYC Apache Drill MeetupIntroduction to Apache Drill - NYC Apache Drill Meetup
Introduction to Apache Drill - NYC Apache Drill Meetup
Vince Gonzalez
 
Adventures on live partitioning
Adventures on live partitioningAdventures on live partitioning
Adventures on live partitioning
Matteo Melli
 
Percona toolkit
Percona toolkitPercona toolkit
Cassandra data structures and algorithms
Cassandra data structures and algorithmsCassandra data structures and algorithms
Cassandra data structures and algorithms
Duyhai Doan
 
Capstone HEDIS Database Documentation
Capstone HEDIS Database DocumentationCapstone HEDIS Database Documentation
Capstone HEDIS Database Documentation
Stephen Cain Jr.
 
Spark Cassandra 2016
Spark Cassandra 2016Spark Cassandra 2016
Spark Cassandra 2016
Duyhai Doan
 
21st Athens Big Data Meetup - 2nd Talk - Dive into ClickHouse storage system
21st Athens Big Data Meetup - 2nd Talk - Dive into ClickHouse storage system21st Athens Big Data Meetup - 2nd Talk - Dive into ClickHouse storage system
21st Athens Big Data Meetup - 2nd Talk - Dive into ClickHouse storage system
Athens Big Data
 
Efficient Data Storage for Analytics with Apache Parquet 2.0
Efficient Data Storage for Analytics with Apache Parquet 2.0Efficient Data Storage for Analytics with Apache Parquet 2.0
Efficient Data Storage for Analytics with Apache Parquet 2.0
Cloudera, Inc.
 
Cassandra introduction 2016
Cassandra introduction 2016Cassandra introduction 2016
Cassandra introduction 2016
Duyhai Doan
 
Weaving a Semantic Web across OSS repositories - a spotlight on bts-link, UDD...
Weaving a Semantic Web across OSS repositories - a spotlight on bts-link, UDD...Weaving a Semantic Web across OSS repositories - a spotlight on bts-link, UDD...
Weaving a Semantic Web across OSS repositories - a spotlight on bts-link, UDD...
olberger
 

What's hot (20)

Data Exploration with Apache Drill: Day 1
Data Exploration with Apache Drill:  Day 1Data Exploration with Apache Drill:  Day 1
Data Exploration with Apache Drill: Day 1
 
R data-import, data-export
R data-import, data-exportR data-import, data-export
R data-import, data-export
 
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016
Sasi, cassandra on the full text search ride At  Voxxed Day Belgrade 2016Sasi, cassandra on the full text search ride At  Voxxed Day Belgrade 2016
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016
 
Apache Drill Workshop
Apache Drill WorkshopApache Drill Workshop
Apache Drill Workshop
 
(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...
(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...
(SDD407) Amazon DynamoDB: Data Modeling and Scaling Best Practices | AWS re:I...
 
Big Data - Load CSV File & Query the EZ way - HPCC Systems
Big Data - Load CSV File & Query the EZ way - HPCC SystemsBig Data - Load CSV File & Query the EZ way - HPCC Systems
Big Data - Load CSV File & Query the EZ way - HPCC Systems
 
Cassandra introduction apache con 2014 budapest
Cassandra introduction apache con 2014 budapestCassandra introduction apache con 2014 budapest
Cassandra introduction apache con 2014 budapest
 
Data Exploration with Apache Drill: Day 2
Data Exploration with Apache Drill: Day 2Data Exploration with Apache Drill: Day 2
Data Exploration with Apache Drill: Day 2
 
R the unsung hero of Big Data
R the unsung hero of Big DataR the unsung hero of Big Data
R the unsung hero of Big Data
 
Foreign Data Wrapper Enhancements
Foreign Data Wrapper EnhancementsForeign Data Wrapper Enhancements
Foreign Data Wrapper Enhancements
 
Introduction to Apache Drill - NYC Apache Drill Meetup
Introduction to Apache Drill - NYC Apache Drill MeetupIntroduction to Apache Drill - NYC Apache Drill Meetup
Introduction to Apache Drill - NYC Apache Drill Meetup
 
Adventures on live partitioning
Adventures on live partitioningAdventures on live partitioning
Adventures on live partitioning
 
Percona toolkit
Percona toolkitPercona toolkit
Percona toolkit
 
Cassandra data structures and algorithms
Cassandra data structures and algorithmsCassandra data structures and algorithms
Cassandra data structures and algorithms
 
Capstone HEDIS Database Documentation
Capstone HEDIS Database DocumentationCapstone HEDIS Database Documentation
Capstone HEDIS Database Documentation
 
Spark Cassandra 2016
Spark Cassandra 2016Spark Cassandra 2016
Spark Cassandra 2016
 
21st Athens Big Data Meetup - 2nd Talk - Dive into ClickHouse storage system
21st Athens Big Data Meetup - 2nd Talk - Dive into ClickHouse storage system21st Athens Big Data Meetup - 2nd Talk - Dive into ClickHouse storage system
21st Athens Big Data Meetup - 2nd Talk - Dive into ClickHouse storage system
 
Efficient Data Storage for Analytics with Apache Parquet 2.0
Efficient Data Storage for Analytics with Apache Parquet 2.0Efficient Data Storage for Analytics with Apache Parquet 2.0
Efficient Data Storage for Analytics with Apache Parquet 2.0
 
Cassandra introduction 2016
Cassandra introduction 2016Cassandra introduction 2016
Cassandra introduction 2016
 
Weaving a Semantic Web across OSS repositories - a spotlight on bts-link, UDD...
Weaving a Semantic Web across OSS repositories - a spotlight on bts-link, UDD...Weaving a Semantic Web across OSS repositories - a spotlight on bts-link, UDD...
Weaving a Semantic Web across OSS repositories - a spotlight on bts-link, UDD...
 

Viewers also liked

OUG Ireland Meet-up - Updates from Oracle Open World 2016
OUG Ireland Meet-up - Updates from Oracle Open World 2016OUG Ireland Meet-up - Updates from Oracle Open World 2016
OUG Ireland Meet-up - Updates from Oracle Open World 2016
Brendan Tierney
 
OUG Ireland Meet-up 12th January
OUG Ireland Meet-up 12th JanuaryOUG Ireland Meet-up 12th January
OUG Ireland Meet-up 12th January
Brendan Tierney
 
SQL: The one language to rule all your data
SQL: The one language to rule all your dataSQL: The one language to rule all your data
SQL: The one language to rule all your data
Brendan Tierney
 
Predictive analytics: Mining gold and creating valuable product
Predictive analytics: Mining gold and creating valuable productPredictive analytics: Mining gold and creating valuable product
Predictive analytics: Mining gold and creating valuable product
Brendan Tierney
 
Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...
Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...
Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...
Phil Wilkins
 
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
WooSangHwang
 
몰디브 허니문 안내 & 제안서
몰디브 허니문 안내 & 제안서 몰디브 허니문 안내 & 제안서
몰디브 허니문 안내 & 제안서
Mal-Yong Yoon
 
Moving to the APEX Listener
Moving to the APEX ListenerMoving to the APEX Listener
Moving to the APEX Listener
Dimitri Gielis
 
En rhel-deploy-oracle-rac-database-12c-rhel-7
En rhel-deploy-oracle-rac-database-12c-rhel-7En rhel-deploy-oracle-rac-database-12c-rhel-7
En rhel-deploy-oracle-rac-database-12c-rhel-7
Rotua Damanik
 
130423 nano
130423 nano130423 nano
130423 nano
gilforum
 
APEX Wearables
APEX WearablesAPEX Wearables
APEX Wearables
Dimitri Gielis
 
How to make APEX print through Node.js
How to make APEX print through Node.jsHow to make APEX print through Node.js
How to make APEX print through Node.js
Dimitri Gielis
 
Hics ir 11.1.0_slideshare_150920
Hics ir 11.1.0_slideshare_150920Hics ir 11.1.0_slideshare_150920
Hics ir 11.1.0_slideshare_150920
SeonOh Lee
 
Carbon Nano Tube
Carbon Nano TubeCarbon Nano Tube
Carbon Nano Tube
Jahee Lee
 
Curs 1.2. Legal Open Data (28/03)
Curs 1.2. Legal Open Data (28/03)Curs 1.2. Legal Open Data (28/03)
Curs 1.2. Legal Open Data (28/03)
Iniciativa Barcelona Open Data
 
라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남Jae Sang Lee
 
REST Enabling Your Oracle Database
REST Enabling Your Oracle DatabaseREST Enabling Your Oracle Database
REST Enabling Your Oracle Database
Jeff Smith
 
Oracle Application Express (APEX) and Microsoft Sharepoint integration
Oracle Application Express (APEX) and Microsoft Sharepoint integrationOracle Application Express (APEX) and Microsoft Sharepoint integration
Oracle Application Express (APEX) and Microsoft Sharepoint integration
Dimitri Gielis
 
Machine Learning Real Life Applications By Examples - Mario Cartia
Machine Learning Real Life Applications By Examples - Mario CartiaMachine Learning Real Life Applications By Examples - Mario Cartia
Machine Learning Real Life Applications By Examples - Mario Cartia
Data Driven Innovation
 
Introduction to Map-Reduce
Introduction to Map-ReduceIntroduction to Map-Reduce
Introduction to Map-Reduce
Brendan Tierney
 

Viewers also liked (20)

OUG Ireland Meet-up - Updates from Oracle Open World 2016
OUG Ireland Meet-up - Updates from Oracle Open World 2016OUG Ireland Meet-up - Updates from Oracle Open World 2016
OUG Ireland Meet-up - Updates from Oracle Open World 2016
 
OUG Ireland Meet-up 12th January
OUG Ireland Meet-up 12th JanuaryOUG Ireland Meet-up 12th January
OUG Ireland Meet-up 12th January
 
SQL: The one language to rule all your data
SQL: The one language to rule all your dataSQL: The one language to rule all your data
SQL: The one language to rule all your data
 
Predictive analytics: Mining gold and creating valuable product
Predictive analytics: Mining gold and creating valuable productPredictive analytics: Mining gold and creating valuable product
Predictive analytics: Mining gold and creating valuable product
 
Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...
Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...
Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...
 
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
제3회 오픈 로보틱스 세미나 1일차 1세션 안드로이드 App 통신
 
몰디브 허니문 안내 & 제안서
몰디브 허니문 안내 & 제안서 몰디브 허니문 안내 & 제안서
몰디브 허니문 안내 & 제안서
 
Moving to the APEX Listener
Moving to the APEX ListenerMoving to the APEX Listener
Moving to the APEX Listener
 
En rhel-deploy-oracle-rac-database-12c-rhel-7
En rhel-deploy-oracle-rac-database-12c-rhel-7En rhel-deploy-oracle-rac-database-12c-rhel-7
En rhel-deploy-oracle-rac-database-12c-rhel-7
 
130423 nano
130423 nano130423 nano
130423 nano
 
APEX Wearables
APEX WearablesAPEX Wearables
APEX Wearables
 
How to make APEX print through Node.js
How to make APEX print through Node.jsHow to make APEX print through Node.js
How to make APEX print through Node.js
 
Hics ir 11.1.0_slideshare_150920
Hics ir 11.1.0_slideshare_150920Hics ir 11.1.0_slideshare_150920
Hics ir 11.1.0_slideshare_150920
 
Carbon Nano Tube
Carbon Nano TubeCarbon Nano Tube
Carbon Nano Tube
 
Curs 1.2. Legal Open Data (28/03)
Curs 1.2. Legal Open Data (28/03)Curs 1.2. Legal Open Data (28/03)
Curs 1.2. Legal Open Data (28/03)
 
라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남
 
REST Enabling Your Oracle Database
REST Enabling Your Oracle DatabaseREST Enabling Your Oracle Database
REST Enabling Your Oracle Database
 
Oracle Application Express (APEX) and Microsoft Sharepoint integration
Oracle Application Express (APEX) and Microsoft Sharepoint integrationOracle Application Express (APEX) and Microsoft Sharepoint integration
Oracle Application Express (APEX) and Microsoft Sharepoint integration
 
Machine Learning Real Life Applications By Examples - Mario Cartia
Machine Learning Real Life Applications By Examples - Mario CartiaMachine Learning Real Life Applications By Examples - Mario Cartia
Machine Learning Real Life Applications By Examples - Mario Cartia
 
Introduction to Map-Reduce
Introduction to Map-ReduceIntroduction to Map-Reduce
Introduction to Map-Reduce
 

Similar to Embedded R Execution using SQL

Pumps, Compressors and Turbine Fault Frequency Analysis
Pumps, Compressors and Turbine Fault Frequency AnalysisPumps, Compressors and Turbine Fault Frequency Analysis
Pumps, Compressors and Turbine Fault Frequency Analysis
University of Illinois,Chicago
 
Pumps, Compressors and Turbine Fault Frequency Analysis
Pumps, Compressors and Turbine Fault Frequency AnalysisPumps, Compressors and Turbine Fault Frequency Analysis
Pumps, Compressors and Turbine Fault Frequency Analysis
University of Illinois,Chicago
 
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Databricks
 
Predictive Analytics with Airflow and PySpark
Predictive Analytics with Airflow and PySparkPredictive Analytics with Airflow and PySpark
Predictive Analytics with Airflow and PySpark
Russell Jurney
 
ROracle
ROracle ROracle
ROracle
Mohamed Magdy
 
RDataMining slides-r-programming
RDataMining slides-r-programmingRDataMining slides-r-programming
RDataMining slides-r-programming
Yanchang Zhao
 
String Comparison Surprises: Did Postgres lose my data?
String Comparison Surprises: Did Postgres lose my data?String Comparison Surprises: Did Postgres lose my data?
String Comparison Surprises: Did Postgres lose my data?
Jeremy Schneider
 
Jump Start into Apache® Spark™ and Databricks
Jump Start into Apache® Spark™ and DatabricksJump Start into Apache® Spark™ and Databricks
Jump Start into Apache® Spark™ and Databricks
Databricks
 
Tutorial On Database Management System
Tutorial On Database Management SystemTutorial On Database Management System
Tutorial On Database Management System
psathishcs
 
Gur1009
Gur1009Gur1009
Gur1009
Cdiscount
 
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeBeyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the code
Wim Godden
 
ComputeFest 2012: Intro To R for Physical Sciences
ComputeFest 2012: Intro To R for Physical SciencesComputeFest 2012: Intro To R for Physical Sciences
ComputeFest 2012: Intro To R for Physical Sciences
alexstorer
 
AWS July Webinar Series: Amazon Redshift Optimizing Performance
AWS July Webinar Series: Amazon Redshift Optimizing PerformanceAWS July Webinar Series: Amazon Redshift Optimizing Performance
AWS July Webinar Series: Amazon Redshift Optimizing Performance
Amazon Web Services
 
Cpp tutorial
Cpp tutorialCpp tutorial
Cpp tutorial
Vikas Sharma
 
Get up to Speed (Quick Guide to data.table in R and Pentaho PDI)
Get up to Speed (Quick Guide to data.table in R and Pentaho PDI)Get up to Speed (Quick Guide to data.table in R and Pentaho PDI)
Get up to Speed (Quick Guide to data.table in R and Pentaho PDI)
Serban Tanasa
 
18(ish) Things You'll Love About Oracle Database 18c
18(ish) Things You'll Love About Oracle Database 18c18(ish) Things You'll Love About Oracle Database 18c
18(ish) Things You'll Love About Oracle Database 18c
Chris Saxon
 
What’s New in Oracle Database 12c for PHP
What’s New in Oracle Database 12c for PHPWhat’s New in Oracle Database 12c for PHP
What’s New in Oracle Database 12c for PHP
Christopher Jones
 
STAT-522 (Data Analysis Using R) by SOUMIQUE AHAMED.pdf
STAT-522 (Data Analysis Using R) by SOUMIQUE AHAMED.pdfSTAT-522 (Data Analysis Using R) by SOUMIQUE AHAMED.pdf
STAT-522 (Data Analysis Using R) by SOUMIQUE AHAMED.pdf
SOUMIQUE AHAMED
 
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
Masayuki Matsushita
 
SequoiaDB Distributed Relational Database
SequoiaDB Distributed Relational DatabaseSequoiaDB Distributed Relational Database
SequoiaDB Distributed Relational Database
wangzhonnew
 

Similar to Embedded R Execution using SQL (20)

Pumps, Compressors and Turbine Fault Frequency Analysis
Pumps, Compressors and Turbine Fault Frequency AnalysisPumps, Compressors and Turbine Fault Frequency Analysis
Pumps, Compressors and Turbine Fault Frequency Analysis
 
Pumps, Compressors and Turbine Fault Frequency Analysis
Pumps, Compressors and Turbine Fault Frequency AnalysisPumps, Compressors and Turbine Fault Frequency Analysis
Pumps, Compressors and Turbine Fault Frequency Analysis
 
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
 
Predictive Analytics with Airflow and PySpark
Predictive Analytics with Airflow and PySparkPredictive Analytics with Airflow and PySpark
Predictive Analytics with Airflow and PySpark
 
ROracle
ROracle ROracle
ROracle
 
RDataMining slides-r-programming
RDataMining slides-r-programmingRDataMining slides-r-programming
RDataMining slides-r-programming
 
String Comparison Surprises: Did Postgres lose my data?
String Comparison Surprises: Did Postgres lose my data?String Comparison Surprises: Did Postgres lose my data?
String Comparison Surprises: Did Postgres lose my data?
 
Jump Start into Apache® Spark™ and Databricks
Jump Start into Apache® Spark™ and DatabricksJump Start into Apache® Spark™ and Databricks
Jump Start into Apache® Spark™ and Databricks
 
Tutorial On Database Management System
Tutorial On Database Management SystemTutorial On Database Management System
Tutorial On Database Management System
 
Gur1009
Gur1009Gur1009
Gur1009
 
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeBeyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the code
 
ComputeFest 2012: Intro To R for Physical Sciences
ComputeFest 2012: Intro To R for Physical SciencesComputeFest 2012: Intro To R for Physical Sciences
ComputeFest 2012: Intro To R for Physical Sciences
 
AWS July Webinar Series: Amazon Redshift Optimizing Performance
AWS July Webinar Series: Amazon Redshift Optimizing PerformanceAWS July Webinar Series: Amazon Redshift Optimizing Performance
AWS July Webinar Series: Amazon Redshift Optimizing Performance
 
Cpp tutorial
Cpp tutorialCpp tutorial
Cpp tutorial
 
Get up to Speed (Quick Guide to data.table in R and Pentaho PDI)
Get up to Speed (Quick Guide to data.table in R and Pentaho PDI)Get up to Speed (Quick Guide to data.table in R and Pentaho PDI)
Get up to Speed (Quick Guide to data.table in R and Pentaho PDI)
 
18(ish) Things You'll Love About Oracle Database 18c
18(ish) Things You'll Love About Oracle Database 18c18(ish) Things You'll Love About Oracle Database 18c
18(ish) Things You'll Love About Oracle Database 18c
 
What’s New in Oracle Database 12c for PHP
What’s New in Oracle Database 12c for PHPWhat’s New in Oracle Database 12c for PHP
What’s New in Oracle Database 12c for PHP
 
STAT-522 (Data Analysis Using R) by SOUMIQUE AHAMED.pdf
STAT-522 (Data Analysis Using R) by SOUMIQUE AHAMED.pdfSTAT-522 (Data Analysis Using R) by SOUMIQUE AHAMED.pdf
STAT-522 (Data Analysis Using R) by SOUMIQUE AHAMED.pdf
 
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
 
SequoiaDB Distributed Relational Database
SequoiaDB Distributed Relational DatabaseSequoiaDB Distributed Relational Database
SequoiaDB Distributed Relational Database
 

Recently uploaded

一比一原版(UO毕业证)渥太华大学毕业证如何办理
一比一原版(UO毕业证)渥太华大学毕业证如何办理一比一原版(UO毕业证)渥太华大学毕业证如何办理
一比一原版(UO毕业证)渥太华大学毕业证如何办理
aqzctr7x
 
Orchestrating the Future: Navigating Today's Data Workflow Challenges with Ai...
Orchestrating the Future: Navigating Today's Data Workflow Challenges with Ai...Orchestrating the Future: Navigating Today's Data Workflow Challenges with Ai...
Orchestrating the Future: Navigating Today's Data Workflow Challenges with Ai...
Kaxil Naik
 
原版制作(unimelb毕业证书)墨尔本大学毕业证Offer一模一样
原版制作(unimelb毕业证书)墨尔本大学毕业证Offer一模一样原版制作(unimelb毕业证书)墨尔本大学毕业证Offer一模一样
原版制作(unimelb毕业证书)墨尔本大学毕业证Offer一模一样
ihavuls
 
Cell The Unit of Life for NEET Multiple Choice Questions.docx
Cell The Unit of Life for NEET Multiple Choice Questions.docxCell The Unit of Life for NEET Multiple Choice Questions.docx
Cell The Unit of Life for NEET Multiple Choice Questions.docx
vasanthatpuram
 
一比一原版(harvard毕业证书)哈佛大学毕业证如何办理
一比一原版(harvard毕业证书)哈佛大学毕业证如何办理一比一原版(harvard毕业证书)哈佛大学毕业证如何办理
一比一原版(harvard毕业证书)哈佛大学毕业证如何办理
taqyea
 
一比一原版英属哥伦比亚大学毕业证(UBC毕业证书)学历如何办理
一比一原版英属哥伦比亚大学毕业证(UBC毕业证书)学历如何办理一比一原版英属哥伦比亚大学毕业证(UBC毕业证书)学历如何办理
一比一原版英属哥伦比亚大学毕业证(UBC毕业证书)学历如何办理
z6osjkqvd
 
原版一比一爱尔兰都柏林大学毕业证(UCD毕业证书)如何办理
原版一比一爱尔兰都柏林大学毕业证(UCD毕业证书)如何办理 原版一比一爱尔兰都柏林大学毕业证(UCD毕业证书)如何办理
原版一比一爱尔兰都柏林大学毕业证(UCD毕业证书)如何办理
tzu5xla
 
一比一原版爱尔兰都柏林大学毕业证(本硕)ucd学位证书如何办理
一比一原版爱尔兰都柏林大学毕业证(本硕)ucd学位证书如何办理一比一原版爱尔兰都柏林大学毕业证(本硕)ucd学位证书如何办理
一比一原版爱尔兰都柏林大学毕业证(本硕)ucd学位证书如何办理
hqfek
 
[VCOSA] Monthly Report - Cotton & Yarn Statistics March 2024
[VCOSA] Monthly Report - Cotton & Yarn Statistics March 2024[VCOSA] Monthly Report - Cotton & Yarn Statistics March 2024
[VCOSA] Monthly Report - Cotton & Yarn Statistics March 2024
Vietnam Cotton & Spinning Association
 
Beyond the Basics of A/B Tests: Highly Innovative Experimentation Tactics You...
Beyond the Basics of A/B Tests: Highly Innovative Experimentation Tactics You...Beyond the Basics of A/B Tests: Highly Innovative Experimentation Tactics You...
Beyond the Basics of A/B Tests: Highly Innovative Experimentation Tactics You...
Aggregage
 
在线办理(英国UCA毕业证书)创意艺术大学毕业证在读证明一模一样
在线办理(英国UCA毕业证书)创意艺术大学毕业证在读证明一模一样在线办理(英国UCA毕业证书)创意艺术大学毕业证在读证明一模一样
在线办理(英国UCA毕业证书)创意艺术大学毕业证在读证明一模一样
v7oacc3l
 
一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理
一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理
一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理
ywqeos
 
社内勉強会資料_Hallucination of LLMs               .
社内勉強会資料_Hallucination of LLMs               .社内勉強会資料_Hallucination of LLMs               .
社内勉強会資料_Hallucination of LLMs               .
NABLAS株式会社
 
一比一原版格里菲斯大学毕业证(Griffith毕业证书)学历如何办理
一比一原版格里菲斯大学毕业证(Griffith毕业证书)学历如何办理一比一原版格里菲斯大学毕业证(Griffith毕业证书)学历如何办理
一比一原版格里菲斯大学毕业证(Griffith毕业证书)学历如何办理
lzdvtmy8
 
一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理
一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理
一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理
ytypuem
 
Template xxxxxxxx ssssssssssss Sertifikat.pptx
Template xxxxxxxx ssssssssssss Sertifikat.pptxTemplate xxxxxxxx ssssssssssss Sertifikat.pptx
Template xxxxxxxx ssssssssssss Sertifikat.pptx
TeukuEriSyahputra
 
一比一原版多伦多大学毕业证(UofT毕业证书)学历如何办理
一比一原版多伦多大学毕业证(UofT毕业证书)学历如何办理一比一原版多伦多大学毕业证(UofT毕业证书)学历如何办理
一比一原版多伦多大学毕业证(UofT毕业证书)学历如何办理
eoxhsaa
 
Jio cinema Retention & Engagement Strategy.pdf
Jio cinema Retention & Engagement Strategy.pdfJio cinema Retention & Engagement Strategy.pdf
Jio cinema Retention & Engagement Strategy.pdf
inaya7568
 
UofT毕业证如何办理
UofT毕业证如何办理UofT毕业证如何办理
UofT毕业证如何办理
exukyp
 
一比一原版(Unimelb毕业证书)墨尔本大学毕业证如何办理
一比一原版(Unimelb毕业证书)墨尔本大学毕业证如何办理一比一原版(Unimelb毕业证书)墨尔本大学毕业证如何办理
一比一原版(Unimelb毕业证书)墨尔本大学毕业证如何办理
xclpvhuk
 

Recently uploaded (20)

一比一原版(UO毕业证)渥太华大学毕业证如何办理
一比一原版(UO毕业证)渥太华大学毕业证如何办理一比一原版(UO毕业证)渥太华大学毕业证如何办理
一比一原版(UO毕业证)渥太华大学毕业证如何办理
 
Orchestrating the Future: Navigating Today's Data Workflow Challenges with Ai...
Orchestrating the Future: Navigating Today's Data Workflow Challenges with Ai...Orchestrating the Future: Navigating Today's Data Workflow Challenges with Ai...
Orchestrating the Future: Navigating Today's Data Workflow Challenges with Ai...
 
原版制作(unimelb毕业证书)墨尔本大学毕业证Offer一模一样
原版制作(unimelb毕业证书)墨尔本大学毕业证Offer一模一样原版制作(unimelb毕业证书)墨尔本大学毕业证Offer一模一样
原版制作(unimelb毕业证书)墨尔本大学毕业证Offer一模一样
 
Cell The Unit of Life for NEET Multiple Choice Questions.docx
Cell The Unit of Life for NEET Multiple Choice Questions.docxCell The Unit of Life for NEET Multiple Choice Questions.docx
Cell The Unit of Life for NEET Multiple Choice Questions.docx
 
一比一原版(harvard毕业证书)哈佛大学毕业证如何办理
一比一原版(harvard毕业证书)哈佛大学毕业证如何办理一比一原版(harvard毕业证书)哈佛大学毕业证如何办理
一比一原版(harvard毕业证书)哈佛大学毕业证如何办理
 
一比一原版英属哥伦比亚大学毕业证(UBC毕业证书)学历如何办理
一比一原版英属哥伦比亚大学毕业证(UBC毕业证书)学历如何办理一比一原版英属哥伦比亚大学毕业证(UBC毕业证书)学历如何办理
一比一原版英属哥伦比亚大学毕业证(UBC毕业证书)学历如何办理
 
原版一比一爱尔兰都柏林大学毕业证(UCD毕业证书)如何办理
原版一比一爱尔兰都柏林大学毕业证(UCD毕业证书)如何办理 原版一比一爱尔兰都柏林大学毕业证(UCD毕业证书)如何办理
原版一比一爱尔兰都柏林大学毕业证(UCD毕业证书)如何办理
 
一比一原版爱尔兰都柏林大学毕业证(本硕)ucd学位证书如何办理
一比一原版爱尔兰都柏林大学毕业证(本硕)ucd学位证书如何办理一比一原版爱尔兰都柏林大学毕业证(本硕)ucd学位证书如何办理
一比一原版爱尔兰都柏林大学毕业证(本硕)ucd学位证书如何办理
 
[VCOSA] Monthly Report - Cotton & Yarn Statistics March 2024
[VCOSA] Monthly Report - Cotton & Yarn Statistics March 2024[VCOSA] Monthly Report - Cotton & Yarn Statistics March 2024
[VCOSA] Monthly Report - Cotton & Yarn Statistics March 2024
 
Beyond the Basics of A/B Tests: Highly Innovative Experimentation Tactics You...
Beyond the Basics of A/B Tests: Highly Innovative Experimentation Tactics You...Beyond the Basics of A/B Tests: Highly Innovative Experimentation Tactics You...
Beyond the Basics of A/B Tests: Highly Innovative Experimentation Tactics You...
 
在线办理(英国UCA毕业证书)创意艺术大学毕业证在读证明一模一样
在线办理(英国UCA毕业证书)创意艺术大学毕业证在读证明一模一样在线办理(英国UCA毕业证书)创意艺术大学毕业证在读证明一模一样
在线办理(英国UCA毕业证书)创意艺术大学毕业证在读证明一模一样
 
一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理
一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理
一比一原版(lbs毕业证书)伦敦商学院毕业证如何办理
 
社内勉強会資料_Hallucination of LLMs               .
社内勉強会資料_Hallucination of LLMs               .社内勉強会資料_Hallucination of LLMs               .
社内勉強会資料_Hallucination of LLMs               .
 
一比一原版格里菲斯大学毕业证(Griffith毕业证书)学历如何办理
一比一原版格里菲斯大学毕业证(Griffith毕业证书)学历如何办理一比一原版格里菲斯大学毕业证(Griffith毕业证书)学历如何办理
一比一原版格里菲斯大学毕业证(Griffith毕业证书)学历如何办理
 
一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理
一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理
一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理
 
Template xxxxxxxx ssssssssssss Sertifikat.pptx
Template xxxxxxxx ssssssssssss Sertifikat.pptxTemplate xxxxxxxx ssssssssssss Sertifikat.pptx
Template xxxxxxxx ssssssssssss Sertifikat.pptx
 
一比一原版多伦多大学毕业证(UofT毕业证书)学历如何办理
一比一原版多伦多大学毕业证(UofT毕业证书)学历如何办理一比一原版多伦多大学毕业证(UofT毕业证书)学历如何办理
一比一原版多伦多大学毕业证(UofT毕业证书)学历如何办理
 
Jio cinema Retention & Engagement Strategy.pdf
Jio cinema Retention & Engagement Strategy.pdfJio cinema Retention & Engagement Strategy.pdf
Jio cinema Retention & Engagement Strategy.pdf
 
UofT毕业证如何办理
UofT毕业证如何办理UofT毕业证如何办理
UofT毕业证如何办理
 
一比一原版(Unimelb毕业证书)墨尔本大学毕业证如何办理
一比一原版(Unimelb毕业证书)墨尔本大学毕业证如何办理一比一原版(Unimelb毕业证书)墨尔本大学毕业证如何办理
一比一原版(Unimelb毕业证书)墨尔本大学毕业证如何办理
 

Embedded R Execution using SQL

  • 1.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           Embedded                          Execu)on  in  the  Oracle  Database      using                                                      .       Brendan Tierney
  • 2.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           §  Data  Warehousing  since  1997   §  Data  Mining  since  1998   §  Analy)cs  since  1993   11th  May  18:00-­‐20:00   Bank  of  Ireland,     Grand  Canal  Dock  
  • 3.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com          
  • 4.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           Oracle  R  Technologies   R  Distribu)on   Oracle's  supported  redistribu)on  of  open  source  R,  provided  as  a  free   download  from  Oracle,  enhanced  with  dynamic  loading  of  high   performance  linear  algebra  libraries.     Oracle  R  Enterprise   Integra)on  of  R  with  Oracle  Database.  A  component  of  the  Oracle   Advanced  Analy)cs  Op)on.  Oracle  R  Enterprise  makes  the  open  source  R   sta)s)cal  programming  language  and  environment  ready  for  the   enterprise  with  scalability,  performance,  and  ease  of  produc)on   deployment.   Oracle  R  Advanced  Analy)cs  for   Hadoop   High  performance  na)ve  access  to  the  Hadoop  Distributed  File  System   (HDFS)  and  MapReduce  programming  framework  for  R  users.  Oracle  R   Advanced  Analy)cs  for  Hadoop  is  a  component  of  Oracle  Big  Data   Connectors  soXware  suite.     ROracle   An  open  source  R  package,  maintained  by  Oracle  and  enhanced  to  use  the   Oracle  Call  Interface  (OCI)  libraries  to  handle  database  connec)ons  -­‐   providing  a  high-­‐performance,  na)ve  C-­‐language  interface  to  Oracle   Database.  
  • 5.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com          
  • 6.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           But  !  
  • 7.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           But  !  
  • 8.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           But  !   Our  data  no  longer  fits  on  our  laptop.     a  Big  Data  issue?  
  • 9.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           R  -­‐  The  Challenges     §  Scalability   §  Regardless  of  the  number  of  cores  on  your  CPU,  R  will  only  use  1  on  a  default   build   §  Performance   §  R  reads  data  into  memory  by  default.  Easy  to  exhaust  RAM  by  storing  unnecessary   data.  Typically  R  will  throw  an  excep)on  at  2GB.   §  Paralleliza)on  can  be  challenge.  Is  not  Default.  Packages  available   §  Produc)on  Deployment   §  Difficul)es  deploying  R  in  produc)on   §  Typically  need  to  re-­‐code  in  …..  
  • 10.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           What  has  Oracle  done?  
  • 11.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           > AggData <- aggregate(CUSTOMER_V$CUST_ID, by = list(CUST_GENDER = CUSTOMER_V$CUST_GENDER),
 FUN = length) 
 > # Display the results 
 > AggData 
 CUST_GENDER x 
 F F 18325 
 M M 37175 select  cust_gender,  count(*)  X   from      customer_v   group  by  cust_gender;     CUST_GENDER X ----------- ---------- F 18325 M 37175 Oracle  R  Enterprise   Transparency  Layer   1 2 3 4 5 6
  • 12.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           What  has  Oracle  done?  
  • 13.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           ore.scriptDrop(CustomerAge3) ore.scriptCreate(CustomerAge3, function (dat) { aggdata - aggregate(dat$AFFINITY_CARD, by = list(Age = dat$AGE), FUN = length) } ) ageProfile - ore.tableApply(MINING_DATA_BUILD_V, FUN.NAME=CustomerAge3, FUN.VALUE=data.frame(Age=1, x=1) ) ageProfile AGE AGE_NUM 1 17 18 2 18 21 3 19 32 4 20 32 5 21 26 6 22 42 …
  • 14.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           SELECT * FROM table(rqTableEval(cursor(select * from MINING_DATA_BUILD_V), NULL, 'select 1 AGE, 1 AGE_NUM from dual', ’CustomerAge3') ); AGE AGE_NUM ---------- ---------- 17 18 18 21 19 32 20 32 21 26 22 42 23 41 … ore.scriptDrop(CustomerAge3) ore.scriptCreate(CustomerAge3, function (dat) { aggdata - aggregate(dat$AFFINITY_CARD, by = list(Age = dat$AGE), FUN = length) } )
  • 15.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           Embedded  R  Execu)on  using  SQL  
  • 16.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           rqEval    -­‐  General  Purpose  func)on   rqEval ( PAR_CUR REF CURSOR IN OUT_QRY VARCHAR2 IN EXP_NAM VARCHAR2 IN) Can  be  a  data  set  (contain  one  row)  or  some  parameters   You  need  to  define  the  format  of  the  returned  data,  rows  or  images   This  is  the  actual  R  code  or  Script     BEGIN --sys.rqScriptDrop('HelloBrendan'); sys.rqScriptCreate('HelloBrendan', 'function() { res-data.frame(paste(Hello Brendan, the time is, format(Sys.time(),%X))) res } '); END; -- Call the HelloBrendan ORE script SELECT * FROM table(rqEval(NULL, 'select cast(''a'' as varchar2(35)) Ans from dual', 'HelloBrendan') ); Ans ----------------------------------- Hello Brendan the time is 15:19:32 The  last  R  statement   defines  what  is  returned   Defining  the  format  of  the   output  :  Can  be  challenging   at  first   If  image  then  replace   SELECT  with  ‘PNG’  
  • 17.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           rqTableEval    -­‐  main  func)on  for  processing  data  set   rqTableEval ( INP_CUR REF CURSOR IN PAR_CUR REF CURSOR IN OUT_QRY VARCHAR2 IN EXP_NAM VARCHAR2 IN) Cursor  defined  by  a  SELECT  statement   Any  parameters  required  by  the  ORE  Script,  in  addi)on  to  the  data   BEGIN --sys.rqScriptDrop('AgeProfile1'); sys.rqScriptCreate('AgeProfile1', 'function(dat) { aggdata - aggregate(dat$AFFINITY_CARD, by = list(Age = dat$AGE), FUN = length) } '); END; SELECT * FROM table(rqTableEval(cursor(select * from MINING_DATA_BUILD_V), NULL, 'select 1 AGE, 1 AGE_NUM from dual', 'AgeProfile1') ); AGE AGE_NUM ---------- ---------- 17 18 18 21 19 32 20 32 21 26 22 42 23 41 … BEGIN sys.rqScriptDrop('AgeProfile1'); sys.rqScriptCreate('AgeProfile1', 'function(dat) { aggdata - aggregate(dat$AFFINITY_CARD, by = list(Age = dat$AGE), FUN = length) res - plot(aggdata$Age, aggdata$x, type = l) } '); END; SELECT * FROM table(rqTableEval(cursor(select * from MINING_DATA_BUILD_V), NULL, PNG, 'AgeProfile1') ); NAME--------------------------------------------------------------- ----------------- ID---------- IMAGE-------------------------------------------------------------- ------------------ 189504E470D0A1A0A0000000D49484452000001E0000001E008060000007DD4BE95 0000200049444154789CEDDD797494F5BD3FF0F79305421632210B181609C90448D 15A542C138522B46CB5B66CAD5A
  • 18.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           rqTableEval    -­‐  main  func)on  for  processing  data  set   --Phase 1: Creating the Data Mining model -- Create a Linear Regression model and store in an ORE data store BEGIN --sys.rqScriptDrop('DEMO_LM'); sys.rqScriptCreate('DEMO_LM', 'function(dat, ds_name) { mod - lm(alcohol ~., data=dat) ore.save(mod, name=ds_name, overwrite=TRUE) } '); END; -- Now you need to run the DEMO_LM ORE script to create the model select * from table(rqTableEval(cursor(select * from white_wine), cursor(select 1 as ore.connect, 'DEMO_LM_DS' as ds_name from dual), 'XML', 'DEMO_LM') ); -- Phase 2: Applying the Data Mining model -- Create the script that applies the stored model to new data -- Return the actual value and the predicted value BEGIN --sys.rqScriptDrop('DEMO_LM_APPLY'); sys.rqScriptCreate('DEMO_LM_APPLY’, 'function(dat, ds_name) { ore.load(ds_name) pre - predict(mod, newdata=dat, supplemental.cols=alcohol”) res - cbind(dat, PRED=pre) res - res[,c(alcohol, PRED)] } '); END; -- Run the apply script on the new data select * from table(rqTableEval(cursor(select * from white_wine), cursor(select 1 as ore.connect, 'DEMO_LM_DS' as ds_name from dual), 'select 1 as alcohol, 1 as PRED from dual’, 'DEMO_LM_APPLY') ); alcohol PRED ---------- ---------- 10 9.58434071 10.6 8.83113972 10.7 10.378701 10 9.58434071 12.5 12.146045 10.6 8.83113972 12.8 12.668966 …
  • 19.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           Embedded  R  Execu)on  using  SQL   These  func)ons   allow  Parallel   Execu)on  
  • 20.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           Database  Server   Machine   Oracle  Database   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   Tables   In-­‐Database   SQL  Func)ons   R  Language  Installa)on   ORE  Installed  Packages   R   Scripts   Oracle  SQL  Client  Interfaces   SQL  Developer   SQLcl   SQL*Plus   etc   ORE  Installed  Packages   ORE  Transparency  Layer   R  Client  Installa)on   R  processes  are  spawned.     One  for  each  Parallel  division   Memory  Management   becomes  an  issue  !     You  don’t  want  to  run   out  of  memory  !  
  • 21.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           §  Vcells  are  memory  allocated  for  vectors  and  arrays   §  Ncells  are  memory  allocated  for  objects  such  as  lists   sys.rqconfigset('MIN_VSIZE', '10M') -- min heap 10MB, default 32MB sys.rqconfigset('MAX_VSIZE', '100M') -- max heap 100MB, default 4GB sys.rqconfigset('MIN_NSIZE', '500K') -- min number cons cells 500x1024, default 1M sys.rqconfigset('MAX_NSIZE', '2M') -- max number cons cells 2M, default 20M §  Some  guidelines     –  Set  parallel_degree_policy  to  MANUAL   –  Set  parallel_min_servers  to  the  number  of  parallel  slave  processes  to  be  started  when  the   database  instances  start,   •  This  avoids  start  up  )me  for  the  R  processes.    This  is  not  a  problem  for  long  running   processes.  But  can  save  )me  with  processes  running  for  10s  seconds   –  To  avoid  overloading  the  CPUs  if  the  parallel_max_servers  limit  is  reached,  set  the  hidden   parameter  _parallel_statement_queuing  to  TRUE.    Avoids  overloading  and  lets  processes  wait.   –  set  applica)on  tables  and  their  indexes  to  DOP  1  to  reinforce  the  ability  of  ORE  to  determine   when  to  use  parallelism   Use  garbage  collec)on   informa)on  in  R  using  gc()   to  determine  memory  usage   for  a  process.     Get  before  and  aXer   memory  usage  values.  
  • 22.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           rqGroupEval    -­‐  Doesn’t  really  exist  !!!   §  A  concept  and  Framework  for  defining  it  !   BEGIN --sys.rqScriptDrop('DEMO_GROUP_EVAL'); sys.rqScriptCreate('DEMO_GROUP_EVAL’, 'function(dat) { dat$AVG_SUGAR - mean(dat$residual.sugar) res - dat[,c(alcohol, residual.sugar, AVG_SUGAR)] } '); END; CREATE OR REPLACE PACKAGE WhiteWinePkg AS TYPE cur IS REF CURSOR RETURN WHITE_WINE%ROWTYPE; END WhiteWinePkg; CREATE OR REPLACE FUNCTION My_GroupEval( inp_cur WhiteWinePkg.cur, par_cur SYS_REFCURSOR, out_qry VARCHAR2, grp_col VARCHAR2, exp_txt CLOB) RETURN SYS.AnyDataSet PIPELINED PARALLEL_ENABLE (PARTITION inp_cur BY HASH (alcohol)) CLUSTER inp_cur BY (alcohol”) USING rqGroupEvalImpl; SELECT * FROM table(MY_GroupEval(cursor(SELECT * FROM WHITE_WINE), NULL, 'select 1 as alcohol, 1 as residual_sugar, 1 as Avg_Sugar from dual’, 'alcohol', 'DEMO_GROUP_EVAL'));
  • 23.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           From  the  DB  server   rqRowEval   Carefully  consider  the  ‘number  of  rows’   selected  as  that  determines  the  degree  of   parallelism.     Be  mindful  of  server  resources  in  calcula)ng   the  degree  and  then  the  ‘number  or  rows’     SELECT * FROM table(rqRowEval(cursor(select * from white_wine), cursor(select 1 as ore.connect, 'DEMO_LM_DS' as ds_name from dual), 'select 1 as alcohol, 1 as PRED from dual', 500, 'DEMO_LM_APPLY') ); 500   records   500   records   500   records   Results   Results   Results   Integrate   Results   Back  into  the  DB  server  
  • 24.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           Integra9ng  ORE  with  other  products  
  • 25.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           Integra)ng  with  OBIEE,  BI  Publisher                            Any  other  Language  or  Tool   Database  Server   Machine   Oracle  Database   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   -­‐-­‐-­‐-­‐-­‐   Tables   In-­‐Database   SQL  Func)ons   R  Language  Installa)on   ORE  Installed  Packages   R   Scripts  
  • 26.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           -- -- Create an embedded R script -- Called using the ORE SQL API -- - performs an aggregration of the data -- - creates a Graphic Plot -- begin sys.rqScriptDrop('AgeProfile'); sys.rqScriptCreate('AgeProfile', 'function(dat) { mdbv - dat aggdata - aggregate(mdbv$AFFINITY_CARD, by = list(Age = mdbv$AGE), FUN = length) res - plot(aggdata$Age, aggdata$x, type = l) } '); end; / -- -- Execute the embedded R Script -- - Graphic created in PNG format for import into OBIEE -- - change PNG to XML for BI Publisher -- select * from table(rqTableEval( cursor(select * from MINING_DATA_BUILD_V), cursor(select 1 ore.connect from dual), 'PNG','AgeProfile')); ORE  Demo   ORE  Demo  Data  Chart  
  • 27.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           §  Check  for  OBIEE  examples  in  Book  
  • 28.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           R  Text  Mining  using  SQL   ore.scriptCreate(prepare_tm_data_2, function (local_data) { library(tm) library(SnowballC) library(wordcloud) tm_data - for(i in 1:nrow(local_data)) { tm_data - paste(tm_data, local_data[i,]$DOC_TEXT, sep= ) } txt_corpus - Corpus (VectorSource (tm_data)) # data clean up tm_map - tm_map (txt_corpus, stripWhitespace) # remove white space tm_map - tm_map (tm_map, removePunctuation) # remove punctuations tm_map - tm_map (tm_map, removeNumbers) # to remove numbers tm_map - tm_map (tm_map, removeWords, stopwords(english)) # to remove stop words tm_map - tm_map (tm_map, removeWords, c(work, use, java, new, support)) # prepare matrix of words and frequency counts Matrix - TermDocumentMatrix(tm_map) # terms in rows matrix_c - as.matrix (Matrix) freq - sort (rowSums (matrix_c)) # frequency data res - data.frame(words=names(freq), freq) wordcloud (res$words, res$freq, max.words=100, min.freq=3, scale=c(7,.5), random.order=FALSE, colors=brewer.pal(8, Dark2)) } ) select * from table(rqTableEval( cursor(select * from MY_DOCUMENTS), null, 'PNG', 'prepare_tm_data_2')); hrp://www.oraly)cs.com/2016/08/oracle-­‐text-­‐oracle-­‐r-­‐enterprise-­‐and_17.html  
  • 29.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           hrp://www.oraly)cs.com/2016/09/how-­‐to-­‐display-­‐blob-­‐image-­‐in-­‐apex-­‐report.html  
  • 30.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           hrp://www.oraly)cs.com/2016/07/crea)ng-­‐ggplot2-­‐graphics-­‐using-­‐sql.html  
  • 31.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           install.packages(googleVis) There  are  a  few  restric)ons  with  using  these  in  your  applica)on.   Some  charts  open  in  web  browser  and  some  require  flash.   hrp://www.oraly)cs.com/2016/06/googlevis-­‐r-­‐package-­‐for-­‐crea)ng-­‐google.html  
  • 32.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com                                            brendan.)erney@oraly)cs.com                                  @brendan)erney                                www.oraly)cs.com                                  ie.linkedin.com/in/brendan)erney  
  • 33.      www.oraly)cs.com  t  :  @brendan)erney  e  :  brendan.)erney@oraly)cs.com           Word  Cloud  of  the  Oracle  Advanced   Analy)cs  web-­‐pages     hrp://www.oraly)cs.com/2015/01/crea)ng-­‐word-­‐cloud-­‐of-­‐oracle-­‐oaa.html