SlideShare a Scribd company logo
1 of 77
Back2Basics
A day in the life of an Oracle BI query
www.dimensionality.ch @Nephentur #obihackers | freenode
• Owner of Dimensionality GmbH in Switzerland
• Hacking OBI since 2001 (nQuire + Peregrin aquisitions by Siebel)
• Oracle ACE Associate BI/DWH
• Speaker at OpenWorld, KScope, regional Oracle User Groups...
• Part-time blogger on Oracle BI (http://dimensionality.ch)
• Full-time IRC (freenode | #obihackers) and OTN addict
• Oracle BI trainer for Oracle University since 2006
• Proud geek and gamer
• Responding to any and all questions 24 / 7 – especially on IRC
Who am I?
www.dimensionality.ch @Nephentur #obihackers | freenode
Who am I?
www.dimensionality.ch @Nephentur #obihackers | freenode
Outline
• Why this presentation
• Overview / What the packaging says
• VA / DV / DVD / BICS / ASCS
• The actual day in the life of a query
• Query execution details
• Summary
www.dimensionality.ch @Nephentur #obihackers | freenode
Outline
• Why this presentation
• Overview / What the packaging says
• VA / DV / DVD / BICS / ASCS
• The actual day in the life of a query
• Query execution details
• Summary
www.dimensionality.ch @Nephentur #obihackers | freenode
Why this presentation?
• Oracle BI has matured and is quite wide-spread
• As a result it’s often done worse than ever…
• Problem being: core of a whole range of products
• Hence: Back to basics presentation series
• Not understanding and comprehending query mechanisms is a
cardinal sin for any developer
• And no, “cloud” doesn’t eliminate the need for “comprehension”
www.dimensionality.ch @Nephentur #obihackers | freenode
Why this presentation?
• Alternative title “A normal day on the OTN forums”
www.dimensionality.ch @Nephentur #obihackers | freenode
Why this presentation?
• Going more into details from my “Worst practices” presentation
www.dimensionality.ch @Nephentur #obihackers | freenode
Why this presentation?
• Alleviate your struggle
• How can I get from front-end problems to the actual root cause?
• Why is my report returning the data it does?
• Why do I get old data back? (Spoiler alert: Cache!)
• Where can I find all bits and pieces of information for my
investigation?
• Why doesn’t my request hit the source I thought it would?
• Why does it bypass our aggregate tables?
• If I change the RPD – what will be the impact?
www.dimensionality.ch @Nephentur #obihackers | freenode
Why this presentation?
Simply put:
Without a solid understanding of how and why
queries function inside the Oracle BI core you will have
a very hard time of analyzing any issue pertaining to
data, aggregations, modelling, performance etc. !
www.dimensionality.ch @Nephentur #obihackers | freenode
Outline
• Why this presentation
• Overview / What the packaging says
• VA / DV / DVD / BICS / ASCS
• The actual day in the life of a query
• Query execution details
• Summary
www.dimensionality.ch @Nephentur #obihackers | freenode
What the packaging says
www.dimensionality.ch @Nephentur #obihackers | freenode
What the packaging says
www.dimensionality.ch @Nephentur #obihackers | freenode
What the packaging says
www.dimensionality.ch @Nephentur #obihackers | freenode
And “under the covers”?
www.dimensionality.ch @Nephentur #obihackers | freenode
Needs
more
detail…
A little archeology
www.dimensionality.ch @Nephentur #obihackers | freenode
Wait, wait…
www.dimensionality.ch @Nephentur #obihackers | freenode
…did you just say “Siebel Analytics”; so what about versions?
Wait, wait…
www.dimensionality.ch @Nephentur #obihackers | freenode
…did you just say “Siebel Analytics”; so what about versions?
Wait, wait…
www.dimensionality.ch @Nephentur #obihackers | freenode
…did you just say “Siebel Analytics”; so what about versions?
Outline
• Why this presentation
• Overview / What the packaging says
• VA / DV / DVD / BICS / ASCS
• The actual day in the life of a query
• Query execution details
• Summary
www.dimensionality.ch @Nephentur #obihackers | freenode
VA / DV / DVD / BICS / ASCS?
www.dimensionality.ch @Nephentur #obihackers | freenode
But Christian it’s all about cloud, data visualization and mashups now!
Surely I don’t need to bother with all this query stuff?
VA / DV / DVD / BICS?
www.dimensionality.ch @Nephentur #obihackers | freenode
VA / DV / DVD / BICS?
www.dimensionality.ch @Nephentur #obihackers | freenode
VA / DV / DVD / BICS?
www.dimensionality.ch @Nephentur #obihackers | freenode
But Christian it’s all about data visualization and mashups now! Surely I
don’t need to bother with all this?
So what about VA / DV / DVD / BICS?
www.dimensionality.ch @Nephentur #obihackers | freenode
Yes DV/ASCS/BICS are way(s) forward, but…
Really? Think about it:
• They all still access Subject Areas (indirectly)
• Performance problems won’t just automagically disappear
– You’ll probably run into even more thanks to mashups and file uploads
• Just because there are nice graphs doesn’t mean there isn’t still a very
clever system in the background!
• But yes, there’s a new toy and new possibilities
• Watch out for the next dissection talk!
So what about VA / DV / DVD / BICS?
www.dimensionality.ch @Nephentur #obihackers | freenode
Yes VA, DV and DVD are the way forward, but…
Really? Think about it:
• They all still access Subject Areas (indirectly)
• Performance problems won’t just automagically disappear
– You’ll probably run into even more thanks to mashups and file uploads
• Just because there are nice graphs doesn’t mean there isn’t still a very
clever system in the background!
• But yes, there’s a new toy and new possibilities
• Watch out for the next dissection talk!
Outline
• Why this presentation
• Overview / What the packaging says
• VA / DV / DVD / BICS / ASCS
• The actual day in the life of a query
• Query execution details
• Summary
www.dimensionality.ch @Nephentur #obihackers | freenode
The workday
www.dimensionality.ch @Nephentur #obihackers | freenode
?
This is where
very few
magic should
happen
This is where
THE magic
happens
We don’t
really care
about this part
This is where
the actual
workload
should happen
“The workday” aka detailed query flow
www.dimensionality.ch @Nephentur #obihackers | freenode
Browser,
SmartView,
other tools
BI Server
WLS
Managed
Server
Presentation
Server
Sources
Browser,
SmartView,
other tools
BI Server
WLS
Managed
Server
Presentation
Server
To this detail architectureMapping these flow details in the
BI Server
“Magic” details
www.dimensionality.ch @Nephentur #obihackers | freenode
Your friend the log
www.dimensionality.ch @Nephentur
12c: obis1-query.log
11g: nqquery.log
#obihackers | freenode
Your friend the log
www.dimensionality.ch @Nephentur
12c: obis1-query.log
11g: nqquery.log
-------------------- SQL Request, logical request hash:a180d345SET VARIABLE
OBIS_REFRESH_CACHE=1,QUERY_SRC_CD='Report',SAW_SRC_PATH='/users/web
logic/Preso/Main',PREFERRED_CURRENCY='USD',DISABLE_CACHE=1,LOG_LEVEL=
2;
SELECT
0 s_0,
"D - Sample Federated"."Time"."T05 Per Name Year" s_1,
"D - Sample Federated"."Measures"."1a- Revenue (Orcl Db Tables Only)" s_2
FROM "D - Sample Federated"
ORDER BY 2 ASC NULLS LAST
FETCH FIRST 5000001 ROWS ONLY
#obihackers | freenode
Your friend the log
www.dimensionality.ch @Nephentur
12c: obis1-query.log
11g: nqquery.log
-------------------- SQL Request, logical request hash:a180d345SET VARIABLE
OBIS_REFRESH_CACHE=1,QUERY_SRC_CD='Report',SAW_SRC_PATH='/users/web
logic/Preso/Main',PREFERRED_CURRENCY='USD',DISABLE_CACHE=1,LOG_LEVEL=
2;
SELECT
0 s_0,
"D - Sample Federated"."Time"."T05 Per Name Year" s_1,
"D - Sample Federated"."Measures"."1a- Revenue (Orcl Db Tables Only)" s_2
FROM "D - Sample Federated"
ORDER BY 2 ASC NULLS LAST
FETCH FIRST 5000001 ROWS ONLY
[2016-05-27T13:40:38.29+00:00] [OBIS] [TRACE:3] [] [] [ecid: aa89eaf6-8094-
45b1-8c59-ea46b2a1e14e-00008dd6,0:1:17:5] [sik: ssi] [tid: 996f4700]
[messageid: USER-18] [requestid: e295001d] [sessionid: e2950000] [username:
weblogic] -------------------- Sending query to database named 01 - Sample App
Data (ORCL) (id: <<387385>>), connection pool named Sample Relational
Connection, logical request hash a180d345, physical request hash f5274c5e: [[
WITH
SAWITH0 AS (select sum(T418.Revenue) as c1,
T653.Per_Name_Year as c2
From
BISAMPLE.SAMP_TIME_MTH_D T653 /* D02 Time Month Grain */ ,
BISAMPLE.SAMP_REVENUE_F T418 /* F10 Billed Rev */ where (
T418.Bill_Mth_Key = T653.Mth_Key ) group by T653.Per_Name_Year)select
D1.c1 as c1, D1.c2 as c2, D1.c3 as c3 from ( select 0 as c1, D1.c2 as c2, D1.c1
as c3from SAWITH0 D1order by c2 ) D1 where rownum <= 5000001
#obihackers | freenode
Outline
• Why this presentation
• Overview / What the packaging says
• VA / DV / DVD / BICS / ASCS
• The actual day in the life of a query
• Query execution details
• Summary
www.dimensionality.ch @Nephentur #obihackers | freenode
Intelligent Request Generation
www.dimensionality.ch @Nephentur #obihackers | freenode
• Receives the queries from the front-end
• Answers, SmartView, Visual Analyzer,
Data Visualization (Desktop)
• Other tools using the Oracle BI Server
ODBC API or Web Servives
Logical Request Generation
www.dimensionality.ch @Nephentur #obihackers | freenode
• Creates the actual logical request to be
processed
• Doesn’t “write the query”
• Doesn’t decide which business models,
LTSs or sources to use
• Preparation stage for Cache Services and
Navigator
Logical Request Generation
www.dimensionality.ch @Nephentur #obihackers | freenode
-------------------- SQL Request, logical request hash:
ee9cf87d
SET VARIABLE
OBIS_REFRESH_CACHE=1,QUERY_SRC_CD='Report',SAW_SRC_PATH='/users/weblogic/Preso/Main',PREFER
RED_CURRENCY='USD',DISABLE_CACHE=1,LOG_LEVEL=5;
SELECT
0 s_0,
"D - Sample Federated"."Time"."T05 Per Name Year" s_1,
"D - Sample Federated"."Measures"."1a- Revenue (Orcl Db Tables Only)" s_2,
"D - Sample Federated"."Measures"."1b- Revenue (Essbase Cube Only)" s_3
FROM "D - Sample Federated"
ORDER BY 2 ASC NULLS LAST
FETCH FIRST 5000001 ROWS ONLY
Cache Services
www.dimensionality.ch @Nephentur #obihackers | freenode
• Optional step: Caching enabled?
• Checks if request can be fulfilled by existing
cache entries
• Cache doesn’t need to match 1:1
– Existing entries can be aggregated
– Subsets can be extracted
• Cache can be forcibly circumvented
Cache Services
www.dimensionality.ch @Nephentur #obihackers | freenode
• Optional step: Caching enabled?
• Checks if request can be fulfilled by existing
cache entries
• Cache doesn’t need to match 1:1
– Existing entries can be aggregated
– Subsets can be extracted
• Cache can be forcibly circumvented
Cache Services
www.dimensionality.ch @Nephentur #obihackers | freenode
• Optional step: Caching enabled?
• Checks if request can be fulfilled by existing
cache entries
• Cache doesn’t need to match 1:1
– Existing entries can be aggregated
– Subsets can be extracted
• Cache can be forcibly circumvented-------------------- SQL Request, logical request hash:
ee9cf87d
SET VARIABLE
OBIS_REFRESH_CACHE=1,QUERY_SRC_CD='Report',SAW_SRC_PATH='/users/weblogic/Preso/Main',PREFER
RED_CURRENCY='USD',DISABLE_CACHE=1,LOG_LEVEL=5;
[…]
ORDER BY 2 ASC NULLS LAST
FETCH FIRST 5000001 ROWS ONLY
Cache Services
www.dimensionality.ch @Nephentur #obihackers | freenode
• All SELECT columns
– Existing in cache entries or
– Derived from cache entries (bins, substring or
other analysis-based formulas/functions)
• WHERE clause must match or be a subset
of cache entries
– Query for 10 US states will hit a cache entry containing all
the US states
• Join conditions must match or be a subset
Cache Services
www.dimensionality.ch @Nephentur #obihackers | freenode
Cache Services
www.dimensionality.ch @Nephentur #obihackers | freenode
[2016-05-28T15:18:40.151+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-
dd95618de970-000006a9,0:1:23:5] [sik: ssi] [tid: df80700] [messageid: USER-18] [requestid: f7340009]
[sessionid: f7340000] [username: weblogic] -------------------- Sending query to database named 01 -
Sample App Data (ORCL) (id: <<112556>>), connection pool named Sample Relational Connection,
logical request hash e019650e, physical request hash 61dd43b2: [[
WITH
SAWITH0 AS (select distinct T795.PER_NAME_YEAR as c1
from
BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ )
select D1.c1 as c1, D1.c2 as c2 from ( select 0 as c1,
D1.c1 as c2
from
SAWITH0 D1
order by c2 ) D1 where rownum <= 5000001
Cache Services
www.dimensionality.ch @Nephentur #obihackers | freenode
[2016-05-28T15:18:40.151+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-
dd95618de970-000006a9,0:1:23:5] [sik: ssi] [tid: df80700] [messageid: USER-18] [requestid: f7340009]
[sessionid: f7340000] [username: weblogic] -------------------- Sending query to database named 01 -
Sample App Data (ORCL) (id: <<112556>>), connection pool named Sample Relational Connection,
logical request hash e019650e, physical request hash 61dd43b2: [[
WITH
SAWITH0 AS (select distinct T795.PER_NAME_YEAR as c1
from
BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ )
select D1.c1 as c1, D1.c2 as c2 from ( select 0 as c1,
D1.c1 as c2
from
SAWITH0 D1
order by c2 ) D1 where rownum <= 5000001
[2016-05-28T15:18:40.182+00:00] [OBIS] [TRACE:3] [] [] [ecid:
005D_Wap^cJFw000jzwkno0001Qq000EG0,0] [sik: ssi] [tid: 6fe3700] [messageid: USER-27] [requestid:
f7340009] [sessionid: f7340000] [username: weblogic] -------------------- Total Cache elapsed time 0.028
(seconds)
[2016-05-28T15:18:40.183+00:00] [OBIS] [TRACE:3] [] [] [ecid:
005D_Wap^cJFw000jzwkno0001Qq000EG0,0] [sik: ssi] [tid: 6fe3700] [messageid: USER-42] [requestid:
f7340009] [sessionid: f7340000] [username: weblogic] -------------------- Query Result Cache: [59124] The
query for user 'weblogic' was inserted into the query result cache. The filename is
'/app/oracle/biee/user_projects/domains/bi/servers/obis1/cache/NQS__736145_55120_0.TBL'.
[2016-05-28T15:18:40.183+00:00] [OBIS] [TRACE:3] [] [] [ecid:
005D_Wap^cJFw000jzwkno0001Qq000EG0,0] [sik: ssi] [tid: 6fe3700] [messageid: USER-50] [requestid:
f7340009] [sessionid: f7340000] [username: weblogic] -------------------- The logical query seeds the plan
cache [[
plan
RqList <<307721>> [for database 0:0,9]
T1.1 as c1 [for database 0:0,9],
T1.2 as c2 [for database 0:0,9]
Child Nodes (RqJoinSpec): <<307730>> [for database 0:0,1]
RqJoinNode <<307729>> []
CacheTable T1
Cache Services
www.dimensionality.ch @Nephentur #obihackers | freenode
Cache Services
www.dimensionality.ch @Nephentur #obihackers | freenode
[2016-05-28T15:31:22.112+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:24:5] [sik: ssi] [tid: de7b700]
[messageid: USER-21] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- Cache Hit on query: [[
Matching Query: SET VARIABLE
OBIS_REFRESH_CACHE=1,QUERY_SRC_CD='Report',SAW_DASHBOARD='/users/weblogic/_portal',SAW_DASHBOARD_PG='page
1',SAW_SRC_PATH='/users/weblogic/Preso/Cache Hit',PREFERRED_CURRENCY='USD';SELECT
0 s_0,
"A - Sample Sales"."Time"."T05 Per Name Year" s_1
FROM "A - Sample Sales"
ORDER BY 2 ASC NULLS LAST
FETCH FIRST 5000001 ROWS ONLY
Created by: weblogic
]]
[2016-05-28T15:31:22.114+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:24:5] [sik: ssi] [tid: de7b700]
[messageid: USER-55] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- Order By Safely Removed [[
'OrderBy: D1.c2 asc NULLS LAST [ added for join ] ' above the cache hit plan is safely dropped due to the preserved order by ' OrderBy: c2 asc NULLS LAST'
from cache entry
Cache Services
www.dimensionality.ch @Nephentur #obihackers | freenode
[2016-05-28T15:31:22.114+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:24:5] [sik: ssi] [tid: de7b700]
[messageid: USER-50] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- The logical query seed the plan cache [[
plan
RqList <<120136>> [for database 0:0,0] /* FETCH FIRST 5000001 ROWS ONLY */
0 as c1 [for database 0:0,1],
D1.c2 as c2 [for database 0:0,0]
Child Nodes (RqJoinSpec): <<120142>> [for database 0:0,0]
RqJoinNode <<120143>> []
(
RqList <<120146>> [for database 0:0,9]
T1.2 as c2 [for database 0:0,9],
T1.2 as c3 [for database 0:0,9]
Child Nodes (RqJoinSpec): <<120152>> [for database 0:0,9]
RqJoinNode <<120153>> []
CacheTable T1
) as D1
DetailFilter: not D1.c3 < '2012' [for database 0:0,0]
Cache Services
www.dimensionality.ch @Nephentur #obihackers | freenode
[2016-05-28T15:31:22.139+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:28] [sik: ssi] [tid: de7b700] [messageid:
USER-34] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- Query Status: Successful Completion
[2016-05-28T15:31:22.139+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:28] [sik: ssi] [tid: de7b700] [messageid:
USER-29] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- Physical Query Summary Stats: Number of physical queries 1,
Cumulative time 0.000, DB-connect time 0.000 (seconds)
[2016-05-28T15:31:22.139+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:28] [sik: ssi] [tid: de7b700] [messageid:
USER-24] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- Rows returned to Client 2
[2016-05-28T15:31:22.139+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:28] [sik: ssi] [tid: de7b700] [messageid:
USER-33] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- Logical Query Summary Stats: Elapsed time 0.030, Total time in BI
Server 0.029, Execution time 0.008, Response time 0.029, Compilation time 0.007 (seconds), logical request hash 48047dfa
Navigator
www.dimensionality.ch @Nephentur #obihackers | freenode
• The true brain of the operation
• Parses BI Server metadata
• Decides on actual logical tables, logical
table sources etc.
• Uses 3 components to decide on details
– Multi-pass / sub-request
– Fragmentation
– Aggregates
Multi-pass / sub-request
www.dimensionality.ch @Nephentur #obihackers | freenode
[2016-05-27T14:28:54.799+00:00] [OBIS] [TRACE:3] [] [] [ecid: aa89eaf6-8094-45b1-8c59-ea46b2a1e14e-000092ae,0:1:9:3] [sik: ssi] [tid: 996f4700] [messageid: USER-23] [requestid:
af740029] [sessionid: af740000] [username: weblogic] -------------------- General Query Info: [[
Repository: ssi, Subject Area: 06 - Federated Sources, Presentation: D - Sample Federated
]]
[2016-05-27T14:28:54.800+00:00] [OBIS] [TRACE:3] [] [] [ecid: aa89eaf6-8094-45b1-8c59-ea46b2a1e14e-000092ae,0:1:9:3] [sik: ssi] [tid: 996f4700] [messageid: USER-2] [requestid:
af740029] [sessionid: af740000] [username: weblogic] -------------------- Logical Request (before navigation): [[
RqList [1]
0 as c1 GB,
D0 Time.T05 Per Name Year as c2 GB,
1a- Revenue (Orcl Db Tables Only):[DAggr(F0 Revenue Base Measures.1a- Revenue (Orcl Db Tables Only) by [ D0 Time.T05 Per Name Year] )] as c3 GB,
1b- Revenue (Essbase Cube Only):[DAggr(F0 Revenue Base Measures.1b- Revenue (Essbase Cube Only) by [ D0 Time.T05 Per Name Year] )] as c4 GB
OrderBy: c2 asc NULLS LAST
Multi-pass / sub-request
www.dimensionality.ch @Nephentur #obihackers | freenode
RqBreakFilter <<390156>>[2] [for database 0:0,0] /* FETCH FIRST 5000001 ROWS ONLY */
RqList <<390157>> [for database 0:0,0]
0 as c1 GB [for database 0:0,1],
D901.c5 as c2 GB [for database 0:0,0],
D901.c1 as c3 GB [for database 3023:28:01 - Sample App Data (ORCL),78],
D901.c2 as c4 GB [for database 0:0,0]
Child Nodes (RqJoinSpec): <<390167>> [for database 0:0,0]
RqJoinNode <<390168>> []
(
RqList <<390171>> [for database 0:0,0]
D1.c1 as c1 GB [for database 3023:28:01 - Sample App Data (ORCL),78],
D2.c1 as c2 GB [for database 0:0,0],
coalesce( D1.c2 , D2.c2) as c5 GB [for database 0:0,0]
Child Nodes (RqJoinSpec): <<390181>> [for database 0:0,0]
RqJoinNode <<390182>> []
(
RqList <<390186>> [for database 3023:28:01 - Sample App Data (ORCL),78]
sum(F10 Billed Rev.Revenue by [ D02 Time Month Grain.Per_Name_Year] ) as c1 GB [for database 3023:28:01 - Sample App Data (ORCL),78],
D02 Time Month Grain.Per_Name_Year as c2 GB [for database 3023:28:01 - Sample App Data (ORCL),78]
Child Nodes (RqJoinSpec): <<390195>> [for database 3023:28:01 - Sample App Data (ORCL),78]
RqJoinNode <<390196>> [(InNode:<<390196>>) (OutNode:<<390199>>) ]
SAMP_TIME_MTH_D AS D02 Time Month Grain
RqJoinNode <<390199>> [(InNode:<<390196>>) (OutNode:<<390199>>) ]
SAMP_REVENUE_F AS F10 Billed Rev
DetailFilter: F10 Billed Rev.Bill_Mth_Key = D02 Time Month Grain.Mth_Key [for database 3023:28:01 - Sample App Data (ORCL),78]
GroupBy: [ D02 Time Month Grain.Per_Name_Year] [for database 3023:28:01 - Sample App Data (ORCL),78]
OrderBy: c2 asc [for database 3023:28:01 - Sample App Data (ORCL),78]
) as D1 FullOuterStitchJoin <<390183>> On D1.c2 = D2.c2; actual join vectors: [ 1 ] = [ 1 ]
(
RqList <<390215>> [for database 0:0,0] distinct
D1.c1 as c1 [for database 0:0,0],
D1.c2 as c2 [for database 0:0,0]
Child Nodes (RqJoinSpec): <<390221>> [for database 0:0,0]
RqJoinNode <<390222>> []
(
RqList <<390225>> [for database 3023:10:03 - Essbase Sample E1 Flat,84]
sum(Sample Flattened.Gross Revenue by [ Sample Flattened.Years] ) as c1 GB [for database 3023:10:03 - Essbase Sample E1 Flat,84],
Sample Flattened.Years as c2 GB [for database 3023:10:03 - Essbase Sample E1 Flat,84]
Child Nodes (RqJoinSpec): <<390234>> [for database 3023:10:03 - Essbase Sample E1 Flat,84]
RqJoinNode <<390235>> []
Sample T12016
GroupBy: [ Sample Flattened.Years] [for database 3023:10:03 - Essbase Sample E1 Flat,84]
) as D1
OrderBy: c2 asc [for database 0:0,0]
) as D2
OrderBy: c5 asc NULLS LAST [for database 0:0,0]
) as D901
Multi-pass / sub-request
www.dimensionality.ch @Nephentur #obihackers | freenode
RqBreakFilter <<390156>>[2] [for database 0:0,0] /* FETCH FIRST 5000001 ROWS ONLY */
RqList <<390157>> [for database 0:0,0]
0 as c1 GB [for database 0:0,1],
D901.c5 as c2 GB [for database 0:0,0],
D901.c1 as c3 GB [for database 3023:28:01 - Sample App Data (ORCL),78],
D901.c2 as c4 GB [for database 0:0,0]
Child Nodes (RqJoinSpec): <<390167>> [for database 0:0,0]
RqJoinNode <<390168>> []
(
RqList <<390171>> [for database 0:0,0]
D1.c1 as c1 GB [for database 3023:28:01 - Sample App Data (ORCL),78],
D2.c1 as c2 GB [for database 0:0,0],
coalesce( D1.c2 , D2.c2) as c5 GB [for database 0:0,0]
Child Nodes (RqJoinSpec): <<390181>> [for database 0:0,0]
RqJoinNode <<390182>> []
(
RqList <<390186>> [for database 3023:28:01 - Sample App Data (ORCL),78]
sum(F10 Billed Rev.Revenue by [ D02 Time Month Grain.Per_Name_Year] ) as c1 GB [for database 3023:28:01 - Sample App Data (ORCL),78],
D02 Time Month Grain.Per_Name_Year as c2 GB [for database 3023:28:01 - Sample App Data (ORCL),78]
Child Nodes (RqJoinSpec): <<390195>> [for database 3023:28:01 - Sample App Data (ORCL),78]
RqJoinNode <<390196>> [(InNode:<<390196>>) (OutNode:<<390199>>) ]
SAMP_TIME_MTH_D AS D02 Time Month Grain
RqJoinNode <<390199>> [(InNode:<<390196>>) (OutNode:<<390199>>) ]
SAMP_REVENUE_F AS F10 Billed Rev
DetailFilter: F10 Billed Rev.Bill_Mth_Key = D02 Time Month Grain.Mth_Key [for database 3023:28:01 - Sample App Data (ORCL),78]
GroupBy: [ D02 Time Month Grain.Per_Name_Year] [for database 3023:28:01 - Sample App Data (ORCL),78]
OrderBy: c2 asc [for database 3023:28:01 - Sample App Data (ORCL),78]
) as D1 FullOuterStitchJoin <<390183>> On D1.c2 = D2.c2; actual join vectors: [ 1 ] = [ 1 ]
(
RqList <<390215>> [for database 0:0,0] distinct
D1.c1 as c1 [for database 0:0,0],
D1.c2 as c2 [for database 0:0,0]
Child Nodes (RqJoinSpec): <<390221>> [for database 0:0,0]
RqJoinNode <<390222>> []
(
RqList <<390225>> [for database 3023:10:03 - Essbase Sample E1 Flat,84]
sum(Sample Flattened.Gross Revenue by [ Sample Flattened.Years] ) as c1 GB [for database 3023:10:03 - Essbase Sample E1 Flat,84],
Sample Flattened.Years as c2 GB [for database 3023:10:03 - Essbase Sample E1 Flat,84]
Child Nodes (RqJoinSpec): <<390234>> [for database 3023:10:03 - Essbase Sample E1 Flat,84]
RqJoinNode <<390235>> []
Sample T12016
GroupBy: [ Sample Flattened.Years] [for database 3023:10:03 - Essbase Sample E1 Flat,84]
) as D1
OrderBy: c2 asc [for database 0:0,0]
) as D2
OrderBy: c5 asc NULLS LAST [for database 0:0,0]
) as D901
RqBreakFilter <<390156>>[2] [for database 0:0,0] /* FETCH FIRST 5000001 ROWS ONLY */
(
(
RqList <<390186>> [for database 3023:28:01 - Sample App Data (ORCL),78]
sum(F10 Billed Rev.Revenue by [ D02 Time Month Grain.Per_Name_Year] ) as c1 GB [for database 3023:28:01 - Sample App Data (ORCL),78],
D02 Time Month Grain.Per_Name_Year as c2 GB [for database 3023:28:01 - Sample App Data (ORCL),78]
Child Nodes (RqJoinSpec): <<390195>> [for database 3023:28:01 - Sample App Data (ORCL),78]
RqJoinNode <<390196>> [(InNode:<<390196>>) (OutNode:<<390199>>) ]
SAMP_TIME_MTH_D AS D02 Time Month Grain
RqJoinNode <<390199>> [(InNode:<<390196>>) (OutNode:<<390199>>) ]
SAMP_REVENUE_F AS F10 Billed Rev
DetailFilter: F10 Billed Rev.Bill_Mth_Key = D02 Time Month Grain.Mth_Key [for database 3023:28:01 - Sample App Data (ORCL),78]
GroupBy: [ D02 Time Month Grain.Per_Name_Year] [for database 3023:28:01 - Sample App Data (ORCL),78]
OrderBy: c2 asc [for database 3023:28:01 - Sample App Data (ORCL),78]
) as D1 FullOuterStitchJoin <<390183>> On D1.c2 = D2.c2; actual join vectors: [ 1 ] = [ 1 ]
(
RqList <<390215>> [for database 0:0,0] distinct
D1.c1 as c1 [for database 0:0,0],
D1.c2 as c2 [for database 0:0,0]
Child Nodes (RqJoinSpec): <<390221>> [for database:0,0]
RqJoinNode <<390222>> []
(
RqList <<390225>> [for database 3023:10:03 - Essbase Sample E1 Flat,84]
sum(Sample Flattened.Gross Revenue by [ Sample Flattened.Years] ) as c1 GB [for database 3023:10:03 - Essbase Sample E1 Flat,84],
Sample Flattened.Years as c2 GB [for database 3023:10:03 - Essbase Sample E1 Flat,84]
Child Nodes (RqJoinSpec): <<390234>> [for database 3023:10:03 - Essbase Sample E1 Flat,84]
RqJoinNode <<390235>> []
Sample T12016
GroupBy: [ Sample Flattened.Years] [for database 3023:10:03 - Essbase Sample E1 Flat,84]
) as D1
) as D2
) as D901
Multi-pass / sub-request
www.dimensionality.ch @Nephentur #obihackers | freenode
Multi-pass / sub-request
www.dimensionality.ch @Nephentur #obihackers | freenode
Multi-pass / sub-request
www.dimensionality.ch @Nephentur #obihackers | freenode
Multi-pass / sub-request
www.dimensionality.ch @Nephentur #obihackers | freenode
Multi-pass / sub-request
www.dimensionality.ch @Nephentur #obihackers | freenode
Multi-pass / sub-request
www.dimensionality.ch @Nephentur #obihackers | freenode
Multi-pass / sub-request
www.dimensionality.ch @Nephentur #obihackers | freenode
[2016-05-28T15:54:26.741+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-
00000be7,0:1:1:5] [sik: ssi] [tid: de7b700] [messageid: USER-18] [requestid: f7340057] [sessionid: f7340000]
[username: weblogic] -------------------- Sending query to database named 01 - Sample App Data (ORCL) (id:
<<128861>>), connection pool named Sample Relational Connection, logical request hash c0e3e3eb, physical
request hash f6e07fd4: [[
select sum(T432.Revenue_Usd) as c1,
T795.PER_NAME_YEAR as c2
from
BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ ,
BISAMPLE.SAMP_REVENUE_CURR_F T432 /* F19 Rev. (Converted) */
where ( T432.Bill_Qtr_Key = T795.QTR_KEY )
group by T795.PER_NAME_YEAR
order by c2
]]
[2016-05-28T15:54:26.742+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-
00000be7,0:1:1:5] [sik: ssi] [tid: de7b700] [messageid: USER-18] [requestid: f7340057] [sessionid: f7340000] [username:
weblogic] -------------------- Sending query to database named 01 - Sample App Data (ORCL) (id: <<128903>>), connection
pool named Sample Relational Connection, logical request hash c0e3e3eb, physical request hash 343379a9: [[
select sum(T216.Revenue) as c1,
T795.PER_NAME_YEAR as c2
from
BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ ,
BISAMPLE.SAMP_REVENUE_FA2 T216 /* F21 Rev. (Aggregate 2) */
where ( T216.Bill_Qtr_Key = T795.QTR_KEY )
group by T795.PER_NAME_YEAR
order by c2
Fragmentation
www.dimensionality.ch @Nephentur #obihackers | freenode
• Are fragmented logical table sources
being used?
Fragmentation
www.dimensionality.ch @Nephentur #obihackers | freenode
• Are fragmented logical table sources
being used?
[...]
RqJoinNode <<406134>> []
((
RqList <<406138>> [for database 3023:16:Y01 - Custom Demo Datasets,78]
WEATHER_HAIL.STATE as c2 [for database 3023:16:Y01 - Custom Demo Datasets,78],
'Hail' as c3 [for database 3023:16:Y01 - Custom Demo Datasets,78],
WEATHER_HAIL.ID as c4 [for database 3023:16:Y01 - Custom Demo Datasets,78]
Child Nodes (RqJoinSpec): <<406146>> [for database 3023:16:Y01 - Custom Demo Datasets,78]
RqJoinNode <<406147>> []
WEATHER_HAIL T403
RqUnion All <<406137>> [for database 3023:16:Y01 - Custom Demo Datasets,78]
RqList <<406150>> [for database 3023:16:Y01 - Custom Demo Datasets,78]
WEATHER_TORNADOES.STATE as c2 [for database 3023:16:Y01 - Custom Demo Datasets,78],
'Tornado' as c3 [for database 3023:16:Y01 - Custom Demo Datasets,78],
WEATHER_TORNADOES.ID as c4 [for database 3023:16:Y01 - Custom Demo Datasets,78]
Child Nodes (RqJoinSpec): <<406158>> [for database 3023:16:Y01 - Custom Demo Datasets,78]
RqJoinNode <<406159>> []
WEATHER_TORNADOES T525
RqUnion All <<406137>> [for database 3023:16:Y01 - Custom Demo Datasets,78]
RqList <<406162>> [for database 3023:16:Y01 - Custom Demo Datasets,78]
WEATHER_WIND.STATE as c2 [for database 3023:16:Y01 - Custom Demo Datasets,78],
'Wind' as c3 [for database 3023:16:Y01 - Custom Demo Datasets,78],
WEATHER_WIND.ID as c4 [for database 3023:16:Y01 - Custom Demo Datasets,78]
Child Nodes (RqJoinSpec): <<406170>> [for database 3023:16:Y01 - Custom Demo Datasets,78]
RqJoinNode <<406171>> []
WEATHER_WIND T375)
) as D6
[...]
Fragmentation
www.dimensionality.ch @Nephentur #obihackers | freenode
Fragmentation
www.dimensionality.ch @Nephentur #obihackers | freenode
• Are fragmented logical table sources
being used?
Aggregate Navigator
www.dimensionality.ch @Nephentur #obihackers | freenode
• Which LTS contains data on a level of
aggregation to fulfill the query with the
least amount of effort?
• Hierarchy logical level # of elements
• LTS priority group
• LTS order
Aggregate Navigator
www.dimensionality.ch @Nephentur #obihackers | freenode
Aggregate Navigator
www.dimensionality.ch @Nephentur #obihackers | freenode
WITH
SAWITH0 AS (select sum(T216.Revenue) as c1,
T795.PER_NAME_YEAR as c2
from
BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ ,BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ ,BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ ,BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ ,
BISAMPLE.SAMP_REVENUE_FA2 T216 /* F21 Rev. (Aggregate 2) */
where ( T216.Bill_Qtr_Key = T795.QTR_KEY )
group by T795.PER_NAME_YEAR)
select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3 from ( select 0 as c1,
D1.c2 as c2,
D1.c1 as c3
from
SAWITH0 D1
order by c2 ) D1 where rownum <= 5000001
Aggregate Navigator
www.dimensionality.ch @Nephentur #obihackers | freenode
Aggregate Navigator
www.dimensionality.ch @Nephentur #obihackers | freenode
WITH
SAWITH0 AS (select sum(T418.Revenue) as c1,
T42.Calendar_Date as c2,
T42.Per_Name_Year as c3
from
BISAMPLE.SAMP_TIME_DAY_D T42 /* D01 Time Day Grain */ ,BISAMPLE.SAMP_TIME_DAY_D T42 /* D01 Time Day Grain */ ,BISAMPLE.SAMP_TIME_DAY_D T42 /* D01 Time Day Grain */ ,BISAMPLE.SAMP_TIME_DAY_D T42 /* D01 Time Day Grain */ ,
BISAMPLE.SAMP_REVENUE_F T418 /* F10 Billed Rev */
where ( T42.Calendar_Date = T418.Bill_Day_Dt and T42.Per_Name_Year = '2012' )
group by T42.Calendar_Date, T42.Per_Name_Year)
select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3, D1.c4 as c4 from ( select 0 as c1,
D1.c2 as c2,
D1.c3 as c3,
D1.c1 as c4
from
SAWITH0 D1
order by c3, c2 ) D1 where rownum <= 5000001
Optimized Query Rewrites
www.dimensionality.ch @Nephentur #obihackers | freenode
• Writes the effective query sent against a
source
• Source type
• Source features
• Native function shipping driven by these
configurations (and version)
Optimized Query Rewrites
www.dimensionality.ch @Nephentur #obihackers | freenode
Optimized Query Rewrites
www.dimensionality.ch @Nephentur #obihackers | freenode
Optimized Query Rewrites
www.dimensionality.ch @Nephentur #obihackers | freenode
• Results are retrieved from sources
• Combined and post-calculated as needed
• Written into the cache
• Passed to the initially calling interface
Outline
• Why this presentation
• Overview / What the packaging says
• VA / DV / DVD / BICS / ASCS
• The actual day in the life of a query
• Query execution details
• Summary
www.dimensionality.ch @Nephentur #obihackers | freenode
Summary
www.dimensionality.ch @Nephentur #obihackers | freenode
1. Know the flow
This is where
very few
magic should
happen
This is where
THE magic
happens
We don’t
really care
about this part
This is where
the actual
workload
should happen
Browser,
SmartView,
other tools
BI Server
WLS
Managed
Server
Presentation
Server
Sources
Browser,
SmartView,
other tools
BI Server
WLS
Managed
Server
Presentation
Server
Summary
2. Understand the magic
Summary
3. You’ll be fine!
www.dimensionality.ch @Nephentur #obihackers | freenode

More Related Content

What's hot

AMIS Beyond the Horizon - High density deployments using weblogic multitenancy
AMIS Beyond the Horizon - High density deployments using weblogic multitenancyAMIS Beyond the Horizon - High density deployments using weblogic multitenancy
AMIS Beyond the Horizon - High density deployments using weblogic multitenancyJaap Poot
 
Engage 2020 - Domino Application Strategy: Key insights for successful modern...
Engage 2020 - Domino Application Strategy: Key insights for successful modern...Engage 2020 - Domino Application Strategy: Key insights for successful modern...
Engage 2020 - Domino Application Strategy: Key insights for successful modern...panagenda
 
Graph Databases for SQL Server Professionals - SQLSaturday #350 Winnipeg
Graph Databases for SQL Server Professionals - SQLSaturday #350 WinnipegGraph Databases for SQL Server Professionals - SQLSaturday #350 Winnipeg
Graph Databases for SQL Server Professionals - SQLSaturday #350 WinnipegStéphane Fréchette
 
ODI 11g in the Enterprise - BIWA 2013
ODI 11g in the Enterprise - BIWA 2013ODI 11g in the Enterprise - BIWA 2013
ODI 11g in the Enterprise - BIWA 2013Mark Rittman
 
Framing the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQLFraming the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQLInside Analysis
 
SQL Server Konferenz 2014 - SSIS & HDInsight
SQL Server Konferenz 2014 - SSIS & HDInsightSQL Server Konferenz 2014 - SSIS & HDInsight
SQL Server Konferenz 2014 - SSIS & HDInsightTillmann Eitelberg
 
SSIS Monitoring Deep Dive
SSIS Monitoring Deep DiveSSIS Monitoring Deep Dive
SSIS Monitoring Deep DiveDavide Mauri
 
Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...
Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...
Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...Alex Gorbachev
 
Engage 2020 - Best Practices for analyzing Domino Applications
Engage 2020 - Best Practices for analyzing Domino ApplicationsEngage 2020 - Best Practices for analyzing Domino Applications
Engage 2020 - Best Practices for analyzing Domino Applicationspanagenda
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL DevelopersIke Ellis
 
Effective Microservices In a Data-centric World
Effective Microservices In a Data-centric WorldEffective Microservices In a Data-centric World
Effective Microservices In a Data-centric WorldRandy Shoup
 
DataOps - Lean principles and lean practices
DataOps - Lean principles and lean practicesDataOps - Lean principles and lean practices
DataOps - Lean principles and lean practicesLars Albertsson
 
Tableau Best Practices for OBIEE
Tableau Best Practices for OBIEETableau Best Practices for OBIEE
Tableau Best Practices for OBIEEBI Connector
 
ECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
ECS19 - Ahmad Najjar and Serge Luca - Power Platform TutorialECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
ECS19 - Ahmad Najjar and Serge Luca - Power Platform TutorialEuropean Collaboration Summit
 
Back from the Dead: When Bad Code Kills a Good Server
Back from the Dead: When Bad Code Kills a Good ServerBack from the Dead: When Bad Code Kills a Good Server
Back from the Dead: When Bad Code Kills a Good ServerTeamstudio
 
Getting Ready to Use Redis with Apache Spark with Tague Griffith
Getting Ready to Use Redis with Apache Spark with Tague GriffithGetting Ready to Use Redis with Apache Spark with Tague Griffith
Getting Ready to Use Redis with Apache Spark with Tague GriffithDatabricks
 
Being Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the CloudBeing Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the CloudRandy Shoup
 
DevOps+Data: Working with Source Control
DevOps+Data: Working with Source ControlDevOps+Data: Working with Source Control
DevOps+Data: Working with Source ControlEd Leighton-Dick
 

What's hot (20)

AMIS Beyond the Horizon - High density deployments using weblogic multitenancy
AMIS Beyond the Horizon - High density deployments using weblogic multitenancyAMIS Beyond the Horizon - High density deployments using weblogic multitenancy
AMIS Beyond the Horizon - High density deployments using weblogic multitenancy
 
Engage 2020 - Domino Application Strategy: Key insights for successful modern...
Engage 2020 - Domino Application Strategy: Key insights for successful modern...Engage 2020 - Domino Application Strategy: Key insights for successful modern...
Engage 2020 - Domino Application Strategy: Key insights for successful modern...
 
Graph Databases for SQL Server Professionals - SQLSaturday #350 Winnipeg
Graph Databases for SQL Server Professionals - SQLSaturday #350 WinnipegGraph Databases for SQL Server Professionals - SQLSaturday #350 Winnipeg
Graph Databases for SQL Server Professionals - SQLSaturday #350 Winnipeg
 
ODI 11g in the Enterprise - BIWA 2013
ODI 11g in the Enterprise - BIWA 2013ODI 11g in the Enterprise - BIWA 2013
ODI 11g in the Enterprise - BIWA 2013
 
Framing the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQLFraming the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQL
 
SQL Server Konferenz 2014 - SSIS & HDInsight
SQL Server Konferenz 2014 - SSIS & HDInsightSQL Server Konferenz 2014 - SSIS & HDInsight
SQL Server Konferenz 2014 - SSIS & HDInsight
 
SSIS Monitoring Deep Dive
SSIS Monitoring Deep DiveSSIS Monitoring Deep Dive
SSIS Monitoring Deep Dive
 
Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...
Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...
Under The Hood of Pluggable Databases by Alex Gorbachev, Pythian, Oracle OpeW...
 
Engage 2020 - Best Practices for analyzing Domino Applications
Engage 2020 - Best Practices for analyzing Domino ApplicationsEngage 2020 - Best Practices for analyzing Domino Applications
Engage 2020 - Best Practices for analyzing Domino Applications
 
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers14 Habits of Great SQL Developers
14 Habits of Great SQL Developers
 
Tableau API
Tableau APITableau API
Tableau API
 
Effective Microservices In a Data-centric World
Effective Microservices In a Data-centric WorldEffective Microservices In a Data-centric World
Effective Microservices In a Data-centric World
 
DataOps - Lean principles and lean practices
DataOps - Lean principles and lean practicesDataOps - Lean principles and lean practices
DataOps - Lean principles and lean practices
 
Tableau Best Practices for OBIEE
Tableau Best Practices for OBIEETableau Best Practices for OBIEE
Tableau Best Practices for OBIEE
 
ECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
ECS19 - Ahmad Najjar and Serge Luca - Power Platform TutorialECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
ECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
 
Back from the Dead: When Bad Code Kills a Good Server
Back from the Dead: When Bad Code Kills a Good ServerBack from the Dead: When Bad Code Kills a Good Server
Back from the Dead: When Bad Code Kills a Good Server
 
Getting Ready to Use Redis with Apache Spark with Tague Griffith
Getting Ready to Use Redis with Apache Spark with Tague GriffithGetting Ready to Use Redis with Apache Spark with Tague Griffith
Getting Ready to Use Redis with Apache Spark with Tague Griffith
 
Being Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the CloudBeing Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the Cloud
 
DevOps+Data: Working with Source Control
DevOps+Data: Working with Source ControlDevOps+Data: Working with Source Control
DevOps+Data: Working with Source Control
 
React.js at Cortex
React.js at CortexReact.js at Cortex
React.js at Cortex
 

Similar to Oracle BI Query Journey

The New Frontier: Optimizing Big Data Exploration
The New Frontier: Optimizing Big Data ExplorationThe New Frontier: Optimizing Big Data Exploration
The New Frontier: Optimizing Big Data ExplorationInside Analysis
 
Digitization Basics for Libraries, Archives, and Museums
Digitization Basics for Libraries, Archives, and MuseumsDigitization Basics for Libraries, Archives, and Museums
Digitization Basics for Libraries, Archives, and MuseumsMartin Kalfatovic
 
Surviving your frontend (WIP - Sneak Peak)
Surviving your frontend (WIP - Sneak Peak)Surviving your frontend (WIP - Sneak Peak)
Surviving your frontend (WIP - Sneak Peak)Sebastian Schürmann
 
Continuum Analytics and Python
Continuum Analytics and PythonContinuum Analytics and Python
Continuum Analytics and PythonTravis Oliphant
 
What is spatial sql
What is spatial sqlWhat is spatial sql
What is spatial sqlshawty_ds
 
Value streammapping cascadiait2014-mceniry
Value streammapping cascadiait2014-mceniryValue streammapping cascadiait2014-mceniry
Value streammapping cascadiait2014-mceniryChris McEniry
 
Architecting a next generation data platform
Architecting a next generation data platformArchitecting a next generation data platform
Architecting a next generation data platformhadooparchbook
 
Bridging Big Data and Data Science Using Scalable Workflows
Bridging Big Data and Data Science Using Scalable WorkflowsBridging Big Data and Data Science Using Scalable Workflows
Bridging Big Data and Data Science Using Scalable WorkflowsIlkay Altintas, Ph.D.
 
50 Shades Of Fail Geneva
50 Shades Of Fail Geneva50 Shades Of Fail Geneva
50 Shades Of Fail GenevaChristian Berg
 
Practical Cyber: Lessons from 500,000 Miles of Security Evangelism
Practical Cyber: Lessons from 500,000 Miles of Security EvangelismPractical Cyber: Lessons from 500,000 Miles of Security Evangelism
Practical Cyber: Lessons from 500,000 Miles of Security EvangelismBen Johnson
 
Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017
Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017
Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017AWS Chicago
 
02-Lifecycle.pptx
02-Lifecycle.pptx02-Lifecycle.pptx
02-Lifecycle.pptxShree Shree
 
Architecting a next-generation data platform
Architecting a next-generation data platformArchitecting a next-generation data platform
Architecting a next-generation data platformhadooparchbook
 
The Death of the Star Schema
The Death of the Star SchemaThe Death of the Star Schema
The Death of the Star SchemaDATAVERSITY
 
TIBCO Advanced Analytics Meetup (TAAM) - June 2015
TIBCO Advanced Analytics Meetup (TAAM) - June 2015TIBCO Advanced Analytics Meetup (TAAM) - June 2015
TIBCO Advanced Analytics Meetup (TAAM) - June 2015Bipin Singh
 
How to Prepare for a BI Migration
How to Prepare for a BI MigrationHow to Prepare for a BI Migration
How to Prepare for a BI MigrationSenturus
 
Database Camp 2016 @ United Nations, NYC - Amir Orad, CEO, Sisense
Database Camp 2016 @ United Nations, NYC - Amir Orad, CEO, SisenseDatabase Camp 2016 @ United Nations, NYC - Amir Orad, CEO, Sisense
Database Camp 2016 @ United Nations, NYC - Amir Orad, CEO, Sisense✔ Eric David Benari, PMP
 
How Celtra Optimizes its Advertising Platform with Databricks
How Celtra Optimizes its Advertising Platformwith DatabricksHow Celtra Optimizes its Advertising Platformwith Databricks
How Celtra Optimizes its Advertising Platform with DatabricksGrega Kespret
 

Similar to Oracle BI Query Journey (20)

The New Frontier: Optimizing Big Data Exploration
The New Frontier: Optimizing Big Data ExplorationThe New Frontier: Optimizing Big Data Exploration
The New Frontier: Optimizing Big Data Exploration
 
Digitization Basics for Libraries, Archives, and Museums
Digitization Basics for Libraries, Archives, and MuseumsDigitization Basics for Libraries, Archives, and Museums
Digitization Basics for Libraries, Archives, and Museums
 
Surviving your frontend (WIP - Sneak Peak)
Surviving your frontend (WIP - Sneak Peak)Surviving your frontend (WIP - Sneak Peak)
Surviving your frontend (WIP - Sneak Peak)
 
Continuum Analytics and Python
Continuum Analytics and PythonContinuum Analytics and Python
Continuum Analytics and Python
 
What is spatial sql
What is spatial sqlWhat is spatial sql
What is spatial sql
 
Value streammapping cascadiait2014-mceniry
Value streammapping cascadiait2014-mceniryValue streammapping cascadiait2014-mceniry
Value streammapping cascadiait2014-mceniry
 
Architecting a next generation data platform
Architecting a next generation data platformArchitecting a next generation data platform
Architecting a next generation data platform
 
Just Digitise It! - Daniel Wilksch
Just Digitise It! - Daniel WilkschJust Digitise It! - Daniel Wilksch
Just Digitise It! - Daniel Wilksch
 
Bridging Big Data and Data Science Using Scalable Workflows
Bridging Big Data and Data Science Using Scalable WorkflowsBridging Big Data and Data Science Using Scalable Workflows
Bridging Big Data and Data Science Using Scalable Workflows
 
50 Shades Of Fail Geneva
50 Shades Of Fail Geneva50 Shades Of Fail Geneva
50 Shades Of Fail Geneva
 
Practical Cyber: Lessons from 500,000 Miles of Security Evangelism
Practical Cyber: Lessons from 500,000 Miles of Security EvangelismPractical Cyber: Lessons from 500,000 Miles of Security Evangelism
Practical Cyber: Lessons from 500,000 Miles of Security Evangelism
 
Just Digitise It - Daniel Wilksch - 2015
Just Digitise It - Daniel Wilksch - 2015Just Digitise It - Daniel Wilksch - 2015
Just Digitise It - Daniel Wilksch - 2015
 
Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017
Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017
Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017
 
02-Lifecycle.pptx
02-Lifecycle.pptx02-Lifecycle.pptx
02-Lifecycle.pptx
 
Architecting a next-generation data platform
Architecting a next-generation data platformArchitecting a next-generation data platform
Architecting a next-generation data platform
 
The Death of the Star Schema
The Death of the Star SchemaThe Death of the Star Schema
The Death of the Star Schema
 
TIBCO Advanced Analytics Meetup (TAAM) - June 2015
TIBCO Advanced Analytics Meetup (TAAM) - June 2015TIBCO Advanced Analytics Meetup (TAAM) - June 2015
TIBCO Advanced Analytics Meetup (TAAM) - June 2015
 
How to Prepare for a BI Migration
How to Prepare for a BI MigrationHow to Prepare for a BI Migration
How to Prepare for a BI Migration
 
Database Camp 2016 @ United Nations, NYC - Amir Orad, CEO, Sisense
Database Camp 2016 @ United Nations, NYC - Amir Orad, CEO, SisenseDatabase Camp 2016 @ United Nations, NYC - Amir Orad, CEO, Sisense
Database Camp 2016 @ United Nations, NYC - Amir Orad, CEO, Sisense
 
How Celtra Optimizes its Advertising Platform with Databricks
How Celtra Optimizes its Advertising Platformwith DatabricksHow Celtra Optimizes its Advertising Platformwith Databricks
How Celtra Optimizes its Advertising Platform with Databricks
 

Recently uploaded

VIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service Amravati
VIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service AmravatiVIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service Amravati
VIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service AmravatiSuhani Kapoor
 
RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998YohFuh
 
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130Suhani Kapoor
 
Beautiful Sapna Vip Call Girls Hauz Khas 9711199012 Call /Whatsapps
Beautiful Sapna Vip  Call Girls Hauz Khas 9711199012 Call /WhatsappsBeautiful Sapna Vip  Call Girls Hauz Khas 9711199012 Call /Whatsapps
Beautiful Sapna Vip Call Girls Hauz Khas 9711199012 Call /Whatsappssapnasaifi408
 
(ISHITA) Call Girls Service Hyderabad Call Now 8617697112 Hyderabad Escorts
(ISHITA) Call Girls Service Hyderabad Call Now 8617697112 Hyderabad Escorts(ISHITA) Call Girls Service Hyderabad Call Now 8617697112 Hyderabad Escorts
(ISHITA) Call Girls Service Hyderabad Call Now 8617697112 Hyderabad EscortsCall girls in Ahmedabad High profile
 
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM TRACKING WITH GOOGLE ANALYTICS.pptx
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM  TRACKING WITH GOOGLE ANALYTICS.pptxEMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM  TRACKING WITH GOOGLE ANALYTICS.pptx
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM TRACKING WITH GOOGLE ANALYTICS.pptxthyngster
 
Carero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxCarero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxolyaivanovalion
 
BigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptxBigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptxolyaivanovalion
 
April 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's AnalysisApril 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's Analysismanisha194592
 
Brighton SEO | April 2024 | Data Storytelling
Brighton SEO | April 2024 | Data StorytellingBrighton SEO | April 2024 | Data Storytelling
Brighton SEO | April 2024 | Data StorytellingNeil Barnes
 
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Callshivangimorya083
 
Ukraine War presentation: KNOW THE BASICS
Ukraine War presentation: KNOW THE BASICSUkraine War presentation: KNOW THE BASICS
Ukraine War presentation: KNOW THE BASICSAishani27
 
Dubai Call Girls Wifey O52&786472 Call Girls Dubai
Dubai Call Girls Wifey O52&786472 Call Girls DubaiDubai Call Girls Wifey O52&786472 Call Girls Dubai
Dubai Call Girls Wifey O52&786472 Call Girls Dubaihf8803863
 
Call Girls In Mahipalpur O9654467111 Escorts Service
Call Girls In Mahipalpur O9654467111  Escorts ServiceCall Girls In Mahipalpur O9654467111  Escorts Service
Call Girls In Mahipalpur O9654467111 Escorts ServiceSapana Sha
 
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
Mature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptxMature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptxolyaivanovalion
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfLars Albertsson
 
VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...
VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...
VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...Suhani Kapoor
 

Recently uploaded (20)

VIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service Amravati
VIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service AmravatiVIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service Amravati
VIP Call Girls in Amravati Aarohi 8250192130 Independent Escort Service Amravati
 
RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998
 
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
 
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
 
Beautiful Sapna Vip Call Girls Hauz Khas 9711199012 Call /Whatsapps
Beautiful Sapna Vip  Call Girls Hauz Khas 9711199012 Call /WhatsappsBeautiful Sapna Vip  Call Girls Hauz Khas 9711199012 Call /Whatsapps
Beautiful Sapna Vip Call Girls Hauz Khas 9711199012 Call /Whatsapps
 
(ISHITA) Call Girls Service Hyderabad Call Now 8617697112 Hyderabad Escorts
(ISHITA) Call Girls Service Hyderabad Call Now 8617697112 Hyderabad Escorts(ISHITA) Call Girls Service Hyderabad Call Now 8617697112 Hyderabad Escorts
(ISHITA) Call Girls Service Hyderabad Call Now 8617697112 Hyderabad Escorts
 
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM TRACKING WITH GOOGLE ANALYTICS.pptx
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM  TRACKING WITH GOOGLE ANALYTICS.pptxEMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM  TRACKING WITH GOOGLE ANALYTICS.pptx
EMERCE - 2024 - AMSTERDAM - CROSS-PLATFORM TRACKING WITH GOOGLE ANALYTICS.pptx
 
Carero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxCarero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptx
 
BigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptxBigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptx
 
Delhi 99530 vip 56974 Genuine Escort Service Call Girls in Kishangarh
Delhi 99530 vip 56974 Genuine Escort Service Call Girls in  KishangarhDelhi 99530 vip 56974 Genuine Escort Service Call Girls in  Kishangarh
Delhi 99530 vip 56974 Genuine Escort Service Call Girls in Kishangarh
 
April 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's AnalysisApril 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's Analysis
 
Brighton SEO | April 2024 | Data Storytelling
Brighton SEO | April 2024 | Data StorytellingBrighton SEO | April 2024 | Data Storytelling
Brighton SEO | April 2024 | Data Storytelling
 
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call
꧁❤ Greater Noida Call Girls Delhi ❤꧂ 9711199171 ☎️ Hard And Sexy Vip Call
 
Ukraine War presentation: KNOW THE BASICS
Ukraine War presentation: KNOW THE BASICSUkraine War presentation: KNOW THE BASICS
Ukraine War presentation: KNOW THE BASICS
 
Dubai Call Girls Wifey O52&786472 Call Girls Dubai
Dubai Call Girls Wifey O52&786472 Call Girls DubaiDubai Call Girls Wifey O52&786472 Call Girls Dubai
Dubai Call Girls Wifey O52&786472 Call Girls Dubai
 
Call Girls In Mahipalpur O9654467111 Escorts Service
Call Girls In Mahipalpur O9654467111  Escorts ServiceCall Girls In Mahipalpur O9654467111  Escorts Service
Call Girls In Mahipalpur O9654467111 Escorts Service
 
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
Mature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptxMature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptx
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdf
 
VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...
VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...
VIP High Class Call Girls Jamshedpur Anushka 8250192130 Independent Escort Se...
 

Oracle BI Query Journey

  • 1. Back2Basics A day in the life of an Oracle BI query www.dimensionality.ch @Nephentur #obihackers | freenode
  • 2. • Owner of Dimensionality GmbH in Switzerland • Hacking OBI since 2001 (nQuire + Peregrin aquisitions by Siebel) • Oracle ACE Associate BI/DWH • Speaker at OpenWorld, KScope, regional Oracle User Groups... • Part-time blogger on Oracle BI (http://dimensionality.ch) • Full-time IRC (freenode | #obihackers) and OTN addict • Oracle BI trainer for Oracle University since 2006 • Proud geek and gamer • Responding to any and all questions 24 / 7 – especially on IRC Who am I? www.dimensionality.ch @Nephentur #obihackers | freenode
  • 3. Who am I? www.dimensionality.ch @Nephentur #obihackers | freenode
  • 4. Outline • Why this presentation • Overview / What the packaging says • VA / DV / DVD / BICS / ASCS • The actual day in the life of a query • Query execution details • Summary www.dimensionality.ch @Nephentur #obihackers | freenode
  • 5. Outline • Why this presentation • Overview / What the packaging says • VA / DV / DVD / BICS / ASCS • The actual day in the life of a query • Query execution details • Summary www.dimensionality.ch @Nephentur #obihackers | freenode
  • 6. Why this presentation? • Oracle BI has matured and is quite wide-spread • As a result it’s often done worse than ever… • Problem being: core of a whole range of products • Hence: Back to basics presentation series • Not understanding and comprehending query mechanisms is a cardinal sin for any developer • And no, “cloud” doesn’t eliminate the need for “comprehension” www.dimensionality.ch @Nephentur #obihackers | freenode
  • 7. Why this presentation? • Alternative title “A normal day on the OTN forums” www.dimensionality.ch @Nephentur #obihackers | freenode
  • 8. Why this presentation? • Going more into details from my “Worst practices” presentation www.dimensionality.ch @Nephentur #obihackers | freenode
  • 9. Why this presentation? • Alleviate your struggle • How can I get from front-end problems to the actual root cause? • Why is my report returning the data it does? • Why do I get old data back? (Spoiler alert: Cache!) • Where can I find all bits and pieces of information for my investigation? • Why doesn’t my request hit the source I thought it would? • Why does it bypass our aggregate tables? • If I change the RPD – what will be the impact? www.dimensionality.ch @Nephentur #obihackers | freenode
  • 10. Why this presentation? Simply put: Without a solid understanding of how and why queries function inside the Oracle BI core you will have a very hard time of analyzing any issue pertaining to data, aggregations, modelling, performance etc. ! www.dimensionality.ch @Nephentur #obihackers | freenode
  • 11. Outline • Why this presentation • Overview / What the packaging says • VA / DV / DVD / BICS / ASCS • The actual day in the life of a query • Query execution details • Summary www.dimensionality.ch @Nephentur #obihackers | freenode
  • 12. What the packaging says www.dimensionality.ch @Nephentur #obihackers | freenode
  • 13. What the packaging says www.dimensionality.ch @Nephentur #obihackers | freenode
  • 14. What the packaging says www.dimensionality.ch @Nephentur #obihackers | freenode
  • 15. And “under the covers”? www.dimensionality.ch @Nephentur #obihackers | freenode Needs more detail…
  • 16. A little archeology www.dimensionality.ch @Nephentur #obihackers | freenode
  • 17. Wait, wait… www.dimensionality.ch @Nephentur #obihackers | freenode …did you just say “Siebel Analytics”; so what about versions?
  • 18. Wait, wait… www.dimensionality.ch @Nephentur #obihackers | freenode …did you just say “Siebel Analytics”; so what about versions?
  • 19. Wait, wait… www.dimensionality.ch @Nephentur #obihackers | freenode …did you just say “Siebel Analytics”; so what about versions?
  • 20. Outline • Why this presentation • Overview / What the packaging says • VA / DV / DVD / BICS / ASCS • The actual day in the life of a query • Query execution details • Summary www.dimensionality.ch @Nephentur #obihackers | freenode
  • 21. VA / DV / DVD / BICS / ASCS? www.dimensionality.ch @Nephentur #obihackers | freenode But Christian it’s all about cloud, data visualization and mashups now! Surely I don’t need to bother with all this query stuff?
  • 22. VA / DV / DVD / BICS? www.dimensionality.ch @Nephentur #obihackers | freenode
  • 23. VA / DV / DVD / BICS? www.dimensionality.ch @Nephentur #obihackers | freenode
  • 24. VA / DV / DVD / BICS? www.dimensionality.ch @Nephentur #obihackers | freenode But Christian it’s all about data visualization and mashups now! Surely I don’t need to bother with all this?
  • 25. So what about VA / DV / DVD / BICS? www.dimensionality.ch @Nephentur #obihackers | freenode Yes DV/ASCS/BICS are way(s) forward, but… Really? Think about it: • They all still access Subject Areas (indirectly) • Performance problems won’t just automagically disappear – You’ll probably run into even more thanks to mashups and file uploads • Just because there are nice graphs doesn’t mean there isn’t still a very clever system in the background! • But yes, there’s a new toy and new possibilities • Watch out for the next dissection talk!
  • 26. So what about VA / DV / DVD / BICS? www.dimensionality.ch @Nephentur #obihackers | freenode Yes VA, DV and DVD are the way forward, but… Really? Think about it: • They all still access Subject Areas (indirectly) • Performance problems won’t just automagically disappear – You’ll probably run into even more thanks to mashups and file uploads • Just because there are nice graphs doesn’t mean there isn’t still a very clever system in the background! • But yes, there’s a new toy and new possibilities • Watch out for the next dissection talk!
  • 27. Outline • Why this presentation • Overview / What the packaging says • VA / DV / DVD / BICS / ASCS • The actual day in the life of a query • Query execution details • Summary www.dimensionality.ch @Nephentur #obihackers | freenode
  • 29. This is where very few magic should happen This is where THE magic happens We don’t really care about this part This is where the actual workload should happen “The workday” aka detailed query flow www.dimensionality.ch @Nephentur #obihackers | freenode Browser, SmartView, other tools BI Server WLS Managed Server Presentation Server Sources Browser, SmartView, other tools BI Server WLS Managed Server Presentation Server
  • 30. To this detail architectureMapping these flow details in the BI Server “Magic” details www.dimensionality.ch @Nephentur #obihackers | freenode
  • 31. Your friend the log www.dimensionality.ch @Nephentur 12c: obis1-query.log 11g: nqquery.log #obihackers | freenode
  • 32. Your friend the log www.dimensionality.ch @Nephentur 12c: obis1-query.log 11g: nqquery.log -------------------- SQL Request, logical request hash:a180d345SET VARIABLE OBIS_REFRESH_CACHE=1,QUERY_SRC_CD='Report',SAW_SRC_PATH='/users/web logic/Preso/Main',PREFERRED_CURRENCY='USD',DISABLE_CACHE=1,LOG_LEVEL= 2; SELECT 0 s_0, "D - Sample Federated"."Time"."T05 Per Name Year" s_1, "D - Sample Federated"."Measures"."1a- Revenue (Orcl Db Tables Only)" s_2 FROM "D - Sample Federated" ORDER BY 2 ASC NULLS LAST FETCH FIRST 5000001 ROWS ONLY #obihackers | freenode
  • 33. Your friend the log www.dimensionality.ch @Nephentur 12c: obis1-query.log 11g: nqquery.log -------------------- SQL Request, logical request hash:a180d345SET VARIABLE OBIS_REFRESH_CACHE=1,QUERY_SRC_CD='Report',SAW_SRC_PATH='/users/web logic/Preso/Main',PREFERRED_CURRENCY='USD',DISABLE_CACHE=1,LOG_LEVEL= 2; SELECT 0 s_0, "D - Sample Federated"."Time"."T05 Per Name Year" s_1, "D - Sample Federated"."Measures"."1a- Revenue (Orcl Db Tables Only)" s_2 FROM "D - Sample Federated" ORDER BY 2 ASC NULLS LAST FETCH FIRST 5000001 ROWS ONLY [2016-05-27T13:40:38.29+00:00] [OBIS] [TRACE:3] [] [] [ecid: aa89eaf6-8094- 45b1-8c59-ea46b2a1e14e-00008dd6,0:1:17:5] [sik: ssi] [tid: 996f4700] [messageid: USER-18] [requestid: e295001d] [sessionid: e2950000] [username: weblogic] -------------------- Sending query to database named 01 - Sample App Data (ORCL) (id: <<387385>>), connection pool named Sample Relational Connection, logical request hash a180d345, physical request hash f5274c5e: [[ WITH SAWITH0 AS (select sum(T418.Revenue) as c1, T653.Per_Name_Year as c2 From BISAMPLE.SAMP_TIME_MTH_D T653 /* D02 Time Month Grain */ , BISAMPLE.SAMP_REVENUE_F T418 /* F10 Billed Rev */ where ( T418.Bill_Mth_Key = T653.Mth_Key ) group by T653.Per_Name_Year)select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3 from ( select 0 as c1, D1.c2 as c2, D1.c1 as c3from SAWITH0 D1order by c2 ) D1 where rownum <= 5000001 #obihackers | freenode
  • 34. Outline • Why this presentation • Overview / What the packaging says • VA / DV / DVD / BICS / ASCS • The actual day in the life of a query • Query execution details • Summary www.dimensionality.ch @Nephentur #obihackers | freenode
  • 35. Intelligent Request Generation www.dimensionality.ch @Nephentur #obihackers | freenode • Receives the queries from the front-end • Answers, SmartView, Visual Analyzer, Data Visualization (Desktop) • Other tools using the Oracle BI Server ODBC API or Web Servives
  • 36. Logical Request Generation www.dimensionality.ch @Nephentur #obihackers | freenode • Creates the actual logical request to be processed • Doesn’t “write the query” • Doesn’t decide which business models, LTSs or sources to use • Preparation stage for Cache Services and Navigator
  • 37. Logical Request Generation www.dimensionality.ch @Nephentur #obihackers | freenode -------------------- SQL Request, logical request hash: ee9cf87d SET VARIABLE OBIS_REFRESH_CACHE=1,QUERY_SRC_CD='Report',SAW_SRC_PATH='/users/weblogic/Preso/Main',PREFER RED_CURRENCY='USD',DISABLE_CACHE=1,LOG_LEVEL=5; SELECT 0 s_0, "D - Sample Federated"."Time"."T05 Per Name Year" s_1, "D - Sample Federated"."Measures"."1a- Revenue (Orcl Db Tables Only)" s_2, "D - Sample Federated"."Measures"."1b- Revenue (Essbase Cube Only)" s_3 FROM "D - Sample Federated" ORDER BY 2 ASC NULLS LAST FETCH FIRST 5000001 ROWS ONLY
  • 38. Cache Services www.dimensionality.ch @Nephentur #obihackers | freenode • Optional step: Caching enabled? • Checks if request can be fulfilled by existing cache entries • Cache doesn’t need to match 1:1 – Existing entries can be aggregated – Subsets can be extracted • Cache can be forcibly circumvented
  • 39. Cache Services www.dimensionality.ch @Nephentur #obihackers | freenode • Optional step: Caching enabled? • Checks if request can be fulfilled by existing cache entries • Cache doesn’t need to match 1:1 – Existing entries can be aggregated – Subsets can be extracted • Cache can be forcibly circumvented
  • 40. Cache Services www.dimensionality.ch @Nephentur #obihackers | freenode • Optional step: Caching enabled? • Checks if request can be fulfilled by existing cache entries • Cache doesn’t need to match 1:1 – Existing entries can be aggregated – Subsets can be extracted • Cache can be forcibly circumvented-------------------- SQL Request, logical request hash: ee9cf87d SET VARIABLE OBIS_REFRESH_CACHE=1,QUERY_SRC_CD='Report',SAW_SRC_PATH='/users/weblogic/Preso/Main',PREFER RED_CURRENCY='USD',DISABLE_CACHE=1,LOG_LEVEL=5; […] ORDER BY 2 ASC NULLS LAST FETCH FIRST 5000001 ROWS ONLY
  • 41. Cache Services www.dimensionality.ch @Nephentur #obihackers | freenode • All SELECT columns – Existing in cache entries or – Derived from cache entries (bins, substring or other analysis-based formulas/functions) • WHERE clause must match or be a subset of cache entries – Query for 10 US states will hit a cache entry containing all the US states • Join conditions must match or be a subset
  • 43. Cache Services www.dimensionality.ch @Nephentur #obihackers | freenode [2016-05-28T15:18:40.151+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6- dd95618de970-000006a9,0:1:23:5] [sik: ssi] [tid: df80700] [messageid: USER-18] [requestid: f7340009] [sessionid: f7340000] [username: weblogic] -------------------- Sending query to database named 01 - Sample App Data (ORCL) (id: <<112556>>), connection pool named Sample Relational Connection, logical request hash e019650e, physical request hash 61dd43b2: [[ WITH SAWITH0 AS (select distinct T795.PER_NAME_YEAR as c1 from BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ ) select D1.c1 as c1, D1.c2 as c2 from ( select 0 as c1, D1.c1 as c2 from SAWITH0 D1 order by c2 ) D1 where rownum <= 5000001
  • 44. Cache Services www.dimensionality.ch @Nephentur #obihackers | freenode [2016-05-28T15:18:40.151+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6- dd95618de970-000006a9,0:1:23:5] [sik: ssi] [tid: df80700] [messageid: USER-18] [requestid: f7340009] [sessionid: f7340000] [username: weblogic] -------------------- Sending query to database named 01 - Sample App Data (ORCL) (id: <<112556>>), connection pool named Sample Relational Connection, logical request hash e019650e, physical request hash 61dd43b2: [[ WITH SAWITH0 AS (select distinct T795.PER_NAME_YEAR as c1 from BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ ) select D1.c1 as c1, D1.c2 as c2 from ( select 0 as c1, D1.c1 as c2 from SAWITH0 D1 order by c2 ) D1 where rownum <= 5000001 [2016-05-28T15:18:40.182+00:00] [OBIS] [TRACE:3] [] [] [ecid: 005D_Wap^cJFw000jzwkno0001Qq000EG0,0] [sik: ssi] [tid: 6fe3700] [messageid: USER-27] [requestid: f7340009] [sessionid: f7340000] [username: weblogic] -------------------- Total Cache elapsed time 0.028 (seconds) [2016-05-28T15:18:40.183+00:00] [OBIS] [TRACE:3] [] [] [ecid: 005D_Wap^cJFw000jzwkno0001Qq000EG0,0] [sik: ssi] [tid: 6fe3700] [messageid: USER-42] [requestid: f7340009] [sessionid: f7340000] [username: weblogic] -------------------- Query Result Cache: [59124] The query for user 'weblogic' was inserted into the query result cache. The filename is '/app/oracle/biee/user_projects/domains/bi/servers/obis1/cache/NQS__736145_55120_0.TBL'. [2016-05-28T15:18:40.183+00:00] [OBIS] [TRACE:3] [] [] [ecid: 005D_Wap^cJFw000jzwkno0001Qq000EG0,0] [sik: ssi] [tid: 6fe3700] [messageid: USER-50] [requestid: f7340009] [sessionid: f7340000] [username: weblogic] -------------------- The logical query seeds the plan cache [[ plan RqList <<307721>> [for database 0:0,9] T1.1 as c1 [for database 0:0,9], T1.2 as c2 [for database 0:0,9] Child Nodes (RqJoinSpec): <<307730>> [for database 0:0,1] RqJoinNode <<307729>> [] CacheTable T1
  • 46. Cache Services www.dimensionality.ch @Nephentur #obihackers | freenode [2016-05-28T15:31:22.112+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:24:5] [sik: ssi] [tid: de7b700] [messageid: USER-21] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- Cache Hit on query: [[ Matching Query: SET VARIABLE OBIS_REFRESH_CACHE=1,QUERY_SRC_CD='Report',SAW_DASHBOARD='/users/weblogic/_portal',SAW_DASHBOARD_PG='page 1',SAW_SRC_PATH='/users/weblogic/Preso/Cache Hit',PREFERRED_CURRENCY='USD';SELECT 0 s_0, "A - Sample Sales"."Time"."T05 Per Name Year" s_1 FROM "A - Sample Sales" ORDER BY 2 ASC NULLS LAST FETCH FIRST 5000001 ROWS ONLY Created by: weblogic ]] [2016-05-28T15:31:22.114+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:24:5] [sik: ssi] [tid: de7b700] [messageid: USER-55] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- Order By Safely Removed [[ 'OrderBy: D1.c2 asc NULLS LAST [ added for join ] ' above the cache hit plan is safely dropped due to the preserved order by ' OrderBy: c2 asc NULLS LAST' from cache entry
  • 47. Cache Services www.dimensionality.ch @Nephentur #obihackers | freenode [2016-05-28T15:31:22.114+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:24:5] [sik: ssi] [tid: de7b700] [messageid: USER-50] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- The logical query seed the plan cache [[ plan RqList <<120136>> [for database 0:0,0] /* FETCH FIRST 5000001 ROWS ONLY */ 0 as c1 [for database 0:0,1], D1.c2 as c2 [for database 0:0,0] Child Nodes (RqJoinSpec): <<120142>> [for database 0:0,0] RqJoinNode <<120143>> [] ( RqList <<120146>> [for database 0:0,9] T1.2 as c2 [for database 0:0,9], T1.2 as c3 [for database 0:0,9] Child Nodes (RqJoinSpec): <<120152>> [for database 0:0,9] RqJoinNode <<120153>> [] CacheTable T1 ) as D1 DetailFilter: not D1.c3 < '2012' [for database 0:0,0]
  • 48. Cache Services www.dimensionality.ch @Nephentur #obihackers | freenode [2016-05-28T15:31:22.139+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:28] [sik: ssi] [tid: de7b700] [messageid: USER-34] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- Query Status: Successful Completion [2016-05-28T15:31:22.139+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:28] [sik: ssi] [tid: de7b700] [messageid: USER-29] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- Physical Query Summary Stats: Number of physical queries 1, Cumulative time 0.000, DB-connect time 0.000 (seconds) [2016-05-28T15:31:22.139+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:28] [sik: ssi] [tid: de7b700] [messageid: USER-24] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- Rows returned to Client 2 [2016-05-28T15:31:22.139+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970-00000820,0:1:28] [sik: ssi] [tid: de7b700] [messageid: USER-33] [requestid: f7340014] [sessionid: f7340000] [username: weblogic] -------------------- Logical Query Summary Stats: Elapsed time 0.030, Total time in BI Server 0.029, Execution time 0.008, Response time 0.029, Compilation time 0.007 (seconds), logical request hash 48047dfa
  • 49. Navigator www.dimensionality.ch @Nephentur #obihackers | freenode • The true brain of the operation • Parses BI Server metadata • Decides on actual logical tables, logical table sources etc. • Uses 3 components to decide on details – Multi-pass / sub-request – Fragmentation – Aggregates
  • 50. Multi-pass / sub-request www.dimensionality.ch @Nephentur #obihackers | freenode [2016-05-27T14:28:54.799+00:00] [OBIS] [TRACE:3] [] [] [ecid: aa89eaf6-8094-45b1-8c59-ea46b2a1e14e-000092ae,0:1:9:3] [sik: ssi] [tid: 996f4700] [messageid: USER-23] [requestid: af740029] [sessionid: af740000] [username: weblogic] -------------------- General Query Info: [[ Repository: ssi, Subject Area: 06 - Federated Sources, Presentation: D - Sample Federated ]] [2016-05-27T14:28:54.800+00:00] [OBIS] [TRACE:3] [] [] [ecid: aa89eaf6-8094-45b1-8c59-ea46b2a1e14e-000092ae,0:1:9:3] [sik: ssi] [tid: 996f4700] [messageid: USER-2] [requestid: af740029] [sessionid: af740000] [username: weblogic] -------------------- Logical Request (before navigation): [[ RqList [1] 0 as c1 GB, D0 Time.T05 Per Name Year as c2 GB, 1a- Revenue (Orcl Db Tables Only):[DAggr(F0 Revenue Base Measures.1a- Revenue (Orcl Db Tables Only) by [ D0 Time.T05 Per Name Year] )] as c3 GB, 1b- Revenue (Essbase Cube Only):[DAggr(F0 Revenue Base Measures.1b- Revenue (Essbase Cube Only) by [ D0 Time.T05 Per Name Year] )] as c4 GB OrderBy: c2 asc NULLS LAST
  • 51. Multi-pass / sub-request www.dimensionality.ch @Nephentur #obihackers | freenode RqBreakFilter <<390156>>[2] [for database 0:0,0] /* FETCH FIRST 5000001 ROWS ONLY */ RqList <<390157>> [for database 0:0,0] 0 as c1 GB [for database 0:0,1], D901.c5 as c2 GB [for database 0:0,0], D901.c1 as c3 GB [for database 3023:28:01 - Sample App Data (ORCL),78], D901.c2 as c4 GB [for database 0:0,0] Child Nodes (RqJoinSpec): <<390167>> [for database 0:0,0] RqJoinNode <<390168>> [] ( RqList <<390171>> [for database 0:0,0] D1.c1 as c1 GB [for database 3023:28:01 - Sample App Data (ORCL),78], D2.c1 as c2 GB [for database 0:0,0], coalesce( D1.c2 , D2.c2) as c5 GB [for database 0:0,0] Child Nodes (RqJoinSpec): <<390181>> [for database 0:0,0] RqJoinNode <<390182>> [] ( RqList <<390186>> [for database 3023:28:01 - Sample App Data (ORCL),78] sum(F10 Billed Rev.Revenue by [ D02 Time Month Grain.Per_Name_Year] ) as c1 GB [for database 3023:28:01 - Sample App Data (ORCL),78], D02 Time Month Grain.Per_Name_Year as c2 GB [for database 3023:28:01 - Sample App Data (ORCL),78] Child Nodes (RqJoinSpec): <<390195>> [for database 3023:28:01 - Sample App Data (ORCL),78] RqJoinNode <<390196>> [(InNode:<<390196>>) (OutNode:<<390199>>) ] SAMP_TIME_MTH_D AS D02 Time Month Grain RqJoinNode <<390199>> [(InNode:<<390196>>) (OutNode:<<390199>>) ] SAMP_REVENUE_F AS F10 Billed Rev DetailFilter: F10 Billed Rev.Bill_Mth_Key = D02 Time Month Grain.Mth_Key [for database 3023:28:01 - Sample App Data (ORCL),78] GroupBy: [ D02 Time Month Grain.Per_Name_Year] [for database 3023:28:01 - Sample App Data (ORCL),78] OrderBy: c2 asc [for database 3023:28:01 - Sample App Data (ORCL),78] ) as D1 FullOuterStitchJoin <<390183>> On D1.c2 = D2.c2; actual join vectors: [ 1 ] = [ 1 ] ( RqList <<390215>> [for database 0:0,0] distinct D1.c1 as c1 [for database 0:0,0], D1.c2 as c2 [for database 0:0,0] Child Nodes (RqJoinSpec): <<390221>> [for database 0:0,0] RqJoinNode <<390222>> [] ( RqList <<390225>> [for database 3023:10:03 - Essbase Sample E1 Flat,84] sum(Sample Flattened.Gross Revenue by [ Sample Flattened.Years] ) as c1 GB [for database 3023:10:03 - Essbase Sample E1 Flat,84], Sample Flattened.Years as c2 GB [for database 3023:10:03 - Essbase Sample E1 Flat,84] Child Nodes (RqJoinSpec): <<390234>> [for database 3023:10:03 - Essbase Sample E1 Flat,84] RqJoinNode <<390235>> [] Sample T12016 GroupBy: [ Sample Flattened.Years] [for database 3023:10:03 - Essbase Sample E1 Flat,84] ) as D1 OrderBy: c2 asc [for database 0:0,0] ) as D2 OrderBy: c5 asc NULLS LAST [for database 0:0,0] ) as D901
  • 52. Multi-pass / sub-request www.dimensionality.ch @Nephentur #obihackers | freenode RqBreakFilter <<390156>>[2] [for database 0:0,0] /* FETCH FIRST 5000001 ROWS ONLY */ RqList <<390157>> [for database 0:0,0] 0 as c1 GB [for database 0:0,1], D901.c5 as c2 GB [for database 0:0,0], D901.c1 as c3 GB [for database 3023:28:01 - Sample App Data (ORCL),78], D901.c2 as c4 GB [for database 0:0,0] Child Nodes (RqJoinSpec): <<390167>> [for database 0:0,0] RqJoinNode <<390168>> [] ( RqList <<390171>> [for database 0:0,0] D1.c1 as c1 GB [for database 3023:28:01 - Sample App Data (ORCL),78], D2.c1 as c2 GB [for database 0:0,0], coalesce( D1.c2 , D2.c2) as c5 GB [for database 0:0,0] Child Nodes (RqJoinSpec): <<390181>> [for database 0:0,0] RqJoinNode <<390182>> [] ( RqList <<390186>> [for database 3023:28:01 - Sample App Data (ORCL),78] sum(F10 Billed Rev.Revenue by [ D02 Time Month Grain.Per_Name_Year] ) as c1 GB [for database 3023:28:01 - Sample App Data (ORCL),78], D02 Time Month Grain.Per_Name_Year as c2 GB [for database 3023:28:01 - Sample App Data (ORCL),78] Child Nodes (RqJoinSpec): <<390195>> [for database 3023:28:01 - Sample App Data (ORCL),78] RqJoinNode <<390196>> [(InNode:<<390196>>) (OutNode:<<390199>>) ] SAMP_TIME_MTH_D AS D02 Time Month Grain RqJoinNode <<390199>> [(InNode:<<390196>>) (OutNode:<<390199>>) ] SAMP_REVENUE_F AS F10 Billed Rev DetailFilter: F10 Billed Rev.Bill_Mth_Key = D02 Time Month Grain.Mth_Key [for database 3023:28:01 - Sample App Data (ORCL),78] GroupBy: [ D02 Time Month Grain.Per_Name_Year] [for database 3023:28:01 - Sample App Data (ORCL),78] OrderBy: c2 asc [for database 3023:28:01 - Sample App Data (ORCL),78] ) as D1 FullOuterStitchJoin <<390183>> On D1.c2 = D2.c2; actual join vectors: [ 1 ] = [ 1 ] ( RqList <<390215>> [for database 0:0,0] distinct D1.c1 as c1 [for database 0:0,0], D1.c2 as c2 [for database 0:0,0] Child Nodes (RqJoinSpec): <<390221>> [for database 0:0,0] RqJoinNode <<390222>> [] ( RqList <<390225>> [for database 3023:10:03 - Essbase Sample E1 Flat,84] sum(Sample Flattened.Gross Revenue by [ Sample Flattened.Years] ) as c1 GB [for database 3023:10:03 - Essbase Sample E1 Flat,84], Sample Flattened.Years as c2 GB [for database 3023:10:03 - Essbase Sample E1 Flat,84] Child Nodes (RqJoinSpec): <<390234>> [for database 3023:10:03 - Essbase Sample E1 Flat,84] RqJoinNode <<390235>> [] Sample T12016 GroupBy: [ Sample Flattened.Years] [for database 3023:10:03 - Essbase Sample E1 Flat,84] ) as D1 OrderBy: c2 asc [for database 0:0,0] ) as D2 OrderBy: c5 asc NULLS LAST [for database 0:0,0] ) as D901 RqBreakFilter <<390156>>[2] [for database 0:0,0] /* FETCH FIRST 5000001 ROWS ONLY */ ( ( RqList <<390186>> [for database 3023:28:01 - Sample App Data (ORCL),78] sum(F10 Billed Rev.Revenue by [ D02 Time Month Grain.Per_Name_Year] ) as c1 GB [for database 3023:28:01 - Sample App Data (ORCL),78], D02 Time Month Grain.Per_Name_Year as c2 GB [for database 3023:28:01 - Sample App Data (ORCL),78] Child Nodes (RqJoinSpec): <<390195>> [for database 3023:28:01 - Sample App Data (ORCL),78] RqJoinNode <<390196>> [(InNode:<<390196>>) (OutNode:<<390199>>) ] SAMP_TIME_MTH_D AS D02 Time Month Grain RqJoinNode <<390199>> [(InNode:<<390196>>) (OutNode:<<390199>>) ] SAMP_REVENUE_F AS F10 Billed Rev DetailFilter: F10 Billed Rev.Bill_Mth_Key = D02 Time Month Grain.Mth_Key [for database 3023:28:01 - Sample App Data (ORCL),78] GroupBy: [ D02 Time Month Grain.Per_Name_Year] [for database 3023:28:01 - Sample App Data (ORCL),78] OrderBy: c2 asc [for database 3023:28:01 - Sample App Data (ORCL),78] ) as D1 FullOuterStitchJoin <<390183>> On D1.c2 = D2.c2; actual join vectors: [ 1 ] = [ 1 ] ( RqList <<390215>> [for database 0:0,0] distinct D1.c1 as c1 [for database 0:0,0], D1.c2 as c2 [for database 0:0,0] Child Nodes (RqJoinSpec): <<390221>> [for database:0,0] RqJoinNode <<390222>> [] ( RqList <<390225>> [for database 3023:10:03 - Essbase Sample E1 Flat,84] sum(Sample Flattened.Gross Revenue by [ Sample Flattened.Years] ) as c1 GB [for database 3023:10:03 - Essbase Sample E1 Flat,84], Sample Flattened.Years as c2 GB [for database 3023:10:03 - Essbase Sample E1 Flat,84] Child Nodes (RqJoinSpec): <<390234>> [for database 3023:10:03 - Essbase Sample E1 Flat,84] RqJoinNode <<390235>> [] Sample T12016 GroupBy: [ Sample Flattened.Years] [for database 3023:10:03 - Essbase Sample E1 Flat,84] ) as D1 ) as D2 ) as D901
  • 53. Multi-pass / sub-request www.dimensionality.ch @Nephentur #obihackers | freenode
  • 54. Multi-pass / sub-request www.dimensionality.ch @Nephentur #obihackers | freenode
  • 55. Multi-pass / sub-request www.dimensionality.ch @Nephentur #obihackers | freenode
  • 56. Multi-pass / sub-request www.dimensionality.ch @Nephentur #obihackers | freenode
  • 57. Multi-pass / sub-request www.dimensionality.ch @Nephentur #obihackers | freenode
  • 58. Multi-pass / sub-request www.dimensionality.ch @Nephentur #obihackers | freenode
  • 59. Multi-pass / sub-request www.dimensionality.ch @Nephentur #obihackers | freenode [2016-05-28T15:54:26.741+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970- 00000be7,0:1:1:5] [sik: ssi] [tid: de7b700] [messageid: USER-18] [requestid: f7340057] [sessionid: f7340000] [username: weblogic] -------------------- Sending query to database named 01 - Sample App Data (ORCL) (id: <<128861>>), connection pool named Sample Relational Connection, logical request hash c0e3e3eb, physical request hash f6e07fd4: [[ select sum(T432.Revenue_Usd) as c1, T795.PER_NAME_YEAR as c2 from BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ , BISAMPLE.SAMP_REVENUE_CURR_F T432 /* F19 Rev. (Converted) */ where ( T432.Bill_Qtr_Key = T795.QTR_KEY ) group by T795.PER_NAME_YEAR order by c2 ]] [2016-05-28T15:54:26.742+00:00] [OBIS] [TRACE:3] [] [] [ecid: 86cb6a39-9f56-4305-a0e6-dd95618de970- 00000be7,0:1:1:5] [sik: ssi] [tid: de7b700] [messageid: USER-18] [requestid: f7340057] [sessionid: f7340000] [username: weblogic] -------------------- Sending query to database named 01 - Sample App Data (ORCL) (id: <<128903>>), connection pool named Sample Relational Connection, logical request hash c0e3e3eb, physical request hash 343379a9: [[ select sum(T216.Revenue) as c1, T795.PER_NAME_YEAR as c2 from BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ , BISAMPLE.SAMP_REVENUE_FA2 T216 /* F21 Rev. (Aggregate 2) */ where ( T216.Bill_Qtr_Key = T795.QTR_KEY ) group by T795.PER_NAME_YEAR order by c2
  • 60. Fragmentation www.dimensionality.ch @Nephentur #obihackers | freenode • Are fragmented logical table sources being used?
  • 61. Fragmentation www.dimensionality.ch @Nephentur #obihackers | freenode • Are fragmented logical table sources being used? [...] RqJoinNode <<406134>> [] (( RqList <<406138>> [for database 3023:16:Y01 - Custom Demo Datasets,78] WEATHER_HAIL.STATE as c2 [for database 3023:16:Y01 - Custom Demo Datasets,78], 'Hail' as c3 [for database 3023:16:Y01 - Custom Demo Datasets,78], WEATHER_HAIL.ID as c4 [for database 3023:16:Y01 - Custom Demo Datasets,78] Child Nodes (RqJoinSpec): <<406146>> [for database 3023:16:Y01 - Custom Demo Datasets,78] RqJoinNode <<406147>> [] WEATHER_HAIL T403 RqUnion All <<406137>> [for database 3023:16:Y01 - Custom Demo Datasets,78] RqList <<406150>> [for database 3023:16:Y01 - Custom Demo Datasets,78] WEATHER_TORNADOES.STATE as c2 [for database 3023:16:Y01 - Custom Demo Datasets,78], 'Tornado' as c3 [for database 3023:16:Y01 - Custom Demo Datasets,78], WEATHER_TORNADOES.ID as c4 [for database 3023:16:Y01 - Custom Demo Datasets,78] Child Nodes (RqJoinSpec): <<406158>> [for database 3023:16:Y01 - Custom Demo Datasets,78] RqJoinNode <<406159>> [] WEATHER_TORNADOES T525 RqUnion All <<406137>> [for database 3023:16:Y01 - Custom Demo Datasets,78] RqList <<406162>> [for database 3023:16:Y01 - Custom Demo Datasets,78] WEATHER_WIND.STATE as c2 [for database 3023:16:Y01 - Custom Demo Datasets,78], 'Wind' as c3 [for database 3023:16:Y01 - Custom Demo Datasets,78], WEATHER_WIND.ID as c4 [for database 3023:16:Y01 - Custom Demo Datasets,78] Child Nodes (RqJoinSpec): <<406170>> [for database 3023:16:Y01 - Custom Demo Datasets,78] RqJoinNode <<406171>> [] WEATHER_WIND T375) ) as D6 [...]
  • 63. Fragmentation www.dimensionality.ch @Nephentur #obihackers | freenode • Are fragmented logical table sources being used?
  • 64. Aggregate Navigator www.dimensionality.ch @Nephentur #obihackers | freenode • Which LTS contains data on a level of aggregation to fulfill the query with the least amount of effort? • Hierarchy logical level # of elements • LTS priority group • LTS order
  • 66. Aggregate Navigator www.dimensionality.ch @Nephentur #obihackers | freenode WITH SAWITH0 AS (select sum(T216.Revenue) as c1, T795.PER_NAME_YEAR as c2 from BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ ,BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ ,BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ ,BISAMPLE.SAMP_TIME_QTR_D T795 /* D03 Time Quarter Grain */ , BISAMPLE.SAMP_REVENUE_FA2 T216 /* F21 Rev. (Aggregate 2) */ where ( T216.Bill_Qtr_Key = T795.QTR_KEY ) group by T795.PER_NAME_YEAR) select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3 from ( select 0 as c1, D1.c2 as c2, D1.c1 as c3 from SAWITH0 D1 order by c2 ) D1 where rownum <= 5000001
  • 68. Aggregate Navigator www.dimensionality.ch @Nephentur #obihackers | freenode WITH SAWITH0 AS (select sum(T418.Revenue) as c1, T42.Calendar_Date as c2, T42.Per_Name_Year as c3 from BISAMPLE.SAMP_TIME_DAY_D T42 /* D01 Time Day Grain */ ,BISAMPLE.SAMP_TIME_DAY_D T42 /* D01 Time Day Grain */ ,BISAMPLE.SAMP_TIME_DAY_D T42 /* D01 Time Day Grain */ ,BISAMPLE.SAMP_TIME_DAY_D T42 /* D01 Time Day Grain */ , BISAMPLE.SAMP_REVENUE_F T418 /* F10 Billed Rev */ where ( T42.Calendar_Date = T418.Bill_Day_Dt and T42.Per_Name_Year = '2012' ) group by T42.Calendar_Date, T42.Per_Name_Year) select D1.c1 as c1, D1.c2 as c2, D1.c3 as c3, D1.c4 as c4 from ( select 0 as c1, D1.c2 as c2, D1.c3 as c3, D1.c1 as c4 from SAWITH0 D1 order by c3, c2 ) D1 where rownum <= 5000001
  • 69. Optimized Query Rewrites www.dimensionality.ch @Nephentur #obihackers | freenode • Writes the effective query sent against a source • Source type • Source features • Native function shipping driven by these configurations (and version)
  • 70. Optimized Query Rewrites www.dimensionality.ch @Nephentur #obihackers | freenode
  • 71. Optimized Query Rewrites www.dimensionality.ch @Nephentur #obihackers | freenode
  • 72. Optimized Query Rewrites www.dimensionality.ch @Nephentur #obihackers | freenode • Results are retrieved from sources • Combined and post-calculated as needed • Written into the cache • Passed to the initially calling interface
  • 73. Outline • Why this presentation • Overview / What the packaging says • VA / DV / DVD / BICS / ASCS • The actual day in the life of a query • Query execution details • Summary www.dimensionality.ch @Nephentur #obihackers | freenode
  • 74. Summary www.dimensionality.ch @Nephentur #obihackers | freenode 1. Know the flow This is where very few magic should happen This is where THE magic happens We don’t really care about this part This is where the actual workload should happen Browser, SmartView, other tools BI Server WLS Managed Server Presentation Server Sources Browser, SmartView, other tools BI Server WLS Managed Server Presentation Server