320 likes | 418 Views
The Florida State University. Transactional Reporting in the real world with OBIEE. Session # 27777 March 2, 2010. [NQODBC] [SQL_STATE: S1000] [nQSError: 10058] A general error has occurred.
E N D
The Florida State University Transactional Reporting in the real world with OBIEE Session #27777 March 2, 2010
[NQODBC] [SQL_STATE: S1000] [nQSError: 10058] A general error has occurred. [nQSError: 14026] Unable to navigate requested expression. Please fix the metadata consistency warnings.
The Florida State University Current Enrollment 40,255
Florida State University …is a premier, comprehensive, graduate research university, with both law and medical schools. • Annual Operating Budget: $1.1B • Over 40,000 students • Over 13,000 employees • Over 13,000 biweekly paychecks • Over $18 million in biweekly payroll
Overview • Introduction to FSU’s BI Initiative • Overview of FSU’s OBIEE Implementation • Current BI State • What is Transactional/OLTP Reporting? • Physical/Logical Layer Deployment Issues • Answers… Just turn it on! • Tuning in the real World; Why is it SOOOO slow? • Closing Tips • Questions & Comments
FSU and Oracle PeopleSoft • Implemented Financials 8.4, Portal 8.8, and EPM 8.8 in June 2004 • Implemented HR/Payroll 8.8 in Dec 2004 • Upgraded HR & EPM Suites to 8.9 in April 2006 • Upgraded FI Suite to 8.9 in Nov 2006 • Upgraded EPM & Portal Suites to 9.0 in Nov 2007 • Upgraded HR Suite to 9.0 in Oct 2008 • Upgraded FI Suite to 9.0 in April 2009 • Deployed EPM 9.0 & OBIEE 10.1.3.3(Windows) in March 2008 • Upgraded OBIEE 10.1.3.4(Linux) in April 2009
FSU’s BI Profile • Deployed new BI Solution 2 years ago • Solution meets the reporting needs of our the major Administrative organizations on Campus • Consists of 25 Dashboards and 27 Subject Areas • Over 1200 distinct users & 2.5 Million Requests • Dashboard Consumption & Self Service Reporting • Currently in Phase III of our Deployment (Standardization of Campus BI on OBIEE) • 2009 Oracle Innovation Award Recipient
What is Transactional Reporting? Simply put, reporting against any source database which stores information outside of the normal constructs of a dimensional data warehouse model.
Achieving success… The easy way! • Planning of Subject areas is a must • Business to source column mapping is key • You just can’t live without self service reporting… unless you have an unlimited budget for report developers. • Stop, Drop and Roll is no way to deploy a BI Solution • Subject Areas should be released in a phased approach
Achieving success… The easy way! • Stars are the Goal… Even in the transactional world
Achieving success… The easy way! • Subject area content should be grouped by business process. • Subject Areas typically align tightly with Dashboard Structure. • A Self Service user should be able to get at the data he/she needs to create business appropriate reports without tracking through 50 tables. • To many subject areas and you have another BIG problem; complexity.
Physical/Logical Layer Issues Now for all of the “Techie” stuff!
Physical Layer Issues • Circular Joins • Typically happens when a table has more than one route to complete a join. • Always import tables without FKs turned on. • Can be resolved easily with aliases • Aliases should always be named in a fashion which relates them to the logical layer subject matter.
Physical Layer Issues • Nulls • It is absolutely imperative to set NULL flags correctly. Typical OBIEE Psuedo SQL Select fields from Select (Detail Rows) DR, Select (SubTotal Rows) SR Where DR.SubTotal Field = SR.SubTotal Field Nullable Join nvl(DR.c1 , 88.0) = nvl(SR.c1 , 88.0) and nvl(DR.c1 , 99.0) = nvl(SR.c1 , 99.0)
Physical Layer Issues • Nulls • The 88.0 and 99.0 are auto generated based on the field being null. • For Char/Varchar fields a ‘q’ or ‘z’ are used. • Very dangerous especially if the join field contains the above null replacement characters. • Null when not nullable – Correct answer but can’t use index • Nullable when not null – Incorrect answers as an equal join would be used thereby removing rows from the result set which could be relevant.
Physical Layer Issues • Recommended Join Structure • Get it right the first time, physical joins are typically never touched after initial implementation. • All joins should be PK/FK • This will (in most cases) guarantee insulation against typical errors which OBIEE generates due to not using standard dimensional model • Only ONE PK should exist on each table. • Driving tables are your friend; as long as you know the data structure.
Physical Layer Issues • Row level security • Delivered is handled via joins to SJT tables • In our case we found it to be better performing by using the content filtering options on a logical table source. • Must be applied to each pseudo fact table in order to achieve row level security • Removes the need for a join by simply placing the restriction in a where clause. • Must use Repository variable(s) in order to use this method.
Physical Layer Issues • Federated Joins • Federated joins should be avoided at ALL costs. • If reduction in federated joins isn’t possible; you should always set driving tables in order to reduce cost • Tune MAX_PARAMETERS_PER_DRIVE_JOIN to control how many in list operators can be sent per query of a drive. • Tune MAX_QUERIES_PER_DRIVE_JOIN to control the number of queries can be sent to formulate a driving join result set.
Physical Layer Issues • Poorly Tuned Database features • Just because it’s the default doesn’t mean it’s correct! • Most defaults take a very reserved approach as to limit errors in the BI Server. • Common objects which should be investigated are: COUNT_DISTINCT_SUPPORTED DERIVED_TABLES_SUPPORTED CASE Statement Support Running Aggregate support(IE, Sum,Count,etc)
Logical Layer Issues • Calculations in the Logical Layer • Keep one thing in mind when developing Logical objects; keep the objects as close to the database as possible. Ex: Given the below Case statements, imagine having 20 or so fields in the same scenario listed below. Those fields join to 5 smaller code lookup type tables. You create and answers document which has 5 fields used in the filter and return all 20 fields with a sum on each one. Case when “Field1” = ‘A’ then 1 else 0 end Case when “Field2” = ‘A’ then 1 else 0 end Case when “Field3” = ‘A’ then 1 else 0 end
Logical Layer Issues • Problems? • The resulting SQL would contain somewhere in the neighborhood of 4.25 MILLION characters. • The compile time for OBIEE to even generate the SQL could well exceed 70 seconds • The BI Server process is pegged at 100% just to generate this SQL query for the 70 seconds mentioned above. -------------------- Logical Query Summary Stats: Elapsed time 74, Response time 74, Compilation time 72 (seconds)
Logical Layer Issues • So what was the fix? • Stacking of calculations on a case statement isn’t very wise if the corresponding case can be handled in a database view. The best mix seems to be around 2~3 calculations deep and you should look at other alternatives. • Aliasing tables to resolve “Fan Traps” which OBIEE didn’t know how to handle. • DB Features of support “CASE” logic; There are 2 of these both on the DB Features tab. • The Result: -------------------- Logical Query Summary Stats: Elapsed time 4, Response time 4, Compilation time 0 (seconds)
Answers Issues Answers… Can I just turn it on?
Answers Issues • Query Limits? What’s that? • It’s not nice to lock those performing transactions out of the system because an answers user didn’t understand the meaning of a filter. • Even properly trained developers still have “whoopsie” moments! • We’re actively running reports against the Transactional System… need I say more?
Answers Issues • Query Limits! Query Limits! Query Limits! • An Answers Self Service user should not be retrieving 10,000 rows through the web in a properly designed transactional reporting system. • Is set in the physical layer of the repository based on the role/groups a user belongs to and can limit based on row count, execution time or write back abilities
Answers Issues • nAminG conVentionS! • Consistent naming of core business related fields. • Default aggregation standards by field type should be defined at planning stage. • Rename object names in the logical and presentation layer instead of setting display name. • Set display name doesn’t account for formulas which refer to the actual column name and not the display name
Answers Issues • Metadata Generator • Manually Automatic process from the admin tool, which must be generated and uploaded to a specific location on the Presentation Server. • Allows users to dig into a presentation column and view the lineage about the column
Answers Issues • Core Developer Subject Area • Composed of many tables sometimes between 50-100 • Allows a developer to test reporting options across all subject matter areas related to a specific database connection. • Most newly modeled tables start in this area, with subsequent copies to smaller business related subject areas. • Allows for testing of data anomalies • Can reduce need for direct data warehouse access by developers • Typically only available to developers who are creating university wide dashboards
Closing • Plan the Subject Areas instead of them planning you. • Solid Physical/Logical Design • Joins, Aggregation, Security, NULL • Make sure your DB features are set based on the database you’re connecting to • Query Limits; Gotta have em. • Don’t get view happy in the database! • Error Message Troubleshooting • http://download.oracle.com/otndocs/products/bi/bi-ee/docs/784/AnyMsg.pdf
Contact Reggie Gentle BI Architect Enterprise Resource Planning (ERP) Florida State University RGentle@admin.fsu.edu Thanks for attending Session #27777. I value your feedback. Please complete the session survey.
This presentation and all Alliance 2010 presentations are available for download from the Conference Site Presentations from previous meetings are also available