R Statistik im Oracle Produktstack Matthias Fuchs DWH Architect ISE Information Systems Engineering GmbH
ISE Information Systems Engineering Gegründet 1991 Mitarbeiteranzahl: 50 Hauptsitz in Gräfenberg, Niederlassungen in München und Nürnberg Schwerpunkte: Oracle Engineered Systems (Exadata / Exalogic / Exalytics) Data Warehousing & Business Intelligence Oracle DB Migrationen, Optimierungen, Hochverfügbarkeit Managed Service für Datenbanken, BI und Middlewareapplikationen Oracle Partner Engineered Systems Award 2013 Copyright (C) ISE GmbH - All Rights Reserved 2
ISE Oracle Technology Center Erstes und einziges Exastack Technology Center in Deutschland in Nürnberg Copyright (C) ISE GmbH - All Rights Reserved 3
Analytik mit R auf Oracle Exadata und OBIEE About R Oracle Technologien mit R Oracle R Distribution Roracle und Oracle R Enterprise Oracle R Advanced Analytics for Hadoop Visualisierung mit R Copyright (C) ISE GmbH - All Rights Reserved 4
R R ist eine Softwareumgebung und eine Programmiersprache. R besteht aus einem schlanken Kernsystem und optionalen Paketen. Die Pakete enthalten Werkzeuge für spezielle Aufgaben im Analyseprozess. Führende Expertenauf dem jeweiligen Gebieten entwickeln die R- Pakete. R kann sehr gut in andere Softwareumgebungen integriert werden. R ist plattformunabhängig Copyright (C) ISE GmbH - All Rights Reserved 5
R ggplot2 Ca. 6.000 weitere googlevis ORAAH R RCurl ORE Record Linkage RODBC Twitter Copyright (C) ISE GmbH - All Rights Reserved 6
R Vergleich mit Standardsoftware aus dem Analytikumfeld: Community R Weltweite Community mit Entwicklern und Experten Kommerzielle Software Begrenzte Anzahl von Entwicklern Flexibilität Aktualität Funktionsumfang Anpassung an viele Datentypen Neue Methoden sind schnell verfügbar R bietet mehr analytische Methoden als andere Softwaretools Meist vorgegebene Datenstrukturen Abhängig vom Hersteller Meist geringerer Funktionsumfang Grafiken Extrem flexible und anpassbar, hohe Qualität, Exportierbar Standard Grafiken Copyright (C) ISE GmbH - All Rights Reserved 7
R - Relevanz Copyright (C) ISE GmbH - All Rights Reserved 8
R Copyright (C) ISE GmbH - All Rights Reserved 9
Oracle Technologien mit R Oracle R Distribution ROracle und Oracle R Enterprise (ORE) Oracle R Advanced Analytics for Hadoop (ORAAH) Copyright (C) ISE GmbH - All Rights Reserved 10
Oracle R Distribution Distribution von RPM Packages Aktuelle Version 3 Yum repository von Oracle Für Exadata verfügbar Copyright (C) ISE GmbH - All Rights Reserved 11
ORE in der Datenbank Traditonal Analytics Data Import Model Scoring Data Preparation Transformation Model Building Data Preparation Transformation Data Extraction Oracle Datamining Savings Model Scoring Embedded Data Preparation Model Building Data Preperation Ergebnisse Schnellere Entwicklungsprozess Kleiner TCO keine doppelte Datenhaltung Keine Datenkopien Enterprise Aware (Security, Maintenance) Copyright (C) ISE GmbH - All Rights Reserved 12
ORE in der Datenbank Using Oracle DB Calculation Local Using Oracle DB Calculation in Oracle DB Using Oracle DB Calculation on DB Server R Engine Oracle R Packages SQL In Database statistical and data mining R emebedded Oracle R Packages R Engine Berechnung am lokalen Client Daten direkt aus der DB Berechnung innerhalb der Datenbank Basierend auf ORE Paketen Engineered System Enhacements (Exadata Cells) Berechnung auf dem Datenbank Server External Procedure Mehrere parallel R Prozesse Copyright (C) ISE GmbH - All Rights Reserved 13
ORE in der Datenbank Inside DB R läuft auf dem Datenbank Rechner Optimiert für Geschwindigkeit High Performance Aus SQL heraus Optimierte Pakete von Oracle In Database statistical and data mining e.g. Exadata Outside DB (ROracle) Berechnungen laufen auf dem Client Daten aus der DB Nicht aus SQL heraus Oracle DB Easy to use Entwicklung von R Code licence free R Engine ROracle Packages Copyright (C) ISE GmbH - All Rights Reserved 14
ORE in der Datenbank Vergleich der Oracle R Methoden R Client ROracle R in Database ORE Cran Packages Ja Basis und Ore Pakete Parallel Grenzen Nein abhängig von Paketen Network, CPU, RAM auf Client Ja, ORE Pakete arbeiten wenn möglich parallel, parallele SQL Prozesse I/O, CPU, RAM auf DB Server R in DB Server ORE+alles in R Ja Mehrere parallel R Prozesse möglcih I/O, CPU, RAM auf DB Server Parallel in R Start R client SQL, R Scripte SQL, R Scripte Copyright (C) ISE GmbH - All Rights Reserved 16
ORE in der Datenbank - Fontends R: RStudio, Daten laden über Roracle RStudio, Daten laden über ORE RStudio Aufrufen und Erstellen von R Scripten SQL: Table function queries select * from table(rqeval(cursor(select 20 "num", 100 "scale", 55 "stop" from dual), 'select 1 id, 1 res from dual', 'SimpleScript1')); SQL Developer, Verwendung von Standard scripts SQL Developer, Aufrufen und Erstellen von R Scripten Copyright (C) ISE GmbH - All Rights Reserved 17
ORE in der Datenbank RStudio Copyright (C) ISE GmbH - All Rights Reserved 18
ORE in der Datenbank SQL Copyright (C) ISE GmbH - All Rights Reserved 19
Optimieren mit ORE - Transparency Layer Funktionen aus ORE: Beispiel: dataset_pointer=ore.get("ore_data") dataset = ore.pull(dataset_pointe [dataset_pointer$primary_bid == primary_bid, ]) dataset = dataset[order(dataset[, "PERIOD_LONG"]), ] dataset_pointer=ore.get("ore_data") dataset=ore.pull(ore.sort(data=dataset_pointer[dataset_pointer$primary_bid == primary_bid, ]), by='period_long ') Copyright (C) ISE GmbH - All Rights Reserved 20
Optimieren mit ORE - Script Embedded Execution 1 ore.doeval(fun.name="myoutlierfunctionndb", ore.connect=true) ore.scriptcreate ( "myoutlierfunctionnewdb", function (dataset_pointer, direction,start,stop,conflevel,threshold, primary_bic){ #... } 2 ore.tableapply(id01270_ore_data, FUN.NAME = "myoutlierfunctionnewdb", direction='s', start="201101", stop="201311", conflevel=0.995, threshold=10, primary_bic = ID01270") 3 res <- ore.groupapply(ore_data, BIC_ORE_DATA$CURRENT_PRIMARY_ID, FUN.NAME = "myoutlierfunctionnewdb", direction='s', start="201101", stop="201311", conflevel=0.995, threshold=10, parallel = TRUE)) Copyright (C) ISE GmbH - All Rights Reserved 21
ORAAH Oracle Advanced Analytics for Hadoop HDFS HDFS connects Mapper und Reducer in R 8 vorbereitete Algorythmen (KMeans clustering, linear regression..) Hive (ORCH) Ähnlich wie ORE Data.frame object auf HiveQLHive 9 Vorbereitete Algorythmen (KMeans clustering, linear regression..) Copyright (C) ISE GmbH - All Rights Reserved 22
ORAAH Oracle Advanced Analytics for Hadoop Big Data Analytics in R the torch has been lit! https://blogs.oracle.com/r/entry/big_data_analytics_in_r Laden eines 10 GBit Files Abgrenzung zu parallel Paket Hive und MapReduce Low-Rank Matrix Factorization in Oracle R Advanced Analytics for Hadoop https://blogs.oracle.com/r/entry/low_rank_matrix_factorization_in Online Shop Anhand von Käufen, Aufrufen und Bewertungen Artikel vorschlagen Copyright (C) ISE GmbH - All Rights Reserved 23
Visualisierung mit R Was will ich? Reporting Printing Interaktiv R im web Enterprise Aware Installierbar Supportbar Sicherheit Copyright (C) ISE GmbH - All Rights Reserved 24
Visualisierung mit R Open Source Examples Rstudio Web R Shiny Web framework Many Software Parts Kommerzielle Pakete für Sicherheit rapache Only R and Apache Easy to use http code OpenCPU Embedded Scientific Computing Ubuntu Cloud Server Copyright (C) ISE GmbH - All Rights Reserved 25
Visualisierung mit R - OBIEE R Scripte werden über SQL aufgrufen Table functions Security/Audit über Dashboards/Reports und Datenbank XML und binary output (z.b. PNG) SQL Query table function Liste mit PNG oder XML DB mit ORE 11g/12c OBIEE oder BIPublisher Copyright (C) ISE GmbH - All Rights Reserved 26
Beispiel mit OBIEE Beispiel Code für Dahboards: R Code sys.rqscriptcreate('busiestairportspar', 'function(dat){. ## select values minx <- min(head(sort(aggdata$x, decreasing = TRUE), n)) busiest_airports <- aggdata$group.1[aggdata$x >= minx, drop = TRUE] ## Graphical Output res <- boxplot(bd, notch = TRUE, col = "gold", cex = 0.5, outline = FALSE, horizontal = TRUE, yaxt = "n", main = paste("2007 Flight Delays by Airport, top ",n, " busiest",sep=""), xlab = "Delay (minutes)", ylab = "Airport") SQL Aufruf für OBIEE --Calling PNG select ID,IMAGE from table(rqtableeval( cursor(select DEST, ARRDELAY, valueof(nq_session.numrows) NUM, valueof(nq_session.fyear), cursor(select 1 "ore.connect" from dual), 'PNG','BusiestAirportsPar')) Copyright (C) ISE GmbH - All Rights Reserved 27
OBIEE Dashboard Copyright (C) ISE GmbH - All Rights Reserved 28
R Style Xkcd Style seqe <- seq(1,6) test <- dplot test$nr <- seqe dplot2 <- test xmin=dplot2$nr -0.1 xmax=dplot2$nr +0.3 ymin=0 ymax=dplot2$anzahl mapping <- aes(xmin=xmin,ymin=ymin,xmax=xmax,ymax=ymax) xrange <- range(1:7) xrange <- dplot2$dest yrange <- range(min(dplot2$anzahl) + 10, max(dplot2$anzahl) + 200) ggplot() + geom_smooth(mapping=aes(x=dplot2$dest,y=dplot2$anzahl, group=1),data = dplot2, colour="white") + xlab("airport" ) + ylab("flights") + ggplot(dplot2, aes(x=dplot2$dest,y=dplot2$anzahl, group=1)) + geom_line(colour="white") + xkcdaxis(xrange,yrange) + xlab("airport" ) + ylab("flights") + xkcdrect(mapping,dplot2,fill="yellow",colour="red") Copyright (C) ISE GmbH - All Rights Reserved 29
Xkcd Copyright (C) ISE GmbH - All Rights Reserved 30
oder so Aus http://xkcd.r-forge.r-project.org/ Copyright (C) ISE GmbH - All Rights Reserved 31
Questions Copyright (C) ISE GmbH - All Rights Reserved 32