Universe Best Practices


Business Objects Designer Basic Rules:

  1.  Keep the number of objects to 700 - 800
  2.  Larger universes will require more memory to use - This means more Java runtime memory allocated for Web Intelligence users
  3.  Reduce complexity where possible 
  4.  Focus your universe efforts
  5.  Test  how this universe will work 
  6.  Implement this universe as one piece of an overall strategic solution
  7.  Minimize your maintenance

Classes

are  group logically related business terms (objects) together.

Best practices for classes include:

- Naming conventions
- Descriptions
- Layout
- Nesting limits (classes within classes)

Layout and Organization

- Limit to 20 – 25 objects per class
- This will reduce scrolling through long lists
- Use subclasses and detail objects 

Determine how objects will be listed:
  
Most commonly used is most popular or  Alternatives:
- Alphanumeric
- Order by type (dates, calculations, …)
- Hierarchically (general to specific)
- Fastest to execute when placed in conditions.

Objects 

(table columns re-named with business terms)

 Descriptions:
- Add help text for EVERY object
- Add a description then several examples
- Add format (MM/DD/YY) on the first line
- Optional: Add class location for the object

Objects 
 Object SQL:
- Use the SELECT clause editor to select tables/columns  (This will help avoid silly spelling errors)
- Always parse objects!

Complicated SQL
- Build the desired object in layers
- Create objects that will be referenced using @SELECT
- In this way, very complicated SQL expressions can be created


Sum( @Select(Resort\Europe Flag) * @Select(Sales\2000 Flag) *
Invoice_Line.days * Invoice_Line.nb_guests * Service.price )


The WHERE Clause
- Avoid adding SQL in the WHERE clause of any object
- This is especially true for ad-hoc universes
- WebI will combine those conditions using ‘AND’ 

for example :
1999 Revenue:    WHERE to_char(Sales.invoice_date,'YYYY') = '1999'

WHERE to_char(Sales.invoice_date,'YYYY') = ‘2000'
2000 Revenue


WHERE created in the report query :

to_char(Sales.invoice_date,'YYYY') = ‘1999‘
AND
to_char(Sales.invoice_date,'YYYY') = ‘2000

- Use DECODE or CASE logic in the SELECT clause instead
- Our flag logic presented earlier works well here
-  plus is  that the yearly test is reusable!
- Condition objects could also be used
- Users can change AND to OR in the query panel.

Objects Calculations
Certain ratios (a/b) should be created by distributing the functions
- SUM(a)/SUM(b) rather than SUM(a/b)
- This allows the calculation to cover the group, not just the transaction
- Count using the DISTINCT keyword
- COUNT(DISTINCT )

Calculation Projections
- Use the Delegated Measure feature for AVG, %
- This forces the report writer to re-run SQL every time dimensions or details within the block change
- This prevents incorrect calculations
- Can’t automatically calculate the average of an average

Condition Objects
- Condition objects act as pre-programmed query filters
- Great for frequently used and difficult conditions
- Subqueries, correlated subqueries
- Once created, users can combine in a query using AND, OR

Conditions  added to classes
- Every object inside the class inherits the condition
- Different from security restrictions – not based on a group or user
- Much better than trying to restrict objects based on implicated tables


Objects Formatting
- Formatting objects as they will appear in reports means saving lot of time for users
- Format once in the universe rather than once per report


Delegated measures

Business Objects performance tuning

Comments

Popular posts from this blog

SAP Dashboard Error - Cannot find the BusinessObjects Enterprise report source. (LO 26608)

SAP HANA Introduction

SAP BusinessObjects 4.0 - Suite Presentation