SlideShare a Scribd company logo
06/03/2018
1
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
The one language to rule all your data
Brendan Tierney
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
2
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
§ Data Warehousing since 1997
§ Data Mining since 1998
§ Analytics since 1993
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
3
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
April 2017 : http://blog.sqlizer.io/posts/sql-43/
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
4
Store
Access
Analyze
Protect
Store
Access
Analyze
Protect
06/03/2018
5
Analyze
SELECT product, SUM(sale) AS "Total Sales"
FROM order_details
GROUP BY product;
Analyze
SELECT product, SUM(sale) AS "Total Sales"
FROM order_details
GROUP BY product
HAVING SUM(sale) >= 10000;
COUNT
AVG
MIN
MAX
MEAN
MODE
…
SELECT
gcc.segment1 AS bal_seg,
hi.parent_flex_value AS bu_rollup_group,
gcc.segment2 AS business_unit,
gcc.segment3 AS LOB,
gcc.segment4 AS ACCOUNT,
gcc.segment5 AS department,
gcc.segment6 AS product,
gcc.segment7 AS responsibility_center,
gcc.segment8 AS sub_department,
TRUNC (gjl.creation_date) AS je_line_creation_date,
gjh.name AS je_name,
gjb.name AS je_batch_name,
TO_CHAR (prds.end_date, 'yyyy/mm') AS period_name,
gjb.status batch_status,
gjl.je_line_num AS JE_LINE_NUMBER,
CASE NVL(xdl.application_id,0) WHEN 0 THEN NVL(gjl.entered_dr,0) ELSE NVL(xdl.unrounded_entered_dr,0) END entered_dr,
CASE NVL(xdl.application_id,0) WHEN 0 THEN NVL(gjl.entered_cr,0) ELSE NVL(xdl.unrounded_entered_cr,0) END entered_cr,
gjl.description AS je_line_description,
aps.segment1 AS vendor_number,
NVL(aps.vendor_name, gjl.attribute1) AS vendor_name,
NVL(aia.invoice_num, gjl.attribute3) AS invoice_number,
aia.invoice_date,
NVL(pha.segment1, gjl.attribute2) AS po_number,
NVL(aida.attribute5, gjl.attribute4) AS beginning_service_date,
NVL(aida.attribute6, gjl.attribute5) AS ending_service_date,
ppa.segment1 AS project_number,
gjl.attribute6 AS payroll_check_number,
gjc.user_je_category_name AS JE_CATEGORY_NAME,
gjh.posted_date,
gjh.description AS JE_HEADER_DESCRIPTION,
DECODE (gjh.actual_flag, 'A', 'A', 'B') actual_flag,
TRUNC (gjh.creation_date) AS JE_CREATED_ON_DATE,
gjs.user_je_source_name AS JE_SOURCE_NAME,
gjl.code_combination_id,
NVL (gjl.attribute7, papf.full_name) AS created_by,
T1.file_name AS ipm_image_id,
T1.url,
hi.division AS division,
hi.parent_flex_value AS region,
aia.invoice_id,
NVL(MAIN_DOC.ipm_image_flg,'N') AS ipm_image_flg,
NVL(MAIN_DOC.IMAGE_CNT,0) AS ipm_image_cnt,
gjl.je_line_num,
gjl.je_header_id
FROM apps.gl_je_headers gjh
inner join apps.gl_je_batches gjb on gjh.je_batch_id = gjb.je_batch_id and gjb.status = 'P'
inner join apps.gl_je_sources gjs on gjh.je_source = gjs.je_source_name
06/03/2018
6
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Let us start with some Basics
06/03/2018
7
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
8
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
9
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
SUM(x)
AVG(x)
STDDEV(x)
CORR(x, y)
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
10
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
11
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Creating a story about our data.
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
12
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
How we do Analytics?
Sometimes how we are told how to do Analytics
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Do we really need to use other tools & languages?
06/03/2018
13
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
14
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
But !
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
But !
06/03/2018
15
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
But !
Our data no longer fits on our laptop.
a Big Data issue?
Creating Data Silos is BAD
This kind of approach is BAD
This approach does not scale – this is BAD
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
16
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.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 exception at 2GB.
§ Parallelization can be challenge. Is not Default. Packages available
§ Production Deployment
§ Difficulties deploying R in production
§ Typically need to re-code in …..
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
I’m getting too old for this new stuff !
Can you teach an old dog new tricks?
06/03/2018
17
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
What if you could use the language and skills you
already have?
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Did you know?
06/03/2018
18
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Statistical Functions in Oracle
All of these are
FREE
with the Database
These are often
forgotten about
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
19
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
R for Data Profiling
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
I didn’t
06/03/2018
20
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
DBMS_STAT_FUNC
06/03/2018
21
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
set serveroutput on
declare
s DBMS_STAT_FUNCS.SummaryType;
begin
DBMS_STAT_FUNCS.SUMMARY('DMUSER', 'MINING_DATA_BUILD_V', 'AGE', 3, s);
dbms_output.put_line('SUMMARY STATISTICS');
dbms_output.put_line('Count : '||s.count);
dbms_output.put_line('Min : '||s.min);
dbms_output.put_line('Max : '||s.max);
dbms_output.put_line('Range : '||s.range);
dbms_output.put_line('Mean : '||round(s.mean));
dbms_output.put_line('Mode Count : '||s.cmode.count);
dbms_output.put_line('Mode : '||s.cmode(1));
dbms_output.put_line('Variance : '||round(s.variance));
dbms_output.put_line('Stddev : '||round(s.stddev));
dbms_output.put_line('Quantile 5 : '||s.quantile_5);
dbms_output.put_line('Quantile 25 : '||s.quantile_25);
dbms_output.put_line('Median : '||s.median);
dbms_output.put_line('Quantile 75 : '||s.quantile_75);
dbms_output.put_line('Quantile 95 : '||s.quantile_95);
dbms_output.put_line('Extreme Count : '||s.extreme_values.count);
dbms_output.put_line('Extremes : '||s.extreme_values(1));
dbms_output.put_line('Top 5 : '||s.top_5_values(1)||','||
s.top_5_values(2)||','||
s.top_5_values(3)||','||
s.top_5_values(4)||','||
s.top_5_values(5));
dbms_output.put_line('Bottom 5 : '||s.bottom_5_values(5)||','||
s.bottom_5_values(4)||','||
s.bottom_5_values(3)||','||
s.bottom_5_values(2)||','||
s.bottom_5_values(1));
end;
http://www.oralytics.com/2013/04/part-1getting-started-with-statistics.html
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Stats and More Stats
§ Correlations (Spearman’s, Kendall)
§ Linear Regression
§ T-Test
§ F-Test
§ Hypothesis testing
§ Anova
§ Ranking
§ Window Aggregate functions
§ Lead / Lag
§ Cross Tabulation
§ PIVOT / UNPIVOT
§ …
06/03/2018
22
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
23
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Scalable
Highly Secure
No Data
Movement
Real Time
Production
Deployment
Faster
06/03/2018
24
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
25
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
26
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Comprehensive Machine Learning Platform
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Oracle Data Mining
§ PL/SQL Package
§ DBMS_DATA_MINING
§ DBMS_DATA_MINING_TRANSFORM
§ DBMS_PREDICTIVE_ANALYTICS
§ SQL Functions
– PREDICTION
– PREDICTION_PROBABILITY
– PREDICTION_BOUNDS
– PREDICTION_COST
– PREDICTION_DETAILS
– PREDICTION_SET
– CLUSTER_ID
– CLUSTER_DETAILS
– CLUSTER_DISTANCE
– CLUSTER_PROBABILITY
– CLUSTER_SET
– FEATURE_ID
– FEATURE_DETAILS
– FEATURE_SET
– FEATURE_VALUE
§ 12c – Predictive Queries
§ aka Dynamic Queries
§ Transitive dynamic Data Mining models
§ Can scale to many 100+ models all in one
statement
06/03/2018
27
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
select cust_id, affinity_card,
PREDICTION( FOR to_char(affinity_card) USING *) OVER () pred_affinity_card
from mining_data_build_v;
PQ to predict the
AFFINITY_CARD value.
Using all the data
USING *
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
select cust_id, affinity_card,
PREDICTION( FOR to_char(affinity_card) USING *) OVER () pred_affinity_card
from mining_data_build_v;
With PQs we can
dynamically create
new DM models based
on an Attribute(s)
06/03/2018
28
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
select cust_id, affinity_card,
PREDICTION( FOR to_char(affinity_card) USING *) OVER
(PARTITION BY "COUNTRY_NAME") pred_affinity_card
from mining_data_build_v;
A new DM Model will
be created for each
Country (19)
With PQs we can
dynamically create
new DM models based
on an Attribute(s)
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Analytic Functions (in 12c)
>46 Analytics Functions in 12c
06/03/2018
29
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
What about R ?
06/03/2018
30
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
--
-- There are 2 ways to use the GLM model : in Batch and in Real-Time mode
--
-- First Step : Build the in-database R script to score you new data
--
Begin
sys.rqScriptDrop('Demo_GLM_Batch');
sys.rqScriptCreate('Demo_GLM_Batch',
'function(dat, datastore_name) {
ore.load(datastore_name)
prd <- predict(mod, newdata=dat)
prd[as.integer(rownames(prd))] <- prd
res <- cbind(dat, PRED = prd)
res}');
end;
/
--
-- Now you can run the script to score the new data in Batch model
-- The data is located in the table MINING_DATA_APPLY
--
select * from table(rqTableEval(
cursor(select CUST_GENDER, AGE, CUST_MARITAL_STATUS, COUNTRY_NAME, CUST_INCOME_LEVEL, EDUCATION,
HOUSEHOLD_SIZE, YRS_RESIDENCE
from MINING_DATA_APPLY_V
where rownum <= 10),
cursor(select 1 as "ore.connect", 'myDatastore' as "datastore_name" from dual),
'select CUST_GENDER, AGE, CUST_MARITAL_STATUS, COUNTRY_NAME, CUST_INCOME_LEVEL, EDUCATION,
HOUSEHOLD_SIZE, YRS_RESIDENCE, 1 PRED from MINING_DATA_APPLY_V','Demo_GLM_Batch'))
order by 1, 2, 3;
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
31
Store
Access
Analyze
Protect
Oracle is no longer a Relational Database
But is more like a Polyglot or Multi-modal Database
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
External
View
External
View
Conceptual Schema
Physical Schema
06/03/2018
32
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
CREATE TABLE countries_ext (
country_code VARCHAR2(5),
country_name VARCHAR2(50),
country_language VARCHAR2(50)
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY ext_tab_data
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
(
country_code CHAR(5),
country_name CHAR(50),
country_language CHAR(50)
)
)
LOCATION ('Countries1.txt','Countries2.txt')
)
PARALLEL 5
REJECT LIMIT UNLIMITED;
SELECT * FROM countries_ext ORDER BY country_name;
COUNT COUNTRY_NAME COUNTRY_LANGUAGE
----- ---------------------------- -----------------------------
ENG England English
FRA France French
GER Germany German
IRE Ireland English
External
View
External
View
Conceptual Schema
Physical Schema
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
CREATE_TABLE CUSTOMER_RAWDATA (
customer_number NUMBER,
customer_name VARCHAR2(50),
postal_code VARCHAR2 (5)
)
ORGANIZATION EXTERNAL (
type oracle_hdfs
default directory TEMP
access parameters
(
com.oracle.bigdata.cluster = hadoop_clust
com.oracle.bigdata.rowformat = delimited fields terminated by ','
)
location('hdfs/p1a.dat',
'hdfs/p1b.dat',
'hdfs/p2.dat',
'hdfs/p3.dat'
) );
External
View
External
View
Conceptual Schema
Physical Schema
Partitioned External tables (new in 12.2)
Data is stored on our
Hadoop cluster
Problem: We still need to scan all the files for the data we need
We may not get the degree of parallelism we want.
But with Partitioned External tables we can provide meta-data
Data is stored in
many files
06/03/2018
33
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
CREATE_TABLE CUSTOMER_RAWDATA (
customer_number NUMBER,
customer_name VARCHAR2(50),
postal_code VARCHAR2 (5)
)
ORGANIZATION EXTERNAL (
type oracle_hdfs
default directory TEMP
access parameters
(
com.oracle.bigdata.cluster = hadoop_clust
com.oracle.bigdata.rowformat = delimited fields terminated by ','
)
location('hdfs/p1a.dat',
'hdfs/p1b.dat',
'hdfs/p2.dat',
'hdfs/p3.dat'
) );
External
View
External
View
Conceptual Schema
Physical Schema
Partitioned External tables (new in 12.2)
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
CREATE_TABLE CUSTOMER_RAWDATA (
customer_number NUMBER,
customer_name VARCHAR2(50),
postal_code VARCHAR2 (5)
)
ORGANIZATION EXTERNAL (
type oracle_hdfs
default directory TEMP
access parameters
(
com.oracle.bigdata.cluster = hadoop_clust
com.oracle.bigdata.rowformat = delimited fields terminated by ','
)
partition by range(customer_number)
(
partition p1 values less than (100) location('hdfs/p1a.dat', 'hdfs/p1b.dat'),
partition p2 values less than (200) location('hdfs/p2.dat'),
partition p3 values less than (300) location('hdfs/p3.dat')
) );
External
View
External
View
Conceptual Schema
Physical Schema
Partitioned External tables (new in 12.2)
Now we get Partition elimination
Only really works if the data is natively partitioned when files
are created.
and does this correctly every time !!!
Doesn’t have to be on
Hadoop. Also works
with files on server.
06/03/2018
34
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
CREATE TABLE json_dump_file_contents (
json_document CLOB
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY order_entry_dir
ACCESS PARAMETERS (
RECORDS DELIMITED BY 0x'0A'
DISABLE_DIRECTORY_LINK_CHECK
BADFILE loader_output_dir: 'JSONDumpFile.bad'
LOGFILE order_entry_dir: 'JSONDumpFile.log'
FIELDS (
json_document CHAR(5000)
)
)
LOCATION (order_entry_dir:'PurchaseOrders.dmp')
)
PARALLEL
REJECT LIMIT UNLIMITED;
SELECT count(*)
FROM json_dump_file_contents po
WHERE to_number(json_value(json_document, '$.PONumber')) > 1500;
External
View
External
View
Conceptual Schema
Physical Schema
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
CREATE TABLE json_documents (
id RAW(16) NOT NULL,
data CLOB,
CONSTRAINT json_documents_pk PRIMARY KEY (id),
CONSTRAINT json_documents_json_chk CHECK (data IS JSON (STRICT) )
);
INSERT INTO json_documents (id, data)
VALUES (SYS_GUID(),
'{ "FirstName" : ”Brendan",
"LastName" : ”Tierney",
"Job" : "Clerk",
"Address" : { "Street" : ”1 Main Street",
"City" : ”Dublin",
"Country" : ”Ireland”},
"ContactDetails" : { "Email" : ”xyz@oralytics.com",
"Phone" : ”353 123 1234567",
"Twitter" : "@brendantierney" },
"DateOfBirth" : "01-JAN-2000",
"Active" : unknown }');
SELECT a.data.FirstName,
a.data.LastName,
a.data.ContactDetails.Email AS Email
FROM json_documents a
ORDER BY a.data.FirstName, a.data.LastName;
FIRSTNAME LASTNAME EMAIL
--------------- --------------- -------------------------
Brendan Tierney xyz@oralytics.com
External
View
External
View
Conceptual Schema
Physical Schema
06/03/2018
35
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
CREATE TABLE customer (
id NUMBER(38),
name VARCHAR2(100),
address VARCHAR2(100),
city VARCHAR2(40),
country VARCHAR2(50),
location MDSYS.SDO_GEOMETRY
);
INSERT INTO customer VALUES (
cust_seq.nextval,‘Brendan Tierney’, ‘1 Main Street’, ‘Dublin’, ‘Ireland’,
SDO_GEOMETRY
(2001, -- Geometry Type: 2-D Point
8307, -- SRID, Datum: WGS84
SDO_POINT_TYPE
(53.3498, -- Longitude for Dublin
6.2603, -- Latitude for Dublin
NULL),
NULL,
NULL
)
)
SELECT sdo_geom.sdo_distance(c1.locationm c2.location, 0.5, ‘unit=kilometer’)
FROM customer c1,
customer c2
WHERE c1.id = 1
AND c2.id = 2;
External
View
External
View
Conceptual Schema
Physical Schema
Spatial
&
Graph
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Using Oracle Big Data SQL, organizations can:
• Combine data from Oracle Database, Apache Hadoop and NoSQL in a single SQL query
• Query and analyze data In Apache Hadoop and NoSQL
• Maximize query performance on all data using advanced techniques like Smart Scan,
Partition Pruning, Storage Indexes, Bloom Filters and Predicate Push-Down in a
distributed architecture
• Integrate big data analyses into existing applications and architectures
External
View
External
View
Conceptual Schema
Physical Schema
Spatial
&
Graph
Oracle
NoSQL
Lots more Data
Sources coming
available
06/03/2018
36
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
External
View
External
View
Conceptual Schema
Physical Schema
Spatial
&
Graph
Oracle
NoSQL
Accessing data on Hadoop or an Oracle NoSQL Database requires access via
Hive/HCatalog.
To use this Hadoop or NoSQL data
• Creating a NoSQL Store and a Table (or Hadoop data)
• Configuring Hive/HCatalog to access NoSQL Table or other data
• Configuring Oracle Database to talk to HCatalog via an external table
Lots more Data
Sources coming
available
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
External
View
External
View
Conceptual Schema
Physical Schema
Spatial
&
Graph
Oracle
NoSQL
CREATE TABLE movieapp_log_json (
custid INTEGER ,
movieid INTEGER ,
genreid INTEGER ,
time VARCHAR2 (20) ,
recommended VARCHAR2 (4) ,
activity NUMBER,
rating INTEGER,
price NUMBER
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_HIVE
DEFAULT DIRECTORY DEFAULT_DIR
)
REJECT LIMIT UNLIMITED;
SELECT f.custid, m.title, m.year, m.gross, f.rating
FROM movieapp_log_json f, movie m
WHERE f.movieId = m.movie_id
AND f.rating > 4
Selects Hadoop data
and in-database data
06/03/2018
37
Store
Access
Analyze
Protect
06/03/2018
38
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Data Security
§ Can apply all the typical data security that comes with Oracle on all our data
– Masking/Redaction
– Virtual Private Databases
– Fine-grained access control
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Store
Access
Analyze
Protect
External
View
External
View
Conceptual Schema
Physical Schema
Spatial
&
Graph
Oracle
NoSQL
06/03/2018
39
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
SQL
One Ring to rule them all, One Ring to find them,
One Ring to bring them all and in the darkness bind them
Sauron – Lord of the Rings
06/03/2018
40
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
SQL
One SQL to rule them all, One SQL to find them,
One SQL to bring them all and in the Database bind them
Sauron – Lord of the Rings
Brendan Tierney
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
SQL
One Language to rule them all, One Language to find them,
One Language to bring them all and in the Database bind them
Sauron – Lord of the Rings
Brendan Tierney
06/03/2018
41
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
42
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
06/03/2018
43
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
The one language to
rule all your data
06/03/2018
44
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
brendan.tierney@oralytics.com
@brendantierney
www.oralytics.com
ie.linkedin.com/in/brendantierney
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
http://www.cafepress.com/oralytics
06/03/2018
45
www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
Word Cloud of the Oracle Advanced
Analytics web-pages
http://www.oralytics.com/2015/01/creating-word-cloud-of-oracle-oaa.html
3 Membership Tiers
• Oracle ACE Director
• Oracle ACE
• Oracle ACE Associate
bit.ly/OracleACEProgram
500+ Technical Experts
Helping Peers Globally
Connect:
Nominate yourself or someone you know: acenomination.oracle.com
@oracleace
Facebook.com/oracleaces
oracle-ace_ww@oracle.com

More Related Content

Similar to SQL : The one language to rule all your data

JoomlaDay Conference_September 2023 PDF.pdf
JoomlaDay Conference_September 2023 PDF.pdfJoomlaDay Conference_September 2023 PDF.pdf
JoomlaDay Conference_September 2023 PDF.pdf
Oliver Brett
 
Advanced Technical SEO in 2020 - Data Science
Advanced Technical SEO in 2020 - Data ScienceAdvanced Technical SEO in 2020 - Data Science
Advanced Technical SEO in 2020 - Data Science
Tyler Reardon
 
Search Intent, Content & Customer Micro-Moments - Share16 Keynote, Chris Bennett
Search Intent, Content & Customer Micro-Moments - Share16 Keynote, Chris BennettSearch Intent, Content & Customer Micro-Moments - Share16 Keynote, Chris Bennett
Search Intent, Content & Customer Micro-Moments - Share16 Keynote, Chris Bennett
97th Floor
 
BAS 250 Lecture 2
BAS 250 Lecture 2BAS 250 Lecture 2
BAS 250 Lecture 2
Wake Tech BAS
 
01 - Motagua 2.0 - 16x9 - Light [MAIN].pptx
01 - Motagua 2.0 - 16x9 - Light [MAIN].pptx01 - Motagua 2.0 - 16x9 - Light [MAIN].pptx
01 - Motagua 2.0 - 16x9 - Light [MAIN].pptx
JesusCarranzaA
 
01 motagua 2.0 - 16x9 - light [main]
01   motagua 2.0 - 16x9 - light [main]01   motagua 2.0 - 16x9 - light [main]
01 motagua 2.0 - 16x9 - light [main]
SourabhAgrawal76
 
A Better Understanding: Solving Business Challenges with Data
A Better Understanding: Solving Business Challenges with DataA Better Understanding: Solving Business Challenges with Data
A Better Understanding: Solving Business Challenges with Data
Eric Kavanagh
 
From Data To Insights
From Data To Insights From Data To Insights
From Data To Insights
Orit Alul
 
Mind The Gap - Refinements to DMN 1.1 Suggested by Real-World Experience
Mind The Gap - Refinements to DMN 1.1 Suggested by Real-World ExperienceMind The Gap - Refinements to DMN 1.1 Suggested by Real-World Experience
Mind The Gap - Refinements to DMN 1.1 Suggested by Real-World Experience
Decision Management Solutions
 
1920191Analytical Competitiveness Right Data vs. .docx
1920191Analytical Competitiveness Right Data vs. .docx1920191Analytical Competitiveness Right Data vs. .docx
1920191Analytical Competitiveness Right Data vs. .docx
drennanmicah
 
Improving Findability through Site Search Analytics
Improving Findability through Site Search AnalyticsImproving Findability through Site Search Analytics
Improving Findability through Site Search Analytics
Louis Rosenfeld
 
CE Fraud Analytics: Ensuring Data Quality Thank You
CE Fraud Analytics: Ensuring Data Quality Thank YouCE Fraud Analytics: Ensuring Data Quality Thank You
CE Fraud Analytics: Ensuring Data Quality Thank You
Case IQ
 
Creating an Enterprise AI Strategy
Creating an Enterprise AI StrategyCreating an Enterprise AI Strategy
Creating an Enterprise AI Strategy
AtScale
 
02---SlidesPro-2.0---4x3---Light_922cb833370f48ea9da74bd892a0ccd1.pptx
02---SlidesPro-2.0---4x3---Light_922cb833370f48ea9da74bd892a0ccd1.pptx02---SlidesPro-2.0---4x3---Light_922cb833370f48ea9da74bd892a0ccd1.pptx
02---SlidesPro-2.0---4x3---Light_922cb833370f48ea9da74bd892a0ccd1.pptx
Marcosnascimentofrei
 
Agile Metrics: Make Better Decisions with Data
Agile Metrics: Make Better Decisions with DataAgile Metrics: Make Better Decisions with Data
Agile Metrics: Make Better Decisions with Data
TechWell
 
2023 Top 10 Trends for Business, Data and Analysis
2023 Top 10 Trends for Business, Data and Analysis2023 Top 10 Trends for Business, Data and Analysis
2023 Top 10 Trends for Business, Data and Analysis
Technology Expresso Expresso-Consulting
 
3 Steps for Measuring ROI of Data Quality for Data-Driven Marketers
3 Steps for Measuring ROI of Data Quality for Data-Driven Marketers3 Steps for Measuring ROI of Data Quality for Data-Driven Marketers
3 Steps for Measuring ROI of Data Quality for Data-Driven Marketers
Alex Yastrebenetsky
 
Selecting the right data visualization for your business problem
Selecting the right data visualization for your business problemSelecting the right data visualization for your business problem
Selecting the right data visualization for your business problem
Alan Morte
 
Traffic & Conversion Summit 2018 Weapons of Mass Conversion Marketing Tools 2018
Traffic & Conversion Summit 2018 Weapons of Mass Conversion Marketing Tools 2018Traffic & Conversion Summit 2018 Weapons of Mass Conversion Marketing Tools 2018
Traffic & Conversion Summit 2018 Weapons of Mass Conversion Marketing Tools 2018
Roland Frasier
 
What Is Data Science? | Introduction to Data Science | Data Science For Begin...
What Is Data Science? | Introduction to Data Science | Data Science For Begin...What Is Data Science? | Introduction to Data Science | Data Science For Begin...
What Is Data Science? | Introduction to Data Science | Data Science For Begin...
Simplilearn
 

Similar to SQL : The one language to rule all your data (20)

JoomlaDay Conference_September 2023 PDF.pdf
JoomlaDay Conference_September 2023 PDF.pdfJoomlaDay Conference_September 2023 PDF.pdf
JoomlaDay Conference_September 2023 PDF.pdf
 
Advanced Technical SEO in 2020 - Data Science
Advanced Technical SEO in 2020 - Data ScienceAdvanced Technical SEO in 2020 - Data Science
Advanced Technical SEO in 2020 - Data Science
 
Search Intent, Content & Customer Micro-Moments - Share16 Keynote, Chris Bennett
Search Intent, Content & Customer Micro-Moments - Share16 Keynote, Chris BennettSearch Intent, Content & Customer Micro-Moments - Share16 Keynote, Chris Bennett
Search Intent, Content & Customer Micro-Moments - Share16 Keynote, Chris Bennett
 
BAS 250 Lecture 2
BAS 250 Lecture 2BAS 250 Lecture 2
BAS 250 Lecture 2
 
01 - Motagua 2.0 - 16x9 - Light [MAIN].pptx
01 - Motagua 2.0 - 16x9 - Light [MAIN].pptx01 - Motagua 2.0 - 16x9 - Light [MAIN].pptx
01 - Motagua 2.0 - 16x9 - Light [MAIN].pptx
 
01 motagua 2.0 - 16x9 - light [main]
01   motagua 2.0 - 16x9 - light [main]01   motagua 2.0 - 16x9 - light [main]
01 motagua 2.0 - 16x9 - light [main]
 
A Better Understanding: Solving Business Challenges with Data
A Better Understanding: Solving Business Challenges with DataA Better Understanding: Solving Business Challenges with Data
A Better Understanding: Solving Business Challenges with Data
 
From Data To Insights
From Data To Insights From Data To Insights
From Data To Insights
 
Mind The Gap - Refinements to DMN 1.1 Suggested by Real-World Experience
Mind The Gap - Refinements to DMN 1.1 Suggested by Real-World ExperienceMind The Gap - Refinements to DMN 1.1 Suggested by Real-World Experience
Mind The Gap - Refinements to DMN 1.1 Suggested by Real-World Experience
 
1920191Analytical Competitiveness Right Data vs. .docx
1920191Analytical Competitiveness Right Data vs. .docx1920191Analytical Competitiveness Right Data vs. .docx
1920191Analytical Competitiveness Right Data vs. .docx
 
Improving Findability through Site Search Analytics
Improving Findability through Site Search AnalyticsImproving Findability through Site Search Analytics
Improving Findability through Site Search Analytics
 
CE Fraud Analytics: Ensuring Data Quality Thank You
CE Fraud Analytics: Ensuring Data Quality Thank YouCE Fraud Analytics: Ensuring Data Quality Thank You
CE Fraud Analytics: Ensuring Data Quality Thank You
 
Creating an Enterprise AI Strategy
Creating an Enterprise AI StrategyCreating an Enterprise AI Strategy
Creating an Enterprise AI Strategy
 
02---SlidesPro-2.0---4x3---Light_922cb833370f48ea9da74bd892a0ccd1.pptx
02---SlidesPro-2.0---4x3---Light_922cb833370f48ea9da74bd892a0ccd1.pptx02---SlidesPro-2.0---4x3---Light_922cb833370f48ea9da74bd892a0ccd1.pptx
02---SlidesPro-2.0---4x3---Light_922cb833370f48ea9da74bd892a0ccd1.pptx
 
Agile Metrics: Make Better Decisions with Data
Agile Metrics: Make Better Decisions with DataAgile Metrics: Make Better Decisions with Data
Agile Metrics: Make Better Decisions with Data
 
2023 Top 10 Trends for Business, Data and Analysis
2023 Top 10 Trends for Business, Data and Analysis2023 Top 10 Trends for Business, Data and Analysis
2023 Top 10 Trends for Business, Data and Analysis
 
3 Steps for Measuring ROI of Data Quality for Data-Driven Marketers
3 Steps for Measuring ROI of Data Quality for Data-Driven Marketers3 Steps for Measuring ROI of Data Quality for Data-Driven Marketers
3 Steps for Measuring ROI of Data Quality for Data-Driven Marketers
 
Selecting the right data visualization for your business problem
Selecting the right data visualization for your business problemSelecting the right data visualization for your business problem
Selecting the right data visualization for your business problem
 
Traffic & Conversion Summit 2018 Weapons of Mass Conversion Marketing Tools 2018
Traffic & Conversion Summit 2018 Weapons of Mass Conversion Marketing Tools 2018Traffic & Conversion Summit 2018 Weapons of Mass Conversion Marketing Tools 2018
Traffic & Conversion Summit 2018 Weapons of Mass Conversion Marketing Tools 2018
 
What Is Data Science? | Introduction to Data Science | Data Science For Begin...
What Is Data Science? | Introduction to Data Science | Data Science For Begin...What Is Data Science? | Introduction to Data Science | Data Science For Begin...
What Is Data Science? | Introduction to Data Science | Data Science For Begin...
 

More from Brendan Tierney

Ireland OUG Meetup May 2017
Ireland OUG Meetup May 2017Ireland OUG Meetup May 2017
Ireland OUG Meetup May 2017
Brendan Tierney
 
Embedded R Execution using SQL
Embedded R Execution using SQLEmbedded R Execution using SQL
Embedded R Execution using SQL
Brendan Tierney
 
Introduction to Map-Reduce
Introduction to Map-ReduceIntroduction to Map-Reduce
Introduction to Map-Reduce
Brendan Tierney
 
Overview of Hadoop and HDFS
Overview of Hadoop and HDFSOverview of Hadoop and HDFS
Overview of Hadoop and HDFS
Brendan Tierney
 
Overview of running R in the Oracle Database
Overview of running R in the Oracle DatabaseOverview of running R in the Oracle Database
Overview of running R in the Oracle Database
Brendan Tierney
 
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
 

More from Brendan Tierney (7)

Ireland OUG Meetup May 2017
Ireland OUG Meetup May 2017Ireland OUG Meetup May 2017
Ireland OUG Meetup May 2017
 
Embedded R Execution using SQL
Embedded R Execution using SQLEmbedded R Execution using SQL
Embedded R Execution using SQL
 
Introduction to Map-Reduce
Introduction to Map-ReduceIntroduction to Map-Reduce
Introduction to Map-Reduce
 
Overview of Hadoop and HDFS
Overview of Hadoop and HDFSOverview of Hadoop and HDFS
Overview of Hadoop and HDFS
 
Overview of running R in the Oracle Database
Overview of running R in the Oracle DatabaseOverview of running R in the Oracle Database
Overview of running R in the Oracle Database
 
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
 

Recently uploaded

社内勉強会資料_Hallucination of LLMs               .
社内勉強会資料_Hallucination of LLMs               .社内勉強会資料_Hallucination of LLMs               .
社内勉強会資料_Hallucination of LLMs               .
NABLAS株式会社
 
Senior Engineering Sample EM DOE - Sheet1.pdf
Senior Engineering Sample EM DOE  - Sheet1.pdfSenior Engineering Sample EM DOE  - Sheet1.pdf
Senior Engineering Sample EM DOE - Sheet1.pdf
Vineet
 
一比一原版南昆士兰大学毕业证如何办理
一比一原版南昆士兰大学毕业证如何办理一比一原版南昆士兰大学毕业证如何办理
一比一原版南昆士兰大学毕业证如何办理
ugydym
 
Build applications with generative AI on Google Cloud
Build applications with generative AI on Google CloudBuild applications with generative AI on Google Cloud
Build applications with generative AI on Google Cloud
Márton Kodok
 
一比一原版卡尔加里大学毕业证(uc毕业证)如何办理
一比一原版卡尔加里大学毕业证(uc毕业证)如何办理一比一原版卡尔加里大学毕业证(uc毕业证)如何办理
一比一原版卡尔加里大学毕业证(uc毕业证)如何办理
oaxefes
 
一比一原版加拿大麦吉尔大学毕业证(mcgill毕业证书)如何办理
一比一原版加拿大麦吉尔大学毕业证(mcgill毕业证书)如何办理一比一原版加拿大麦吉尔大学毕业证(mcgill毕业证书)如何办理
一比一原版加拿大麦吉尔大学毕业证(mcgill毕业证书)如何办理
agdhot
 
Drownings spike from May to August in children
Drownings spike from May to August in childrenDrownings spike from May to August in children
Drownings spike from May to August in children
Bisnar Chase Personal Injury Attorneys
 
Senior Software Profiles Backend Sample - Sheet1.pdf
Senior Software Profiles  Backend Sample - Sheet1.pdfSenior Software Profiles  Backend Sample - Sheet1.pdf
Senior Software Profiles Backend Sample - Sheet1.pdf
Vineet
 
一比一原版悉尼大学毕业证如何办理
一比一原版悉尼大学毕业证如何办理一比一原版悉尼大学毕业证如何办理
一比一原版悉尼大学毕业证如何办理
keesa2
 
Sid Sigma educational and problem solving power point- Six Sigma.ppt
Sid Sigma educational and problem solving power point- Six Sigma.pptSid Sigma educational and problem solving power point- Six Sigma.ppt
Sid Sigma educational and problem solving power point- Six Sigma.ppt
ArshadAyub49
 
Template xxxxxxxx ssssssssssss Sertifikat.pptx
Template xxxxxxxx ssssssssssss Sertifikat.pptxTemplate xxxxxxxx ssssssssssss Sertifikat.pptx
Template xxxxxxxx ssssssssssss Sertifikat.pptx
TeukuEriSyahputra
 
一比一原版美国帕森斯设计学院毕业证(parsons毕业证书)如何办理
一比一原版美国帕森斯设计学院毕业证(parsons毕业证书)如何办理一比一原版美国帕森斯设计学院毕业证(parsons毕业证书)如何办理
一比一原版美国帕森斯设计学院毕业证(parsons毕业证书)如何办理
asyed10
 
A gentle exploration of Retrieval Augmented Generation
A gentle exploration of Retrieval Augmented GenerationA gentle exploration of Retrieval Augmented Generation
A gentle exploration of Retrieval Augmented Generation
dataschool1
 
一比一原版(uom毕业证书)曼彻斯特大学毕业证如何办理
一比一原版(uom毕业证书)曼彻斯特大学毕业证如何办理一比一原版(uom毕业证书)曼彻斯特大学毕业证如何办理
一比一原版(uom毕业证书)曼彻斯特大学毕业证如何办理
osoyvvf
 
SAP BW4HANA Implementagtion Content Document
SAP BW4HANA Implementagtion Content DocumentSAP BW4HANA Implementagtion Content Document
SAP BW4HANA Implementagtion Content Document
newdirectionconsulta
 
Bangalore ℂall Girl 000000 Bangalore Escorts Service
Bangalore ℂall Girl 000000 Bangalore Escorts ServiceBangalore ℂall Girl 000000 Bangalore Escorts Service
Bangalore ℂall Girl 000000 Bangalore Escorts Service
nhero3888
 
Overview IFM June 2024 Consumer Confidence INDEX Report.pdf
Overview IFM June 2024 Consumer Confidence INDEX Report.pdfOverview IFM June 2024 Consumer Confidence INDEX Report.pdf
Overview IFM June 2024 Consumer Confidence INDEX Report.pdf
nhutnguyen355078
 
Discovering Digital Process Twins for What-if Analysis: a Process Mining Appr...
Discovering Digital Process Twins for What-if Analysis: a Process Mining Appr...Discovering Digital Process Twins for What-if Analysis: a Process Mining Appr...
Discovering Digital Process Twins for What-if Analysis: a Process Mining Appr...
Marlon Dumas
 
一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理
一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理
一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理
ytypuem
 
一比一原版马来西亚博特拉大学毕业证(upm毕业证)如何办理
一比一原版马来西亚博特拉大学毕业证(upm毕业证)如何办理一比一原版马来西亚博特拉大学毕业证(upm毕业证)如何办理
一比一原版马来西亚博特拉大学毕业证(upm毕业证)如何办理
eudsoh
 

Recently uploaded (20)

社内勉強会資料_Hallucination of LLMs               .
社内勉強会資料_Hallucination of LLMs               .社内勉強会資料_Hallucination of LLMs               .
社内勉強会資料_Hallucination of LLMs               .
 
Senior Engineering Sample EM DOE - Sheet1.pdf
Senior Engineering Sample EM DOE  - Sheet1.pdfSenior Engineering Sample EM DOE  - Sheet1.pdf
Senior Engineering Sample EM DOE - Sheet1.pdf
 
一比一原版南昆士兰大学毕业证如何办理
一比一原版南昆士兰大学毕业证如何办理一比一原版南昆士兰大学毕业证如何办理
一比一原版南昆士兰大学毕业证如何办理
 
Build applications with generative AI on Google Cloud
Build applications with generative AI on Google CloudBuild applications with generative AI on Google Cloud
Build applications with generative AI on Google Cloud
 
一比一原版卡尔加里大学毕业证(uc毕业证)如何办理
一比一原版卡尔加里大学毕业证(uc毕业证)如何办理一比一原版卡尔加里大学毕业证(uc毕业证)如何办理
一比一原版卡尔加里大学毕业证(uc毕业证)如何办理
 
一比一原版加拿大麦吉尔大学毕业证(mcgill毕业证书)如何办理
一比一原版加拿大麦吉尔大学毕业证(mcgill毕业证书)如何办理一比一原版加拿大麦吉尔大学毕业证(mcgill毕业证书)如何办理
一比一原版加拿大麦吉尔大学毕业证(mcgill毕业证书)如何办理
 
Drownings spike from May to August in children
Drownings spike from May to August in childrenDrownings spike from May to August in children
Drownings spike from May to August in children
 
Senior Software Profiles Backend Sample - Sheet1.pdf
Senior Software Profiles  Backend Sample - Sheet1.pdfSenior Software Profiles  Backend Sample - Sheet1.pdf
Senior Software Profiles Backend Sample - Sheet1.pdf
 
一比一原版悉尼大学毕业证如何办理
一比一原版悉尼大学毕业证如何办理一比一原版悉尼大学毕业证如何办理
一比一原版悉尼大学毕业证如何办理
 
Sid Sigma educational and problem solving power point- Six Sigma.ppt
Sid Sigma educational and problem solving power point- Six Sigma.pptSid Sigma educational and problem solving power point- Six Sigma.ppt
Sid Sigma educational and problem solving power point- Six Sigma.ppt
 
Template xxxxxxxx ssssssssssss Sertifikat.pptx
Template xxxxxxxx ssssssssssss Sertifikat.pptxTemplate xxxxxxxx ssssssssssss Sertifikat.pptx
Template xxxxxxxx ssssssssssss Sertifikat.pptx
 
一比一原版美国帕森斯设计学院毕业证(parsons毕业证书)如何办理
一比一原版美国帕森斯设计学院毕业证(parsons毕业证书)如何办理一比一原版美国帕森斯设计学院毕业证(parsons毕业证书)如何办理
一比一原版美国帕森斯设计学院毕业证(parsons毕业证书)如何办理
 
A gentle exploration of Retrieval Augmented Generation
A gentle exploration of Retrieval Augmented GenerationA gentle exploration of Retrieval Augmented Generation
A gentle exploration of Retrieval Augmented Generation
 
一比一原版(uom毕业证书)曼彻斯特大学毕业证如何办理
一比一原版(uom毕业证书)曼彻斯特大学毕业证如何办理一比一原版(uom毕业证书)曼彻斯特大学毕业证如何办理
一比一原版(uom毕业证书)曼彻斯特大学毕业证如何办理
 
SAP BW4HANA Implementagtion Content Document
SAP BW4HANA Implementagtion Content DocumentSAP BW4HANA Implementagtion Content Document
SAP BW4HANA Implementagtion Content Document
 
Bangalore ℂall Girl 000000 Bangalore Escorts Service
Bangalore ℂall Girl 000000 Bangalore Escorts ServiceBangalore ℂall Girl 000000 Bangalore Escorts Service
Bangalore ℂall Girl 000000 Bangalore Escorts Service
 
Overview IFM June 2024 Consumer Confidence INDEX Report.pdf
Overview IFM June 2024 Consumer Confidence INDEX Report.pdfOverview IFM June 2024 Consumer Confidence INDEX Report.pdf
Overview IFM June 2024 Consumer Confidence INDEX Report.pdf
 
Discovering Digital Process Twins for What-if Analysis: a Process Mining Appr...
Discovering Digital Process Twins for What-if Analysis: a Process Mining Appr...Discovering Digital Process Twins for What-if Analysis: a Process Mining Appr...
Discovering Digital Process Twins for What-if Analysis: a Process Mining Appr...
 
一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理
一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理
一比一原版(曼大毕业证书)曼尼托巴大学毕业证如何办理
 
一比一原版马来西亚博特拉大学毕业证(upm毕业证)如何办理
一比一原版马来西亚博特拉大学毕业证(upm毕业证)如何办理一比一原版马来西亚博特拉大学毕业证(upm毕业证)如何办理
一比一原版马来西亚博特拉大学毕业证(upm毕业证)如何办理
 

SQL : The one language to rule all your data

  • 1. 06/03/2018 1 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com The one language to rule all your data Brendan Tierney www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 2. 06/03/2018 2 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com § Data Warehousing since 1997 § Data Mining since 1998 § Analytics since 1993 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 3. 06/03/2018 3 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com April 2017 : http://blog.sqlizer.io/posts/sql-43/ www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 5. 06/03/2018 5 Analyze SELECT product, SUM(sale) AS "Total Sales" FROM order_details GROUP BY product; Analyze SELECT product, SUM(sale) AS "Total Sales" FROM order_details GROUP BY product HAVING SUM(sale) >= 10000; COUNT AVG MIN MAX MEAN MODE … SELECT gcc.segment1 AS bal_seg, hi.parent_flex_value AS bu_rollup_group, gcc.segment2 AS business_unit, gcc.segment3 AS LOB, gcc.segment4 AS ACCOUNT, gcc.segment5 AS department, gcc.segment6 AS product, gcc.segment7 AS responsibility_center, gcc.segment8 AS sub_department, TRUNC (gjl.creation_date) AS je_line_creation_date, gjh.name AS je_name, gjb.name AS je_batch_name, TO_CHAR (prds.end_date, 'yyyy/mm') AS period_name, gjb.status batch_status, gjl.je_line_num AS JE_LINE_NUMBER, CASE NVL(xdl.application_id,0) WHEN 0 THEN NVL(gjl.entered_dr,0) ELSE NVL(xdl.unrounded_entered_dr,0) END entered_dr, CASE NVL(xdl.application_id,0) WHEN 0 THEN NVL(gjl.entered_cr,0) ELSE NVL(xdl.unrounded_entered_cr,0) END entered_cr, gjl.description AS je_line_description, aps.segment1 AS vendor_number, NVL(aps.vendor_name, gjl.attribute1) AS vendor_name, NVL(aia.invoice_num, gjl.attribute3) AS invoice_number, aia.invoice_date, NVL(pha.segment1, gjl.attribute2) AS po_number, NVL(aida.attribute5, gjl.attribute4) AS beginning_service_date, NVL(aida.attribute6, gjl.attribute5) AS ending_service_date, ppa.segment1 AS project_number, gjl.attribute6 AS payroll_check_number, gjc.user_je_category_name AS JE_CATEGORY_NAME, gjh.posted_date, gjh.description AS JE_HEADER_DESCRIPTION, DECODE (gjh.actual_flag, 'A', 'A', 'B') actual_flag, TRUNC (gjh.creation_date) AS JE_CREATED_ON_DATE, gjs.user_je_source_name AS JE_SOURCE_NAME, gjl.code_combination_id, NVL (gjl.attribute7, papf.full_name) AS created_by, T1.file_name AS ipm_image_id, T1.url, hi.division AS division, hi.parent_flex_value AS region, aia.invoice_id, NVL(MAIN_DOC.ipm_image_flg,'N') AS ipm_image_flg, NVL(MAIN_DOC.IMAGE_CNT,0) AS ipm_image_cnt, gjl.je_line_num, gjl.je_header_id FROM apps.gl_je_headers gjh inner join apps.gl_je_batches gjb on gjh.je_batch_id = gjb.je_batch_id and gjb.status = 'P' inner join apps.gl_je_sources gjs on gjh.je_source = gjs.je_source_name
  • 6. 06/03/2018 6 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Let us start with some Basics
  • 7. 06/03/2018 7 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 8. 06/03/2018 8 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 9. 06/03/2018 9 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com SUM(x) AVG(x) STDDEV(x) CORR(x, y) www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 10. 06/03/2018 10 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 11. 06/03/2018 11 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Creating a story about our data. www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 12. 06/03/2018 12 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com How we do Analytics? Sometimes how we are told how to do Analytics www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Do we really need to use other tools & languages?
  • 13. 06/03/2018 13 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 14. 06/03/2018 14 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com But ! www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com But !
  • 15. 06/03/2018 15 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com But ! Our data no longer fits on our laptop. a Big Data issue? Creating Data Silos is BAD This kind of approach is BAD This approach does not scale – this is BAD www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 16. 06/03/2018 16 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.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 exception at 2GB. § Parallelization can be challenge. Is not Default. Packages available § Production Deployment § Difficulties deploying R in production § Typically need to re-code in ….. www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com I’m getting too old for this new stuff ! Can you teach an old dog new tricks?
  • 17. 06/03/2018 17 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com What if you could use the language and skills you already have? www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Did you know?
  • 18. 06/03/2018 18 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Statistical Functions in Oracle All of these are FREE with the Database These are often forgotten about www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 19. 06/03/2018 19 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com R for Data Profiling www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com I didn’t
  • 20. 06/03/2018 20 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com DBMS_STAT_FUNC
  • 21. 06/03/2018 21 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com set serveroutput on declare s DBMS_STAT_FUNCS.SummaryType; begin DBMS_STAT_FUNCS.SUMMARY('DMUSER', 'MINING_DATA_BUILD_V', 'AGE', 3, s); dbms_output.put_line('SUMMARY STATISTICS'); dbms_output.put_line('Count : '||s.count); dbms_output.put_line('Min : '||s.min); dbms_output.put_line('Max : '||s.max); dbms_output.put_line('Range : '||s.range); dbms_output.put_line('Mean : '||round(s.mean)); dbms_output.put_line('Mode Count : '||s.cmode.count); dbms_output.put_line('Mode : '||s.cmode(1)); dbms_output.put_line('Variance : '||round(s.variance)); dbms_output.put_line('Stddev : '||round(s.stddev)); dbms_output.put_line('Quantile 5 : '||s.quantile_5); dbms_output.put_line('Quantile 25 : '||s.quantile_25); dbms_output.put_line('Median : '||s.median); dbms_output.put_line('Quantile 75 : '||s.quantile_75); dbms_output.put_line('Quantile 95 : '||s.quantile_95); dbms_output.put_line('Extreme Count : '||s.extreme_values.count); dbms_output.put_line('Extremes : '||s.extreme_values(1)); dbms_output.put_line('Top 5 : '||s.top_5_values(1)||','|| s.top_5_values(2)||','|| s.top_5_values(3)||','|| s.top_5_values(4)||','|| s.top_5_values(5)); dbms_output.put_line('Bottom 5 : '||s.bottom_5_values(5)||','|| s.bottom_5_values(4)||','|| s.bottom_5_values(3)||','|| s.bottom_5_values(2)||','|| s.bottom_5_values(1)); end; http://www.oralytics.com/2013/04/part-1getting-started-with-statistics.html www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Stats and More Stats § Correlations (Spearman’s, Kendall) § Linear Regression § T-Test § F-Test § Hypothesis testing § Anova § Ranking § Window Aggregate functions § Lead / Lag § Cross Tabulation § PIVOT / UNPIVOT § …
  • 22. 06/03/2018 22 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 23. 06/03/2018 23 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Scalable Highly Secure No Data Movement Real Time Production Deployment Faster
  • 24. 06/03/2018 24 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 25. 06/03/2018 25 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 26. 06/03/2018 26 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Comprehensive Machine Learning Platform www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Oracle Data Mining § PL/SQL Package § DBMS_DATA_MINING § DBMS_DATA_MINING_TRANSFORM § DBMS_PREDICTIVE_ANALYTICS § SQL Functions – PREDICTION – PREDICTION_PROBABILITY – PREDICTION_BOUNDS – PREDICTION_COST – PREDICTION_DETAILS – PREDICTION_SET – CLUSTER_ID – CLUSTER_DETAILS – CLUSTER_DISTANCE – CLUSTER_PROBABILITY – CLUSTER_SET – FEATURE_ID – FEATURE_DETAILS – FEATURE_SET – FEATURE_VALUE § 12c – Predictive Queries § aka Dynamic Queries § Transitive dynamic Data Mining models § Can scale to many 100+ models all in one statement
  • 27. 06/03/2018 27 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com select cust_id, affinity_card, PREDICTION( FOR to_char(affinity_card) USING *) OVER () pred_affinity_card from mining_data_build_v; PQ to predict the AFFINITY_CARD value. Using all the data USING * www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com select cust_id, affinity_card, PREDICTION( FOR to_char(affinity_card) USING *) OVER () pred_affinity_card from mining_data_build_v; With PQs we can dynamically create new DM models based on an Attribute(s)
  • 28. 06/03/2018 28 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com select cust_id, affinity_card, PREDICTION( FOR to_char(affinity_card) USING *) OVER (PARTITION BY "COUNTRY_NAME") pred_affinity_card from mining_data_build_v; A new DM Model will be created for each Country (19) With PQs we can dynamically create new DM models based on an Attribute(s) www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Analytic Functions (in 12c) >46 Analytics Functions in 12c
  • 29. 06/03/2018 29 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com What about R ?
  • 30. 06/03/2018 30 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com -- -- There are 2 ways to use the GLM model : in Batch and in Real-Time mode -- -- First Step : Build the in-database R script to score you new data -- Begin sys.rqScriptDrop('Demo_GLM_Batch'); sys.rqScriptCreate('Demo_GLM_Batch', 'function(dat, datastore_name) { ore.load(datastore_name) prd <- predict(mod, newdata=dat) prd[as.integer(rownames(prd))] <- prd res <- cbind(dat, PRED = prd) res}'); end; / -- -- Now you can run the script to score the new data in Batch model -- The data is located in the table MINING_DATA_APPLY -- select * from table(rqTableEval( cursor(select CUST_GENDER, AGE, CUST_MARITAL_STATUS, COUNTRY_NAME, CUST_INCOME_LEVEL, EDUCATION, HOUSEHOLD_SIZE, YRS_RESIDENCE from MINING_DATA_APPLY_V where rownum <= 10), cursor(select 1 as "ore.connect", 'myDatastore' as "datastore_name" from dual), 'select CUST_GENDER, AGE, CUST_MARITAL_STATUS, COUNTRY_NAME, CUST_INCOME_LEVEL, EDUCATION, HOUSEHOLD_SIZE, YRS_RESIDENCE, 1 PRED from MINING_DATA_APPLY_V','Demo_GLM_Batch')) order by 1, 2, 3; www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 31. 06/03/2018 31 Store Access Analyze Protect Oracle is no longer a Relational Database But is more like a Polyglot or Multi-modal Database www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com External View External View Conceptual Schema Physical Schema
  • 32. 06/03/2018 32 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com CREATE TABLE countries_ext ( country_code VARCHAR2(5), country_name VARCHAR2(50), country_language VARCHAR2(50) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY ext_tab_data ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ',' MISSING FIELD VALUES ARE NULL ( country_code CHAR(5), country_name CHAR(50), country_language CHAR(50) ) ) LOCATION ('Countries1.txt','Countries2.txt') ) PARALLEL 5 REJECT LIMIT UNLIMITED; SELECT * FROM countries_ext ORDER BY country_name; COUNT COUNTRY_NAME COUNTRY_LANGUAGE ----- ---------------------------- ----------------------------- ENG England English FRA France French GER Germany German IRE Ireland English External View External View Conceptual Schema Physical Schema www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com CREATE_TABLE CUSTOMER_RAWDATA ( customer_number NUMBER, customer_name VARCHAR2(50), postal_code VARCHAR2 (5) ) ORGANIZATION EXTERNAL ( type oracle_hdfs default directory TEMP access parameters ( com.oracle.bigdata.cluster = hadoop_clust com.oracle.bigdata.rowformat = delimited fields terminated by ',' ) location('hdfs/p1a.dat', 'hdfs/p1b.dat', 'hdfs/p2.dat', 'hdfs/p3.dat' ) ); External View External View Conceptual Schema Physical Schema Partitioned External tables (new in 12.2) Data is stored on our Hadoop cluster Problem: We still need to scan all the files for the data we need We may not get the degree of parallelism we want. But with Partitioned External tables we can provide meta-data Data is stored in many files
  • 33. 06/03/2018 33 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com CREATE_TABLE CUSTOMER_RAWDATA ( customer_number NUMBER, customer_name VARCHAR2(50), postal_code VARCHAR2 (5) ) ORGANIZATION EXTERNAL ( type oracle_hdfs default directory TEMP access parameters ( com.oracle.bigdata.cluster = hadoop_clust com.oracle.bigdata.rowformat = delimited fields terminated by ',' ) location('hdfs/p1a.dat', 'hdfs/p1b.dat', 'hdfs/p2.dat', 'hdfs/p3.dat' ) ); External View External View Conceptual Schema Physical Schema Partitioned External tables (new in 12.2) www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com CREATE_TABLE CUSTOMER_RAWDATA ( customer_number NUMBER, customer_name VARCHAR2(50), postal_code VARCHAR2 (5) ) ORGANIZATION EXTERNAL ( type oracle_hdfs default directory TEMP access parameters ( com.oracle.bigdata.cluster = hadoop_clust com.oracle.bigdata.rowformat = delimited fields terminated by ',' ) partition by range(customer_number) ( partition p1 values less than (100) location('hdfs/p1a.dat', 'hdfs/p1b.dat'), partition p2 values less than (200) location('hdfs/p2.dat'), partition p3 values less than (300) location('hdfs/p3.dat') ) ); External View External View Conceptual Schema Physical Schema Partitioned External tables (new in 12.2) Now we get Partition elimination Only really works if the data is natively partitioned when files are created. and does this correctly every time !!! Doesn’t have to be on Hadoop. Also works with files on server.
  • 34. 06/03/2018 34 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com CREATE TABLE json_dump_file_contents ( json_document CLOB ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY order_entry_dir ACCESS PARAMETERS ( RECORDS DELIMITED BY 0x'0A' DISABLE_DIRECTORY_LINK_CHECK BADFILE loader_output_dir: 'JSONDumpFile.bad' LOGFILE order_entry_dir: 'JSONDumpFile.log' FIELDS ( json_document CHAR(5000) ) ) LOCATION (order_entry_dir:'PurchaseOrders.dmp') ) PARALLEL REJECT LIMIT UNLIMITED; SELECT count(*) FROM json_dump_file_contents po WHERE to_number(json_value(json_document, '$.PONumber')) > 1500; External View External View Conceptual Schema Physical Schema www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com CREATE TABLE json_documents ( id RAW(16) NOT NULL, data CLOB, CONSTRAINT json_documents_pk PRIMARY KEY (id), CONSTRAINT json_documents_json_chk CHECK (data IS JSON (STRICT) ) ); INSERT INTO json_documents (id, data) VALUES (SYS_GUID(), '{ "FirstName" : ”Brendan", "LastName" : ”Tierney", "Job" : "Clerk", "Address" : { "Street" : ”1 Main Street", "City" : ”Dublin", "Country" : ”Ireland”}, "ContactDetails" : { "Email" : ”xyz@oralytics.com", "Phone" : ”353 123 1234567", "Twitter" : "@brendantierney" }, "DateOfBirth" : "01-JAN-2000", "Active" : unknown }'); SELECT a.data.FirstName, a.data.LastName, a.data.ContactDetails.Email AS Email FROM json_documents a ORDER BY a.data.FirstName, a.data.LastName; FIRSTNAME LASTNAME EMAIL --------------- --------------- ------------------------- Brendan Tierney xyz@oralytics.com External View External View Conceptual Schema Physical Schema
  • 35. 06/03/2018 35 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com CREATE TABLE customer ( id NUMBER(38), name VARCHAR2(100), address VARCHAR2(100), city VARCHAR2(40), country VARCHAR2(50), location MDSYS.SDO_GEOMETRY ); INSERT INTO customer VALUES ( cust_seq.nextval,‘Brendan Tierney’, ‘1 Main Street’, ‘Dublin’, ‘Ireland’, SDO_GEOMETRY (2001, -- Geometry Type: 2-D Point 8307, -- SRID, Datum: WGS84 SDO_POINT_TYPE (53.3498, -- Longitude for Dublin 6.2603, -- Latitude for Dublin NULL), NULL, NULL ) ) SELECT sdo_geom.sdo_distance(c1.locationm c2.location, 0.5, ‘unit=kilometer’) FROM customer c1, customer c2 WHERE c1.id = 1 AND c2.id = 2; External View External View Conceptual Schema Physical Schema Spatial & Graph www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Using Oracle Big Data SQL, organizations can: • Combine data from Oracle Database, Apache Hadoop and NoSQL in a single SQL query • Query and analyze data In Apache Hadoop and NoSQL • Maximize query performance on all data using advanced techniques like Smart Scan, Partition Pruning, Storage Indexes, Bloom Filters and Predicate Push-Down in a distributed architecture • Integrate big data analyses into existing applications and architectures External View External View Conceptual Schema Physical Schema Spatial & Graph Oracle NoSQL Lots more Data Sources coming available
  • 36. 06/03/2018 36 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com External View External View Conceptual Schema Physical Schema Spatial & Graph Oracle NoSQL Accessing data on Hadoop or an Oracle NoSQL Database requires access via Hive/HCatalog. To use this Hadoop or NoSQL data • Creating a NoSQL Store and a Table (or Hadoop data) • Configuring Hive/HCatalog to access NoSQL Table or other data • Configuring Oracle Database to talk to HCatalog via an external table Lots more Data Sources coming available www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com External View External View Conceptual Schema Physical Schema Spatial & Graph Oracle NoSQL CREATE TABLE movieapp_log_json ( custid INTEGER , movieid INTEGER , genreid INTEGER , time VARCHAR2 (20) , recommended VARCHAR2 (4) , activity NUMBER, rating INTEGER, price NUMBER ) ORGANIZATION EXTERNAL ( TYPE ORACLE_HIVE DEFAULT DIRECTORY DEFAULT_DIR ) REJECT LIMIT UNLIMITED; SELECT f.custid, m.title, m.year, m.gross, f.rating FROM movieapp_log_json f, movie m WHERE f.movieId = m.movie_id AND f.rating > 4 Selects Hadoop data and in-database data
  • 38. 06/03/2018 38 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Data Security § Can apply all the typical data security that comes with Oracle on all our data – Masking/Redaction – Virtual Private Databases – Fine-grained access control www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Store Access Analyze Protect External View External View Conceptual Schema Physical Schema Spatial & Graph Oracle NoSQL
  • 39. 06/03/2018 39 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com SQL One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them Sauron – Lord of the Rings
  • 40. 06/03/2018 40 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com SQL One SQL to rule them all, One SQL to find them, One SQL to bring them all and in the Database bind them Sauron – Lord of the Rings Brendan Tierney www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com SQL One Language to rule them all, One Language to find them, One Language to bring them all and in the Database bind them Sauron – Lord of the Rings Brendan Tierney
  • 41. 06/03/2018 41 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 42. 06/03/2018 42 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com
  • 43. 06/03/2018 43 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com The one language to rule all your data
  • 44. 06/03/2018 44 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com brendan.tierney@oralytics.com @brendantierney www.oralytics.com ie.linkedin.com/in/brendantierney www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com http://www.cafepress.com/oralytics
  • 45. 06/03/2018 45 www.oralytics.com t : @brendantierney e : brendan.tierney@oralytics.com Word Cloud of the Oracle Advanced Analytics web-pages http://www.oralytics.com/2015/01/creating-word-cloud-of-oracle-oaa.html 3 Membership Tiers • Oracle ACE Director • Oracle ACE • Oracle ACE Associate bit.ly/OracleACEProgram 500+ Technical Experts Helping Peers Globally Connect: Nominate yourself or someone you know: acenomination.oracle.com @oracleace Facebook.com/oracleaces oracle-ace_ww@oracle.com