Inicio > Business Analytics > OBI 12c – Advanced Analytics con R

OBI 12c – Advanced Analytics con R

RlogoEntre las características destacadas de la recientemente liberada versión 12.2.1 de Oracle Business Intelligence están las nuevas funcionalidades de Advanced Analytics.

Esta nueva característica de OBI nos permite la utilización de 3 tipos de función, de los cuales, veremos detalladamente cómo utilizar el último, ya que nos abre unas posibilidades de expansión y customización ¡enormes!

  • Funciones internas del producto, como por ejemplo TRENDLINE, que mide un conjunto de datos en el tiempo para representar una gráfica con una línea que marca la tendencia de los datos analizados.
  • Funciones externas, como por ejemplo CLUSTER o OUTLIER (disponibles tanto para usuarios de Answers como de Visual Analyzer) que utilizan el motor de R externo que haya sido configurado (necesariamente), bien sea la redistribución de R u ORE (Oracle R Enterprise). La función lógica de SQL externo se encarga de proporcionar al motor R los datos, para que ejecute la función y devuelva los resultados.
  • Scripts (en realidad, una función externa específica llamada EVALUATE_SCRIPT) que diferenciamos del caso anterior ya que nos permite ejecutar no únicamente funciones predefinidas, sino scripts de desarrollo propio (que, por ejemplo, apliquen un modelo R construido por nosotros).

La función EVALUATE_SCRIPT tiene la siguiente sintaxis:

EVALUATE_SCRIPT( <script_file_path>, <column_name>, <options>, [<runtime_binded_column_options>] )

script_file_path: Indica la ruta al fichero de script .XML (relativa a una variable del sistema, filerepo, que apunta al directorio donde deberíamos ubicar todos nuestros scripts).

column_name: indica el nombre de la columna en la que se devolverá el resultado.

options: cadena que contienen los parámetros que espera el script en forma de pares de valores separados por “;”. Cuando el parámetro deba tomar el valor de una de las columnas seleccionadas en el answer, lo indicaremos como %n (n indica el n-éssimo parámetro de la lista de parámetros a continuación).

runtime_binded_column_options: lista de parámetros de longitud variable, formada por los nombres de columnas seleccionadas en el answer y que deseamos pasar al script como parámetros.

Para utilizar un script R desde OBI 12c deberemos seguir los siguientes pasos:

  1. Desarrollar la función R con la funcionalidad deseada.
  2. Definir el script .XML que actuará de interface entre OBIEE y la función R. En él se definen los parámetros de entrada y salida de nuestra función.
  3. Diseñar un answer, seleccionando las columnas de dimensión y métricas necesarias para alimentar a nuestro script. A continuación añadimos una nueva columna de fórmula, desde la que invocamos la función EVALUATE_SCRIPT.
  4. Visualizar el resultado. Para ello, utilizamos una Narrative View en la insertamos el siguiente código (asumiendo que la función EVALUATE_SCRIPT estaba en la 4 columna de nuestro answer).

imgcode

A continuación un ejemplo de la invocación de un script (de la SampleAppV511p):

EVALUATE_SCRIPT( ‘filerepo://obiee.BalloonPlot.xml’,

‘vizpath’,

‘dim1=%1;dim2=%2;METRIC=%3;bubblecolor=@{bubblecolor}{skyblue};labelcolor=@{labelcolor}{black};xlabel=Resource Type;ylabel=Poverty Level’,

“Projects”.”Resource Type”,

“Projects”.”Poverty Level”,

“Facts”.”@{metric}{Avg Students Reached}”)

Aquí tenemos una captura de pantalla de un caso de ejecución del script.

script_result

Y para acabar, reproducimos el cuerpo del script, donde podemos apreciar bastante claramente su estructura y la definición de los parámetros.

<script>	
        <scriptname>obiee.BalloonPlot</scriptname>
        <inputs>
                <column>
                        <name>dim1</name>
                        <nillable>NO</nillable>
                        <sortorder>1</sortorder>
                        <required>NO</required>
                </column>
                <column>
                        <name>dim2</name>
                        <nillable>NO</nillable>
                        <sortorder>2</sortorder>
                        <required>NO</required>
                </column>
                <column>
                        <name>metric</name>
                        <nillable>NO</nillable>
                        <sortorder>3</sortorder>
                        <required>NO</required>
                </column>
        </inputs>
        <outputs>
                <column>
                        <name>dim1</name>
                </column>
                <column>
                        <name>dim2</name>
                </column>
                <column>
                        <name>vizpath</name>
                        <datatype>varchar(200)</datatype>
                </column>

        </outputs>
<options>
<option>
                        <name>xlabel</name>
                        <value></value>
                </option>
<option>
                        <name>ylabel</name>
                        <value></value>
                </option>
<option>
                        <name>bubblecolor</name>
                        <value>skyblue</value>
                </option>
<option>
                        <name>labelcolor</name>
                        <value>#787878</value>
                </option>
</options>
        <scriptcontent>
  <![CDATA[
function(dat,xlabel,ylabel,bubblecolor,labelcolor) {
    imgdir="/app/oracle/biee/user_projects/domains/bi/custom_wls_apps/analyticsRes"
    dirlen=nchar(imgdir)
    fpath=tempfile(tmpdir=imgdir,fileext=".png")
    imgpath=paste("/analyticsRes/",substr(fpath,dirlen+2,dirlen+200),sep="")
    png( fpath, width = 600, height = 500 )

        library(gplots)
        balloonplot( dat[,1],dat[,2],dat[,3],show.margins=FALSE, cum.margins=FALSE,
                label.lines=FALSE,ylab =ylabel,xlab=xlabel,main=NULL,scale.method="volume",
                label.size=0.8,label.color=labelcolor,dotcolor=bubblecolor)
    dev.off()
    res <- cbind(dat, vizpath = imgpath) return(res[,c(1,2,4)]); } ]]>
        </scriptcontent>
</script>

  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: