Transcript Slide 1
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 Current BI Development State 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 [email protected] 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