Professional Documents
Culture Documents
The Florida State University: Transactional Reporting in The Real World With OBIEE
The Florida State University: Transactional Reporting in The Real World With OBIEE
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
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.