0% found this document useful (0 votes)
68 views16 pages

Scheurich - Final

The document discusses how Oracle Applications data access has traditionally required complex queries for end users to retrieve information. It proposes that providing better tools and generic data models could allow for more intuitive information access. As an example, it shows a complex Oracle query needed to retrieve sample revenue data by region and customer, and poses the question of how a reporting tool could simplify such queries from the end user's perspective.

Uploaded by

vaich1
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
68 views16 pages

Scheurich - Final

The document discusses how Oracle Applications data access has traditionally required complex queries for end users to retrieve information. It proposes that providing better tools and generic data models could allow for more intuitive information access. As an example, it shows a complex Oracle query needed to retrieve sample revenue data by region and customer, and poses the question of how a reporting tool could simplify such queries from the end user's perspective.

Uploaded by

vaich1
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 16

DecisionPoint Applications

It’s The Data Model, Dummy


By: Larry Scheurich
Chief Technology Officer

March 8th, 2004


Let’s Have Some Fun To Start…

• Be the first to answer the following questions, and receive a prize


– Each person can only win once
• What year was the first version of Oracle Applications ever
implemented (outside of Oracle)?
• What was the first module ever implemented?
• What was the name of the company that first implemented
Oracle Applications?
• What business was that company in?
• Who was the person responsible for the implementation?

2
DecisionPoint Applications: Data Access Myth

The primary limitation in the ability of end


users accessing information is the user
interface.

More Information Access


=
Better Tools + Generic Data Models

3
DecisionPoint Applications: An Oracle Apps Example

In order to get data that looks like this…

Sales Region Customer Revenue Amount Region Revenue Amount


West ABC Retail $ 1,250,000.00 $ 4,235,000.00
Retread Tires Company $ 2,450,000.00
Office Supplies, Inc $ 535,000.00
East Furniture Supply, Inc $ 252,000.00 $ 252,000.00
Central Photo Imaging Company $ 715,000.00 $ 3,740,500.00
XYZ Pharmaceuticals $ 1,125,500.00
Food Retail Corporation $ 825,000.00
City Transport $ 1,075,000.00
UK Legal Supply, LTD $ 1,555,000.00 $ 1,790,000.00
Citibus Transport, LTD $ 235,000.00

Revenue By Region

UK
18%

West
42%

Central
37% East
3%

4
DecisionPoint Applications: An Oracle Apps Example

You have to run a query that looks like this…


SELECT NVL(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS,
'NA'),NVL(TO_CHAR(RA_CUSTOMER_TRX_ALL.ORG_ID)||'-'||TO_CHAR
(RA_CUSTOMER_TRX_ALL.CUST_TRX_TYPE_ID),'NA'),DECODE
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, 'REC', NVL
) AND /* Enable for Territory Flexfield */ RA_CUSTOMER_TRX_ALL.TERRITORY_ID =
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCTD_AMOUNT,0),0),DECODE
RA_TERRITORIES.TERRITORY_ID (+) AND
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS,'REV', NVL
RA_CUST_TRX_LINE_GL_DIST_ALL.CUST_TRX_LINE_SALESREP_ID =
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCTD_AMOUNT,0), 0),DECODE
RA_CUST_TRX_LINE_SALESREPS_ALL.CUST_TRX_LINE_SALESREP_ID (+) AND
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS,
RA_CUSTOMER_TRX_LINES_ALL.INTERFACE_LINE_ATTRIBUTE6 = OE_ORDER_LINES_ALL.LINE_ID
'REC', 0, 'REV', 0, 'UNBILL', 0, 'UNEARN', 0,
'-99999'),RA_CUST_TRX_LINE_GL_DIST_ALL.ORIGINAL_GL_DATE, (+) AND OE_ORDER_LINES_ALL.HEADER_ID = OE_ORDER_HEADERS_ALL.HEADER_ID (+) AND /*
NVL(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCTD_AMOUNT,0)
RA_CUST_TRX_LINE_GL_DIST_ALL.PERCENT,'DEC-98',NVL(TO_CHAR Enable for Accounting Flexfield */
),DECODE(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, 'UNBILL',
(RA_CUST_TRX_LINE_GL_DIST_ALL.CUSTOMER_TRX_ID),'NA'),NVL GL_CODE_COMBINATIONS.CODE_COMBINATION_ID =
NVL(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCTD_AMOUNT,0),0),DECODE
(RA_CUST_TRX_LINE_SALESREPS_ALL.SALESREP_ID,-99999),NVL RA_CUST_TRX_LINE_GL_DIST_ALL.CODE_COMBINATION_ID AND /* Non Change Data Capture
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, 'UNEARN', NVL
*/ RA_CUST_TRX_LINE_GL_DIST_ALL.GL_DATE>=TO_DATE('', 'DD-MON-YYYY') AND /* Non
(RA_CUST_TRX_LINE_GL_DIST_ALL.SET_OF_BOOKS_ID,-99999),TO_CHAR
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCTD_AMOUNT,0),0),NVL(TO_CHAR
Change Data Capture */ RA_CUST_TRX_LINE_GL_DIST_ALL.GL_DATE<= TO_DATE('
(RA_CUST_TRX_LINE_GL_DIST_ALL.CUST_TRX_LINE_GL_DIST_ID),DECODE
(RA_CUSTOMER_TRX_ALL.BILL_TO_SITE_USE_ID),'NA'),
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, 23:59:59', 'DD-MON-YYYY HH24:MI:SS') AND
'REC', NVL
RA_CUST_TRX_LINE_GL_DIST_ALL.COMMENTS,NVL(TRUNC
(RA_CUST_TRX_LINE_GL_DIST_ALL.AMOUNT,0),0),NVL RA_CUST_TRX_LINE_GL_DIST_ALL.SET_OF_BOOKS_ID IN (1) AND
(RA_CUST_TRX_LINE_GL_DIST_ALL.GL_DATE),'31-DEC-4712'),
(RA_CUSTOMER_TRX_ALL.INVOICE_CURRENCY_CODE,'NA'),DECODE RA_CUSTOMER_TRX_ALL.COMPLETE_FLAG='Y' AND
RA_CUST_TRX_LINE_GL_DIST_ALL.GL_POSTED_DATE,DECODE
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, RA_CUST_TRX_LINE_GL_DIST_ALL.CUSTOMER_TRX_LINE_ID=RA_CUSTOMER_TRX_LINES_ALL.CUST
'REV', NVL
(RA_CUSTOMER_TRX_LINES_ALL.INVENTORY_ITEM_ID,NULL,'NA',DECODE
(RA_CUST_TRX_LINE_GL_DIST_ALL.AMOUNT,0),0),DECODE OMER_TRX_LINE_ID
(OE_ORDER_LINES_ALL.SHIP_FROM_ORG_ID,NULL,'NA',
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, (+) AND
RA_CUSTOMER_TRX_LINES_ALL.INVENTORY_ITEM_ID||'-'||OE_ORDER_LINES_ALL.SHIP_FROM_ORG_ID)
'REC', 0, 'REV', 0, 'UNBILL', 0, 'UNEARN', 0, RA_CUST_TRX_LINE_GL_DIST_ALL.CUSTOMER_TRX_ID=RA_CUSTOMER_TRX_ALL.CUSTOMER_TRX_I
),NVL(TRUNC(RA_CUSTOMER_TRX_ALL.TRX_DATE),'31-DEC-4712'),
NVL(RA_CUST_TRX_LINE_GL_DIST_ALL.AMOUNT,0) D
RA_CUSTOMER_TRX_LINES_ALL.LINE_NUMBER,NVL(RA_CUSTOMER_TRX_LINES_ALL.LINE_TYPE,
'NA'),RA_CUST_TRX_LINE_GL_DIST_ALL.LAST_UPDATE_DATE, ),DECODE(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, 'UNBILL',
NVL(RA_CUST_TRX_LINE_GL_DIST_ALL.AMOUNT,0),0),DECODE
RA_CUST_TRX_LINE_GL_DIST_ALL.MRC_ACCTD_AMOUNT,NVL
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, 'UNEARN', NVL
(RA_CUST_TRX_LINE_GL_DIST_ALL.ORG_ID,-99999),NVL(OE_ORDER_HEADERS_ALL.HEADER_ID,
(RA_CUST_TRX_LINE_GL_DIST_ALL.AMOUNT,0), 0) FROM GL.GL_CODE_COMBINATIONS@VIS1158
GL_CODE_COMBINATIONS,ONT.OE_ORDER_LINES_ALL@VIS1158 OE_ORDER_LINES_ALL,
AR.RA_TERRITORIES@VIS1158 RA_TERRITORIES,ONT.OE_ORDER_HEADERS_ALL@VIS1158
OE_ORDER_HEADERS_ALL,AR.RA_CUSTOMER_TRX_ALL@VIS1158 RA_CUSTOMER_TRX_ALL,
AR.RA_CUSTOMER_TRX_LINES_ALL@VIS1158 RA_CUSTOMER_TRX_LINES_ALL,
AR.RA_CUST_TRX_LINE_GL_DIST_ALL@VIS1158 RA_CUST_TRX_LINE_GL_DIST_ALL,
AR.RA_CUST_TRX_LINE_SALESREPS_ALL@VIS1158 RA_CUST_TRX_LINE_SALESREPS_ALL WHERE (
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS <> 'REC') OR
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS = 'REC' AND
RA_CUST_TRX_LINE_GL_DIST_ALL.LATEST_REC_FLAG = 'Y' )

5
DecisionPoint Applications: What if?

• What if you had a query/reporting tool that made the complex query
simple from an end user perspective?
– Pros
• With the appropriate query tool configuration, changing the query properties is very
easy
– Different display columns
– Different summarizations
– Different constraints (i.e. time periods, regions, etc.)
• Each user can format the data in a manner that suits them best
– Spreadsheet
– Chart
– HTML

6
DecisionPoint Applications: What if?

• What if you had a query/reporting tool that made the complex query simple from
an end user perspective?
– Cons
• Adding data elements that do not already exist in the environment require IT resources
– Different database tables
– Different database joins
• End user information (labels and descriptions) are manually entered by IT staff
– RA_TERRITORIES.SEGMENT1 = Sales Country
• As more tables and joins are added to the query, the performance for the end user becomes
slower, dramatically in some cases
• Data granularity issues
– If a table is added that has different levels of granularity, numeric amounts may or may
not add up correctly. It is left to the user to decide how/what to do.

Query tools help, but the cons far outweigh the pros
7
DecisionPoint Applications: Data Access Reality

While end user access is important, the more


critical, yet unseen, component is how the
information is structured.

More Information Access


=
Better Tools + Better Data Models
8
DecisionPoint Applications: A DecisionPoint Example

In order to get data that looks like this…

Sales Region Customer Revenue Amount Region Revenue Amount


West ABC Retail $ 1,250,000.00 $ 4,235,000.00
Retread Tires Company $ 2,450,000.00
Office Supplies, Inc $ 535,000.00
East Furniture Supply, Inc $ 252,000.00 $ 252,000.00
Central Photo Imaging Company $ 715,000.00 $ 3,740,500.00
XYZ Pharmaceuticals $ 1,125,500.00
Food Retail Corporation $ 825,000.00
City Transport $ 1,075,000.00
UK Legal Supply, LTD $ 1,555,000.00 $ 1,790,000.00
Citibus Transport, LTD $ 235,000.00

Revenue By Region

UK
18%

West
42%

Central
37% East
3%

9
DecisionPoint Applications: A DecisionPoint Example

You have to run a query that looks like this…


SELECT NVL(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS,
'NA'),NVL(TO_CHAR(RA_CUSTOMER_TRX_ALL.ORG_ID)||'-'||TO_CHAR
(RA_CUSTOMER_TRX_ALL.CUST_TRX_TYPE_ID),'NA'),DECODE
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, 'REC', NVL
) AND /* Enable for Territory Flexfield */ RA_CUSTOMER_TRX_ALL.TERRITORY_ID =
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCTD_AMOUNT,0),0),DECODE
RA_TERRITORIES.TERRITORY_ID (+) AND
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS,'REV', NVL
RA_CUST_TRX_LINE_GL_DIST_ALL.CUST_TRX_LINE_SALESREP_ID =
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCTD_AMOUNT,0), 0),DECODE
RA_CUST_TRX_LINE_SALESREPS_ALL.CUST_TRX_LINE_SALESREP_ID (+) AND
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS,
RA_CUSTOMER_TRX_LINES_ALL.INTERFACE_LINE_ATTRIBUTE6 = OE_ORDER_LINES_ALL.LINE_ID
'REC', 0, 'REV', 0, 'UNBILL', 0, 'UNEARN', 0,
'-99999'),RA_CUST_TRX_LINE_GL_DIST_ALL.ORIGINAL_GL_DATE, (+) AND OE_ORDER_LINES_ALL.HEADER_ID = OE_ORDER_HEADERS_ALL.HEADER_ID (+) AND /*
NVL(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCTD_AMOUNT,0)
RA_CUST_TRX_LINE_GL_DIST_ALL.PERCENT,'DEC-98',NVL(TO_CHAR Enable for Accounting Flexfield */
),DECODE(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, 'UNBILL',
(RA_CUST_TRX_LINE_GL_DIST_ALL.CUSTOMER_TRX_ID),'NA'),NVL GL_CODE_COMBINATIONS.CODE_COMBINATION_ID =
NVL(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCTD_AMOUNT,0),0),DECODE
(RA_CUST_TRX_LINE_SALESREPS_ALL.SALESREP_ID,-99999),NVL RA_CUST_TRX_LINE_GL_DIST_ALL.CODE_COMBINATION_ID AND /* Non Change Data Capture
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, 'UNEARN', NVL
*/ RA_CUST_TRX_LINE_GL_DIST_ALL.GL_DATE>=TO_DATE('', 'DD-MON-YYYY') AND /* Non
(RA_CUST_TRX_LINE_GL_DIST_ALL.SET_OF_BOOKS_ID,-99999),TO_CHAR
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCTD_AMOUNT,0),0),NVL(TO_CHAR
SELECT SALES_REGION_NAME,CUSTOMER_NAME,SUM(REVENUE)Change Data Capture */ RA_CUST_TRX_LINE_GL_DIST_ALL.GL_DATE<= TO_DATE('
(RA_CUST_TRX_LINE_GL_DIST_ALL.CUST_TRX_LINE_GL_DIST_ID),DECODE
(RA_CUSTOMER_TRX_ALL.BILL_TO_SITE_USE_ID),'NA'),
RA_CUST_TRX_LINE_GL_DIST_ALL.COMMENTS,NVL(TRUNC FROM SALES_REGIONS,CUSTOMER,REVENUE 23:59:59',
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, 'DD-MON-YYYY HH24:MI:SS') AND
'REC', NVL
WHERE SALES_REGION.REGION_KEY=REVENUE.REGION_KEY
(RA_CUST_TRX_LINE_GL_DIST_ALL.AMOUNT,0),0),NVL RA_CUST_TRX_LINE_GL_DIST_ALL.SET_OF_BOOKS_ID IN (1) AND
(RA_CUST_TRX_LINE_GL_DIST_ALL.GL_DATE),'31-DEC-4712'),
AND CUSTOMER.CUSTOMER_KEY=REVENUE.CUSTOMER_KEY
(RA_CUSTOMER_TRX_ALL.INVOICE_CURRENCY_CODE,'NA'),DECODE RA_CUSTOMER_TRX_ALL.COMPLETE_FLAG='Y' AND
RA_CUST_TRX_LINE_GL_DIST_ALL.GL_POSTED_DATE,DECODE
AND REVENUE.TIME_PERIOD=‘JAN-04’
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, RA_CUST_TRX_LINE_GL_DIST_ALL.CUSTOMER_TRX_LINE_ID=RA_CUSTOMER_TRX_LINES_ALL.CUST
'REV', NVL
(RA_CUSTOMER_TRX_LINES_ALL.INVENTORY_ITEM_ID,NULL,'NA',DECODE
AND REVENUE.CURRENCY=‘USD’
(RA_CUST_TRX_LINE_GL_DIST_ALL.AMOUNT,0),0),DECODE OMER_TRX_LINE_ID
(OE_ORDER_LINES_ALL.SHIP_FROM_ORG_ID,NULL,'NA',
GROUP BY SALES_REGION_NAME,CUSTOMER_NAME
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, (+) AND
RA_CUSTOMER_TRX_LINES_ALL.INVENTORY_ITEM_ID||'-'||OE_ORDER_LINES_ALL.SHIP_FROM_ORG_ID)
'REC', 0, 'REV', 0, 'UNBILL', 0, 'UNEARN', 0, RA_CUST_TRX_LINE_GL_DIST_ALL.CUSTOMER_TRX_ID=RA_CUSTOMER_TRX_ALL.CUSTOMER_TRX_I
),NVL(TRUNC(RA_CUSTOMER_TRX_ALL.TRX_DATE),'31-DEC-4712'),
NVL(RA_CUST_TRX_LINE_GL_DIST_ALL.AMOUNT,0) D
RA_CUSTOMER_TRX_LINES_ALL.LINE_NUMBER,NVL(RA_CUSTOMER_TRX_LINES_ALL.LINE_TYPE,
'NA'),RA_CUST_TRX_LINE_GL_DIST_ALL.LAST_UPDATE_DATE, ),DECODE(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, 'UNBILL',
NVL(RA_CUST_TRX_LINE_GL_DIST_ALL.AMOUNT,0),0),DECODE
RA_CUST_TRX_LINE_GL_DIST_ALL.MRC_ACCTD_AMOUNT,NVL
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS, 'UNEARN', NVL
(RA_CUST_TRX_LINE_GL_DIST_ALL.ORG_ID,-99999),NVL(OE_ORDER_HEADERS_ALL.HEADER_ID,
(RA_CUST_TRX_LINE_GL_DIST_ALL.AMOUNT,0), 0) FROM GL.GL_CODE_COMBINATIONS@VIS1158
GL_CODE_COMBINATIONS,ONT.OE_ORDER_LINES_ALL@VIS1158 OE_ORDER_LINES_ALL,
AR.RA_TERRITORIES@VIS1158 RA_TERRITORIES,ONT.OE_ORDER_HEADERS_ALL@VIS1158
OE_ORDER_HEADERS_ALL,AR.RA_CUSTOMER_TRX_ALL@VIS1158 RA_CUSTOMER_TRX_ALL,
AR.RA_CUSTOMER_TRX_LINES_ALL@VIS1158 RA_CUSTOMER_TRX_LINES_ALL,
AR.RA_CUST_TRX_LINE_GL_DIST_ALL@VIS1158 RA_CUST_TRX_LINE_GL_DIST_ALL,
AR.RA_CUST_TRX_LINE_SALESREPS_ALL@VIS1158 RA_CUST_TRX_LINE_SALESREPS_ALL WHERE (
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS <> 'REC') OR
(RA_CUST_TRX_LINE_GL_DIST_ALL.ACCOUNT_CLASS = 'REC' AND
RA_CUST_TRX_LINE_GL_DIST_ALL.LATEST_REC_FLAG = 'Y' )

10
DecisionPoint Applications: What if?

• What if you had a query/reporting tool that made the simple query more simple
from an end user perspective?
– Pros
• With the appropriate query tool configuration, changing the query properties is very easy
– Different display columns
– Different summarizations
– Different constraints (i.e. time periods, regions, etc.)
• Each user can format the data in a manner that suits them best
– Spreadsheet
– Chart
– HTML
• Much less IT involvement for any change related to data models
– Additional tables
– Additional joins
– Table/Column names that are setup to be user recognizable
• Any query performance issues are easily diagnosed and resolved

11
DecisionPoint Applications: What if?

• What if you had a query/reporting tool that made the simple query
more simple from an end user perspective?
– Cons
• There is a process involved in transforming the data from complex/cryptic
structures to simple/recognizable structures
– Data may not be as timely as some end users need it
– Processes need to be put in place to ensure data accuracy in the
transformation process

Query tools help, and the pros far outweigh the cons
12
DecisionPoint Applications: The Final Frontier

• What about users that need to “navigate” (i.e. move from one
model to another for additional information) the data?
– Even with simple data models, end users still need the ability to navigate
from one data model to the next, seamlessly, in the process of getting more
detailed information when required
• Requirements
– Shared dimensions – Users can only navigate from one data model to the next
when there are a common set of dimensions with which to navigate by
– Tool intelligence – The end user tool needs to be smart enough to know how to
let end users navigate within and between data models

Even the best end user tools on the market are significantly lacking when
it comes to data model navigation

13
DecisionPoint Applications: Data Access Reality

While end user access is important, the more


critical, yet unseen, component is how the
information is structured.

More Information Access


=
Better Tools + Better Data Models
14
Related Customer Stories

• Quantum
– Noetix
– 13 different client tool environments
• Oracle Express, FRx, Discoverer,
Cognos, etc.
• Oregon Health Sciences University
(OHSU)
The right end user tool DOES NOT
make your data access
– Noetix
problem any easier
– Discoverer
• PGA
– Noetix
– FRx, Discoverer

15
DecisionPoint Applications

You might also like