Tuesday, July 28, 2009

RittmanMead Oracle BI Training Days 2009

I'm pleased to announce that the RittmanMead training days for Oracle BI are now officially open for registration.

Speakers at this event will be Mark Rittman, Venkat Janakiraman and myself.


Day 1
o Oracle BI and EPM architecture overview – Mark Rittman
o Oracle BI EE Data Modeling against DW and 3NF sources – Mark Rittman
o Oracle BI Delivers + Integration with Java and BI Publisher – Venkat Janakiraman
o What’s new in Oracle BI, DW and EPM from Oracle Open World – Mark Rittman

Day 2
o Oracle BI EE Data Modeling against Essbase – Venkat Janakiraman
o Leveraging MDX functions and calculations in OBIEE – Christian Berg
o Integrating Security across OBIEE and EPM – Venkat Janakiraman
o I can do this in Hyperion – how do I do it in OBIEE? – Christian Berg and Venkat Janakiraman

Day 3
o OBIEE Systems Management with OEM BI Mgmt Pack – Mark Rittman
o OBIEE Configuration Management Best Practices – Christian Berg
o ODI functionality in Oracle BI Applications – Mark Rittman
o ODI Integration with Essbase, Planning and Oracle EPM Suite – Venkat Janakiraman

Once more, here's the link to the full event details:

You can find the registration page at http://www.regonline.co.uk/rmtrainingdays2009


Thursday, July 23, 2009

OBIEE - Catalog path containing "."

I was just testing multiple web catalogs when I realized that it's a bad idea to put version numbers into the web catalog name.

As an example, I have my web catalog "samplesales_paint_v1.3" sitting ready in OracleBIData\web\catalog and my instanceconfig.xml looking like this:

< ?xml version="1.0" encoding="utf-8"?>
< WebConfig>
< ServerInstance>
< DSN>AnalyticsWeb
< CatalogPath>F:\OracleBIData\web\catalog\samplesales_paint_v1.3

Starting up the server will not load the refrenced catalog, but rather create a new one from scratch: "samplesales_paint_v1"

And the Oracle BI Presentation Services Administration duly notes:

Physical Presentation Catalog Path \\?\F:\OracleBIData\web\catalog\samplesales_paint_v1\root

The sawlog0.log reads as follows:

Type: Error
Severity: 40
Time: Wed Jul 21 23:46:36 2009
File: project/webcatalog/localwebcatalog.cpp Line: 1507
Properties: ThreadID-4328

Could not load catalog F:\OracleBIData\web\catalog\samplesales_paint_v1.3. Either it does not exist or insufficient permissions.
Type: Warning
Severity: 40
Time: Wed Jul 21 23:46:36 2009
File: project/websubsystems/httpserverinit.cpp Line: 49
Properties: ThreadID-4328

Creating Catalog F:\OracleBIData\web\catalog\samplesales_paint_v1.3.

The log is incorrect on both accounts. "F:\OracleBIData\web\catalog\samplesales_paint_v1.3" does exist and the folder creation in the warning message may use the correct naming but actually creates folder "F:\OracleBIData\web\catalog\samplesales_paint_v1".

XML normally accepts "." inside the element content so I guess this is a legacy fragment from Siebel Analytics versions where the web catalog was a .webcat file. Why? Well, using this element:

< CatalogPath>F:\OracleBIData\web\catalog\paint.webcat

starts my "paint" folder ;-)

Any comments on this are welcome.


Monday, July 20, 2009

"in between" filters for MDX sources

Fiddling around with some more functional options we've all come to know, like and use frequently, I found that "in between" filters in answers requests going against MDX sources (Essbase, MS Analysis server etc) don't work as expected.

To showcase this, I have created a simple request. Planning and Current numbers by Fiscal Month within Europe. And I'm interested in all months between Q1 2009 and Q4 2009:

Checking the results tab we see that it's not necessarily what we'd expect:

Doing a full data scroll reveals that basically all Fiscal Month members are being pulled up.

Here's the MDX from the log:

set [Geo3] as 'Filter([Geo].Generations(3).members, (([Geo].CurrentMember.MEMBER_ALIAS = "Europe" OR [Geo].CurrentMember.MEMBER_Name = "Europe")))'
set [Time Period3] as 'Filter([Time Period].Generations(3).members, ( NOT (([Time Period].CurrentMember.MEMBER_ALIAS < "Q1-09" OR [Time Period].CurrentMember.MEMBER_Name < "Q1-09"))) AND ( NOT (("Q4-09" < [Time Period].CurrentMember.MEMBER_ALIAS OR "Q4-09" < [Time Period].CurrentMember.MEMBER_Name))))'
set [Time Period4] as 'Generate({[Time Period3]}, Descendants([Time Period].currentmember, [Time Period].Generations(4),SELF), ALL)'
member [Scenario].[MS1] as 'AGGREGATE(crossjoin {[Geo3]},Scenario.[Current])', SOLVE_ORDER = 100
member [Scenario].[MS2] as 'AGGREGATE(crossjoin {[Geo3]},Scenario.[Planned])', SOLVE_ORDER = 100
{ [Scenario].[MS1],
} on columns,
NON EMPTY {{[Time Period4]}} properties ANCESTOR_NAMES, GEN_NUMBER on rows
from [Sample.Sample]

And here's the important bit:

set [Time Period3] as 'Filter([Time Period].Generations(3).members, ( NOT (([Time Period].CurrentMember.MEMBER_ALIAS < "Q1-09" OR [Time Period].CurrentMember.MEMBER_Name < "Q1-09"))) AND ( NOT (("Q4-09" < [Time Period].CurrentMember.MEMBER_ALIAS OR "Q4-09" < [Time Period].CurrentMember.MEMBER_Name))))'

I've opened an SR for this since there's no mentioning on metalink, the release notes or the new features guides.


Updated my blog list

Added two new Oracle BI blogs to my blog list:


Changing print controls through catalog manager

Recently I was off to change the print options on all of my dashboard pages. Naturally, as with all setting, this is encoded in the XML and can be mass-manipulated by the catalog manager.

Here's the section in the XML, changed for landscape format, A4 paper size (yes, no weird US sizes ;-)) and explicit exclusion of headers and footers:

< ?xml version="1.0" encoding="UTF-8"?>
< sawd:dashboardpage sawd="com.siebel.analytics.web/dashboard/v1" saw="com.siebel.analytics.web/report/v1" xmlversion="200705140" isempty="false" duid="hsdfj3478387bs82" personalselections="true">
< span style="font-weight:bold;">
< saw:pageheader show="false">
< saw:pagefooter show="false">
< /saw:pagefooter>
< /saw:pageheader>


Friday, July 17, 2009

Sun shareholders "ok" Oracle takeover


Yes, I know they're always talking about "mergers"...just like they "merged" with Siebel or they "merged" with Peoplesoft ;-)

"There can be only ONE!"


Monday, July 13, 2009

OOW 2k8 and 2k7 presentations

Thanks to Steven Chan for reposting the links to the OOW presentations. Very useful since I had lost the URL myself a while ago.


Thursday, July 9, 2009

You now you're surrounded by geeks when...

...on orana.info, there's a posting on the return of Monkey Island!


God I love this industry. And yes, I have the game on order already and fdefinitely will get me each and any incarnation of the old classics from Steam and then the ones they're preparing for the Wii ;-)

Tuesday, July 7, 2009

OBIEE / Essbase MDX generation issues finally resolved

In one of my recent posts I was talking about the different patch levels for and and their impact on functionality and the MDX produced. Interestingly enough not all of the problems appear with every cube outline imported into OBIEE. Oracle initially had troubles reproducing some of the errors (using the normal OOB Essbase sample cubes).

To recap: the changes to the connectivity DLLs first introduced in patch 7349048 (for enabled OBIEE / Essbase security integration, but had some side effects. Performance dropped up to 3000% in some cases, standard report level totals or pivot totals stopped working etc. This is mostly due wrongly produced MDX. Especially for the grand totals the situation is quite clear:

set [Currency2] as 'Filter([Currency].Generations(2).members, (([Currency].CurrentMember.MEMBER_ALIAS = "US Dollar" OR [Currency].CurrentMember.MEMBER_Name = "US Dollar")))'
set [Time Period2] as 'Filter([Time Period].Generations(2).members, (([Time Period].CurrentMember.MEMBER_ALIAS = "2009" OR [Time Period].CurrentMember.MEMBER_Name = "2009")))'
set [Time Period3] as 'Filter(Generate({[Time Period2]}, Descendants([Time Period].currentmember, [Time Period].Generations(3),SELF), ALL), (([Time Period].CurrentMember.MEMBER_ALIAS = "Quarter 1" OR [Time Period].CurrentMember.MEMBER_Name = "Quarter 1")))'
member [Currency].[CurrencyCustomGroup]as 'Sum([Currency2])', SOLVE_ORDER= AGGREGATION_SOLVEORDER
member [Time Period].[Time PeriodCustomGroup]as 'Sum([Time Period3])', SOLVE_ORDER= AGGREGATION_SOLVEORDER
{ [Account].[Sales]
} on columns
from [Sample.Sample]
where ([Currency].[CurrencyCustomGroup],[Time Period].[Time PeriodCustomGroup])

The MDX simply contains no "on rows" specification. These changes remained in all subsequent patches and are also part of Hence, this release suffers from the same problems.

On, there exists patch 8444119 which basically was constructed after 8444119 itself does not solve any of the issues mentioned above. It does however include a small, non-documented switch which resolves all these issues. NOTE: this is NOT documented and will only work on! Oracle told me they're working on a similar fix for and on updating the patch information, but no sign of either yet.

In a environment, install patch 8444119, then create a new environment variable: "OBIS_Essbase_CustomGroup_Generation". Set the value to "0" (without the quotes). This will correct the issues and correct the MDX fired against Essbase. Also, performance will be stabilized and go back to the level of an unpatched

Oracle unfortunately didn't specify in detail what this
OBIS_Essbase_CustomGroup_Generation "performance knob" (as they call it) does behind the scene and what the other two available settings "1" and "2" entail. Hopefully they update patch 8444119 soon since its documentation still says nothing about the existance of this environment variable.

Document 845594.1 has been created an published on Metalink. This is the only document existing which points to or mentions
OBIS_Essbase_CustomGroup_Generation. So if you're out there, going against Essbase cubes and running with 8444119 (or any MDX-influencing other patch below) or a full blown then check it out.

WARNING: While document 845594.1 outlines the issue and the solution, the version it refers to is WRONG!

"Applies to:
Business Intelligence Suite Enterprise Edition - Version: [1900] - Release: 10g"

Patch 8444119 and the use of environment variable
"OBIS_Essbase_CustomGroup_Generation" do only apply for patch You can not use this solution with


Monday, July 6, 2009

OBI Apps ODI vs. 7.9.6 Informatica

I just was asked what's actually in the BI Applications release which comes with ODI rather than Informatica. In general, the ODI release is while the newest Informatica one is 7.9.6

Here's the link to the ODI Apps (Controlled Availability Release) documentation: http://download.oracle.com/docs/cd/E14224_01/welcome.html

So BI Apps with ODI is an Oracle eBusiness-exclusive release with eBusiness being required to be at release 11.5.10. These are the Applications covered in the release:
  • Oracle Financial Analytics
  • Oracle Human Resources Analytics
  • Oracle Supply Chain and Order Management Analytics
  • Oracle Procurement and Spend Analytics
The newest DAC on the other hand (it's no longer included in the files you download for or 7.9.6) is and can be found here: http://download.oracle.com/otn/nt/ias/101341/dac_windows_x86_101341.zip