Download as pdf or txt
Download as pdf or txt
You are on page 1of 439

From Blog to Book.

’http://obiee101.blogspot.com/’
2
Contents

1 2007 15
1.1 December . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
My First Blog (2007-12-05 07:19) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
OBIEE Dummy Column with NULL value (2007-12-05 10:03) . . . . . . . . . . . . . . . 15
OBIEE EVALUATE function and presentation variables (2007-12-05 18:00) . . . . . . . 15
OBIEE Measures and Events in one chart (2007-12-06 10:55) . . . . . . . . . . . . . . . 15
OBIEE for MicroSoft Office (2007-12-06 14:14) . . . . . . . . . . . . . . . . . . . . . . . 18
OLAP 101 (2007-12-06 14:57) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
OBIEE Pivot table with carriage return (2007-12-07 09:06) . . . . . . . . . . . . . . . . 19
OBIEE EVALUATE Function (2007-12-07 11:39) . . . . . . . . . . . . . . . . . . . . . . 20
OBIEE EVALUATE AGGR Function (2007-12-07 12:02) . . . . . . . . . . . . . . . . . 21
OBIEE referencing session variables in report title (2007-12-10 14:40) . . . . . . . . . . 22
OBIEE empty presentation tables in a repository in a multi-user environment
(2007-12-11 12:20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
OBIEE Excel and slashes (2007-12-11 17:45) . . . . . . . . . . . . . . . . . . . . . . . . 24
OBIEE Default security groups for BI Publisher (2007-12-13 07:19) . . . . . . . . . . . . 24
OBIEE Duration between events (2007-12-19 11:00) . . . . . . . . . . . . . . . . . . . . 24
OBIEE Scale markers (2007-12-19 11:30) . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2 2008 29
2.1 January . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
OBIEE using oracle stored procedure to fill report (2008-01-11 13:35) . . . . . . . . . . 29
OBIEE IsNumeric (2008-01-16 07:54) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
OBIEE Corda Popchart (2008-01-16 12:25) . . . . . . . . . . . . . . . . . . . . . . . . . 31
OBIEE Corda Popchart Example (2008-01-16 14:34) . . . . . . . . . . . . . . . . . . . . 31
OBIEE X,Y and data in mouse over label (2008-01-16 17:21) . . . . . . . . . . . . . . . 32
OBIEE adding a customized graphtype (2008-01-17 13:32) . . . . . . . . . . . . . . . . . 33
OBIEE Graphs Gradient Effect (2008-01-22 08:48) . . . . . . . . . . . . . . . . . . . . . 34
OBIEE 10.1.3.3.2 availble on OTN (2008-01-24 10:03) . . . . . . . . . . . . . . . . . . . 35
OBIEE Restricting data based on User Group (2008-01-24 10:54) . . . . . . . . . . . . . 35
3
OBIEE backing up repository (2008-01-29 07:29) . . . . . . . . . . . . . . . . . . . . . . 35
(2008-01-30 07:34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
OBIEE Calculate YearWeek and YearWeekAgo (2008-01-30 10:56) . . . . . . . . . . . . 36
2.2 February . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
OBIEE Usefull server scripts (2008-02-01 17:13) . . . . . . . . . . . . . . . . . . . . . . 37
OBIEE development street (2008-02-02 20:06) . . . . . . . . . . . . . . . . . . . . . . . . 38
OBIEE Adding session variables to the report title / using a narrative view
(2008-02-06 20:30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
OBIEE Using ORACLE stored procedures part 2 (2008-02-07 17:34) . . . . . . . . . . . 42
OBIEE Using ORACLE stored procedures part 3 (2008-02-11 17:12) . . . . . . . . . . . 43
OBIEE Aggregate BY (2008-02-18 20:23) . . . . . . . . . . . . . . . . . . . . . . . . . . 43
OBIEE Controling Pivot View behavior (2008-02-23 12:09) . . . . . . . . . . . . . . . . 44
OBIEE Optimizing NQQuery.log for debugging (2008-02-29 19:29) . . . . . . . . . . . . 46
2.3 March . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
OBIEE No Thousand separator (2008-03-04 14:33) . . . . . . . . . . . . . . . . . . . . . 46
OBIEE Continues Time Line (2008-03-09 15:43) . . . . . . . . . . . . . . . . . . . . . . 47
OBIEE Downgrading Repository (2008-03-09 16:37) . . . . . . . . . . . . . . . . . . . . 49
OBIEE Manage the cache part 1 (2008-03-13 22:16) . . . . . . . . . . . . . . . . . . . . 49
OBIEE Manage the cache part 2 (2008-03-16 09:35) . . . . . . . . . . . . . . . . . . . . 52
OBIEE Yes No Prompt (2008-03-28 10:50) . . . . . . . . . . . . . . . . . . . . . . . . . 52
OBIEE Repository Version Control (2008-03-31 20:39) . . . . . . . . . . . . . . . . . . . 53
2.4 April . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
OBIEE ”Combined with Similar Request” and filterview (2008-04-05 13:44) . . . . . . . 56
OBIEE View Selector, forcing a selection. (2008-04-05 14:52) . . . . . . . . . . . . . . . 58
OBIEE 10.1.3.3.3 (2008-04-21 16:53) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.5 May . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
OBIEE 10.1.3.3.3 it’s out (2008-05-10 16:18) . . . . . . . . . . . . . . . . . . . . . . . . 60
OBIEE 10.1.3.3.3 documentation (2008-05-10 16:32) . . . . . . . . . . . . . . . . . . . . 60
OBIEE making a column selector in a prompt (2008-05-18 19:47) . . . . . . . . . . . . . 60
OBIEE Changing the line color in a scatter graph with line (2008-05-23 09:35) . . . . . 63
OBIEE Pivot table Measure label (2008-05-29 20:04) . . . . . . . . . . . . . . . . . . . . 64
2.6 June . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
OBIEE Flexible Dashboards (2008-06-07 11:45) . . . . . . . . . . . . . . . . . . . . . . . 65
OBIEE Directing a user to a default dashboard (2008-06-07 22:12) . . . . . . . . . . . . 69
OBIEE ”Private” output type for a chart (2008-06-10 19:49) . . . . . . . . . . . . . . . . 70
OBIEE Excel Import, prepping the data (2008-06-15 17:04) . . . . . . . . . . . . . . . . 72
OBIEE Blocking request based on Criteria (2008-06-19 20:49) . . . . . . . . . . . . . . . 73
OBIEE Follow the sun / Time driven connection (2008-06-29 11:18) . . . . . . . . . . . 75
4
2.7 July . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
OBIEE naming conventions repository (2008-07-07 19:00) . . . . . . . . . . . . . . . . . 77
OBIEE Public Reports and Dashboards - Bypassing authentication (2008-07-07 19:08) . 77
OBIEE Preventing Auto-Previewing of Results in Answers (2008-07-08 19:25) . . . . . . 77
OBIEE Changing XLS (Excel) data on the fly (2008-07-09 17:08) . . . . . . . . . . . . . 78
OBIEE Plus Workshop Munchen Day 1 (2008-07-15 11:09) . . . . . . . . . . . . . . . . 81
OBIEE Plus Workshop Munchen Day 2 (2008-07-16 10:00) . . . . . . . . . . . . . . . . 81
OBIEE Plus Workshop Munchen Day 3 (2008-07-17 09:07) . . . . . . . . . . . . . . . . 82
OBIEE managing the cache: Emptying/Purging the cache Part 2 (2008-07-19 10:42) . . 82
OBIEE number of gauges on canvas (2008-07-21 18:04) . . . . . . . . . . . . . . . . . . 84
OBIEE running it on an other web port (2008-07-23 11:28) . . . . . . . . . . . . . . . . 84
OBIEE running it as a HTTPS / SSL service (2008-07-23 16:26) . . . . . . . . . . . . . 85
OBIEE Migration discover to OBIEE (2008-07-24 17:26) . . . . . . . . . . . . . . . . . . 86
OBIEE dropdown prompt (2008-07-24 20:00) . . . . . . . . . . . . . . . . . . . . . . . . 87
OBIEE Number of values in the multiselect prompt (2008-07-25 20:00) . . . . . . . . . . 87
OBIEE Number of default values in a multiselect prompt (2008-07-26 20:00) . . . . . . 87
OBIEE cache management. (2008-07-27 22:44) . . . . . . . . . . . . . . . . . . . . . . . 88
OBIEE Protect Filter (2008-07-28 20:58) . . . . . . . . . . . . . . . . . . . . . . . . . . 91
OBIEE .Net using the webservice (2008-07-29 21:34) . . . . . . . . . . . . . . . . . . . . 93
OBIEE SAWSessionService (2008-07-30 20:00) . . . . . . . . . . . . . . . . . . . . . . . 95
OBIEE SAWSessionService Part 2 (2008-07-31 22:13) . . . . . . . . . . . . . . . . . . . 96
2.8 August . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
OBIEE 10.3.4.0 is out (2008-08-07 09:52) . . . . . . . . . . . . . . . . . . . . . . . . . . 97
OBIEE Continues Date Time Line redux (2008-08-08 08:42) . . . . . . . . . . . . . . . . 97
OBIEE Date Time Scatter graph (2008-08-08 09:07) . . . . . . . . . . . . . . . . . . . . 97
OBIEE customising your PCXML (2008-08-08 17:09) . . . . . . . . . . . . . . . . . . . 99
OBIEE Migrating Oracle BI Discoverer to OBIEE (2008-08-08 22:48) . . . . . . . . . . 99
OBIEE Bottom scale on the time line graph (2008-08-09 12:03) . . . . . . . . . . . . . . 99
OBIEE making a clear button (2008-08-09 23:00) . . . . . . . . . . . . . . . . . . . . . . 100
OBIEE 10.3.4.0 First impressions (2008-08-10 23:14) . . . . . . . . . . . . . . . . . . . . 100
OBIEE Setting up usage tracking (2008-08-11 06:00) . . . . . . . . . . . . . . . . . . . . 100
OBIEE 10.3.4.0 missing popchart service (2008-08-11 14:28) . . . . . . . . . . . . . . . . 108
OBIEE Configuring Configuring the scheduler on Windows2003/Oracle (2008-08-12 15:11) 109
OBIEE Difference between two rows (2008-08-12 16:00) . . . . . . . . . . . . . . . . . . 113
OBIEE Children of the level / Converting rows to strings (2008-08-13 09:36) . . . . . . 114
OBIEE error saving security account (2008-08-13 15:14) . . . . . . . . . . . . . . . . . . 118
OBIEE Configuration Tags (2008-08-14 21:14) . . . . . . . . . . . . . . . . . . . . . . . 119
OBIEE Where is the ODBC Data Source Administrator? (2008-08-14 21:30) . . . . . . 119
5
OBIEE Stragg function on 10G.. (2008-08-16 23:35) . . . . . . . . . . . . . . . . . . . . 121
OBIEE Hidding dashboard sections (2008-08-17 16:24) . . . . . . . . . . . . . . . . . . . 121
OBIEE Identifying the server. (2008-08-18 21:02) . . . . . . . . . . . . . . . . . . . . . . 122
OBIEE Back One Page (2008-08-20 20:12) . . . . . . . . . . . . . . . . . . . . . . . . . . 124
OBIEE Conditional Hyperlink (2008-08-21 16:35) . . . . . . . . . . . . . . . . . . . . . . 125
OBIEE Change the password (2008-08-21 23:23) . . . . . . . . . . . . . . . . . . . . . . 126
OBIEE scripting user into the repository (2008-08-22 18:18) . . . . . . . . . . . . . . . . 127
OBIEE Conditional X-axis graph (2008-08-27 17:19) . . . . . . . . . . . . . . . . . . . . 129
OBIEE Forcing OC4J BI shutdown (2008-08-28 04:30) . . . . . . . . . . . . . . . . . . . 130
2.9 September . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Setting up a mailserver in a VMware (2008-09-01 21:23) . . . . . . . . . . . . . . . . . . 130
OBIEE OpenOffice (2008-09-01 22:06) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
OBIEE TimeLine graph Line settings (2008-09-03 20:23) . . . . . . . . . . . . . . . . . . 135
OBIEE Setting up an Compagny custom ”Skin” and ”Style” (2008-09-08 21:30) . . . . . 135
OBIEE setting the bottomscale in a DTA Graph (2008-09-09 22:00) . . . . . . . . . . . 136
OBIEE PDF controls (.fst files) (2008-09-10 11:45) . . . . . . . . . . . . . . . . . . . . . 137
OBIEE Null, Nul and Nullable (2008-09-10 17:43) . . . . . . . . . . . . . . . . . . . . . 137
OBIEE collapse the whole dashboard with one button (2008-09-10 21:01) . . . . . . . . 138
OBIEE setting default Graph series colors. (2008-09-12 20:13) . . . . . . . . . . . . . . 139
OBIEE Custom CSS Style / Class (2008-09-13 10:31) . . . . . . . . . . . . . . . . . . . 140
OBIEE Title View (2008-09-13 12:02) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
OBIEE Setting a picture as graph backgound (2008-09-17 17:03) . . . . . . . . . . . . . 141
OBIEE CHOOSE statement (2008-09-19 17:30) . . . . . . . . . . . . . . . . . . . . . . . 143
OBIEE Google chrome (2008-09-21 21:02) . . . . . . . . . . . . . . . . . . . . . . . . . . 145
OBIEE setting up customMessages folders (2008-09-23 18:47) . . . . . . . . . . . . . . . 145
OBIEE Timestamp (2008-09-24 09:59) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
OBIEE making a custom Log On and Log Off screen (2008-09-24 17:45) . . . . . . . . . 146
OBIEE Portal customization part 1 ”the portalbanner” (2008-09-28 19:28) . . . . . . . . 149
2.10 October . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
OBIEE the ”developersprompt” (2008-10-01 17:26) . . . . . . . . . . . . . . . . . . . . . 151
OBIEE Multiple Java Versions (2008-10-03 18:44) . . . . . . . . . . . . . . . . . . . . . 151
OBIEE ReportAggregateEnabled (2008-10-04 18:41) . . . . . . . . . . . . . . . . . . . . 152
OBIEE update tutorials (2008-10-07 18:56) . . . . . . . . . . . . . . . . . . . . . . . . . 152
OBIEE Show Thousands Separator in Chart (2008-10-07 19:02) . . . . . . . . . . . . . . 152
OBIEE Portal customization part 2 ”the portalcontent” (2008-10-08 20:09) . . . . . . . 153
OBIEE Skin and Style Naming (2008-10-09 18:13) . . . . . . . . . . . . . . . . . . . . . 154
OBIEE using the webservices (2008-10-10 16:24) . . . . . . . . . . . . . . . . . . . . . . 154
OBIEE replacing siebelbug.gif (Powered by Oracle) (2008-10-10 17:31) . . . . . . . . . . 155
6
OBIEE See me live at Rittman Mead (2008-10-20 09:07) . . . . . . . . . . . . . . . . . . 155
OBIEE using the webservices part 2 (2008-10-20 16:59) . . . . . . . . . . . . . . . . . . 155
OBIEE Ritmann Mead BI Training Days Day 1 (2008-10-22 23:30) . . . . . . . . . . . . 156
OBIEE Ritmann Mead BI Training Days Day 2 (2008-10-23 23:55) . . . . . . . . . . . . 156
OBIEE Ritmann Mead BI Training Days Day 3 (2008-10-24 23:46) . . . . . . . . . . . . 156
OBIEE using google maps (Q&D style) (2008-10-25 23:15) . . . . . . . . . . . . . . . . 156
OBIEE No language dropdown on loginscreen (2008-10-27 02:59) . . . . . . . . . . . . . 158
OBIEE Clearing the log (2008-10-29 19:12) . . . . . . . . . . . . . . . . . . . . . . . . . 158
2.11 November . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
OBIEE Huge dimensions? Let s split them! (2008-11-03 23:24) . . . . . . . . . . . . . . 159
OBIEE making it ”aggregate aware” (2008-11-06 20:48) . . . . . . . . . . . . . . . . . . 161
OBIEE nQSError (2008-11-08 19:53) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
OBIEE Stop the beep (2008-11-08 20:05) . . . . . . . . . . . . . . . . . . . . . . . . . . 165
OBIEE Aggregate Persistence Wizard (2008-11-09 12:37) . . . . . . . . . . . . . . . . . 165
OBIEE Creating indexes Q&D Style (2008-11-09 14:30) . . . . . . . . . . . . . . . . . . 172
OBIEE OBI - Forum Live (2008-11-10 12:45) . . . . . . . . . . . . . . . . . . . . . . . . 172
OBIEE Default colour Title border (2008-11-12 10:28) . . . . . . . . . . . . . . . . . . . 173
OBIEE Presentation Services Cache Settings (2008-11-12 16:52) . . . . . . . . . . . . . 173
OBIEE Outerjoin workaround? (2008-11-12 21:36) . . . . . . . . . . . . . . . . . . . . . 174
OBIEE How To Replace Multiple Go Button By One Go Button In Prompts
(2008-11-14 17:58) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
OBIEE Understanding Outerjoins Part 1 (2008-11-15 22:46) . . . . . . . . . . . . . . . . 176
OBIEE Understanding Outerjoins Part 2 (2008-11-20 20:56) . . . . . . . . . . . . . . . . 179
OBIEE Federated Query’s / Fragmented Query’s (2008-11-21 23:33) . . . . . . . . . . . 182
OBIEE Excel count distinct error (2008-11-22 11:21) . . . . . . . . . . . . . . . . . . . . 189
OBIEE Presentation server on IIS (2008-11-24 02:04) . . . . . . . . . . . . . . . . . . . 191
OBIEE Let’s Get Professional (2008-11-27 03:27) . . . . . . . . . . . . . . . . . . . . . . 200
OBIEE Sort Order Column property (2008-11-28 02:06) . . . . . . . . . . . . . . . . . . 201
OBIEE AGO and TODATE Series (2008-11-29 02:34) . . . . . . . . . . . . . . . . . . . 203
2.12 December . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
OBIEE Handling SCF data / PIT Reporting (2008-12-03 23:35) . . . . . . . . . . . . . 207
OBIEE101 First Birthday (2008-12-04 00:00) . . . . . . . . . . . . . . . . . . . . . . . . 209
OBIEE 1K Status (2008-12-04 08:10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
OBIEE BI-Publisher Templates (2008-12-04 20:24) . . . . . . . . . . . . . . . . . . . . . 209
OBIEE Missing BI-Office add - in (2008-12-05 21:08) . . . . . . . . . . . . . . . . . . . . 209
OBIEE using timeline graphs in pivot views (2008-12-06 22:39) . . . . . . . . . . . . . . 210
OBIEE BI Publisher Login Errors (2008-12-06 22:45) . . . . . . . . . . . . . . . . . . . 212
OBIEE Breadcrum trail (2008-12-07 20:07) . . . . . . . . . . . . . . . . . . . . . . . . . 212
7
OBIEE Hidding a section (2008-12-08 13:40) . . . . . . . . . . . . . . . . . . . . . . . . 213
OBIEE First / Last of month (2008-12-08 20:25) . . . . . . . . . . . . . . . . . . . . . . 213
OBIEE First / Last day previous week (2008-12-09 02:04) . . . . . . . . . . . . . . . . . 214
OBI Forum Live Vergeet je niet in te schrijven (2008-12-09 09:05) . . . . . . . . . . . . 214
OBIEE bypassing the presentation / web cache (2008-12-09 17:54) . . . . . . . . . . . . 214
OBIEE LOV prompts (2008-12-11 20:16) . . . . . . . . . . . . . . . . . . . . . . . . . . 214
OBIEE MetaData Dictionary (2008-12-12 23:59) . . . . . . . . . . . . . . . . . . . . . . 216
OBIEE Automating the Metadata dictionary repository updates (2008-12-17 21:12) . . 223
OBIEE Google Chrome redux (2008-12-19 12:47) . . . . . . . . . . . . . . . . . . . . . . 223
OBIEE Creating Bookmark and or Prompted URL (2008-12-21 15:11) . . . . . . . . . . 224
OBIEE Keep a clean desk (2008-12-24 14:58) . . . . . . . . . . . . . . . . . . . . . . . . 226
BI Consultant van 2008 (2008-12-29 22:54) . . . . . . . . . . . . . . . . . . . . . . . . . 226

3 2009 227
3.1 January . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Have a great Year! (2009-01-01 00:00) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
OBIEE Cache and VPD (2009-01-01 15:50) . . . . . . . . . . . . . . . . . . . . . . . . . 227
OBIEE and Wiki (2009-01-01 21:04) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
OBI Forum Live Vergeet je niet in te schrijven !LAATSTE KANS! (2009-01-05 09:18) . 228
OBIEE Selecting SKIN and STYLE from URL (2009-01-07 19:02) . . . . . . . . . . . . 228
OBIEE Sample Sales (2009-01-08 17:01) . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
OBIEE creating large / huge PDF documents (2009-01-09 01:30) . . . . . . . . . . . . . 229
OBIEE Leap Year Challenge (2009-01-11 22:21) . . . . . . . . . . . . . . . . . . . . . . 229
OBIEE Cache persistence (2009-01-13 21:54) . . . . . . . . . . . . . . . . . . . . . . . . 232
OBIEE PROJECT INACCESSIBLE COLUMN (2009-01-15 18:42) . . . . . . . . . . . . 233
OBIEE Multiple connection pools (2009-01-18 19:33) . . . . . . . . . . . . . . . . . . . . 233
BI Consultant van 2008 ronde 2 (2009-01-21 21:20) . . . . . . . . . . . . . . . . . . . . . 234
OBIEE Impersonate a user (2009-01-21 23:49) . . . . . . . . . . . . . . . . . . . . . . . 235
OBIEE rowbased calculations in a pivot table (2009-01-22 19:48) . . . . . . . . . . . . . 235
OBIEE Brackets in the BMM (2009-01-26 20:35) . . . . . . . . . . . . . . . . . . . . . . 237
OBIEE Creating a Yamazumi Graph (2009-01-27 20:39) . . . . . . . . . . . . . . . . . . 238
OBIEE Autorefresh no prompts (2009-01-28 20:01) . . . . . . . . . . . . . . . . . . . . . 243
OBIEE Column headings (2009-01-29 17:16) . . . . . . . . . . . . . . . . . . . . . . . . 243
3.2 February . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
OBIEE Ago and and error ORA-00942: table or view does not exist (2009-02-11 09:51) 247
OBIEE ”Selling” federated query’s (2009-02-12 13:41) . . . . . . . . . . . . . . . . . . . 247
OBIEE Switching between filters (2009-02-13 13:36) . . . . . . . . . . . . . . . . . . . . 248
OBIEE Editing system wide defaults (2009-02-17 17:32) . . . . . . . . . . . . . . . . . . 249
8
OBIEE Making a distinct date prompt (2009-02-23 12:53) . . . . . . . . . . . . . . . . . 251
OBIEE Reporting on dateranges (2009-02-23 15:31) . . . . . . . . . . . . . . . . . . . . 253
OBIEE see you in Brigthon (2009-02-24 07:43) . . . . . . . . . . . . . . . . . . . . . . . 255
OBIEE Executing your own JavaScript (2009-02-25 14:05) . . . . . . . . . . . . . . . . . 255
OBIEE Configuring Case Insensitive Search (2009-02-26 20:15) . . . . . . . . . . . . . . 256
OBIEE Default Portnumbers (2009-02-26 20:39) . . . . . . . . . . . . . . . . . . . . . . 257
OBIEE Simulating Drill up (2009-02-27 11:44) . . . . . . . . . . . . . . . . . . . . . . . 259
3.3 March . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
OBIEE Between Dates Prompt (2009-03-02 11:11) . . . . . . . . . . . . . . . . . . . . . 260
OBIEE Date, TimeStamp and ORACLE Indexes (2009-03-03 18:25) . . . . . . . . . . . 261
OBIEE NQSSetSessionValue (2009-03-03 22:31) . . . . . . . . . . . . . . . . . . . . . . . 262
OBIEE Custom Authenticators (2009-03-05 21:45) . . . . . . . . . . . . . . . . . . . . . 263
BI Consultant 2008 (2009-03-06 10:58) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
OBIEE identifying the hierarchy level (2009-03-06 13:32) . . . . . . . . . . . . . . . . . 265
Forum Autorefresh (2009-03-09 13:31) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
OBIEE date prompt to day month year (2009-03-10 08:26) . . . . . . . . . . . . . . . . 269
OBIEE hidden column writeback (2009-03-10 11:31) . . . . . . . . . . . . . . . . . . . . 270
OBIEE Google Maps Multiple Addresses (2009-03-17 08:50) . . . . . . . . . . . . . . . . 270
OBIEE Referencing Presentation Variables in Filters (2009-03-17 13:19) . . . . . . . . . 273
3.4 April . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
OBIEE Dynamic prompt content (2009-04-01 17:01) . . . . . . . . . . . . . . . . . . . . 274
OBIEE Between prompt using the calendar control (2009-04-01 19:33) . . . . . . . . . . 275
OBIEE Image prompt (2009-04-01 20:54) . . . . . . . . . . . . . . . . . . . . . . . . . . 276
OBIEE 10.1.3.4.0 Get your patches (2009-04-02 22:05) . . . . . . . . . . . . . . . . . . . 277
OBIEE OBI - Forum Live (2009-04-03 12:00) . . . . . . . . . . . . . . . . . . . . . . . . 278
OBIEE Questions (2009-04-03 19:54) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
OBIEE Using SQL based scale makers (2009-04-07 09:27) . . . . . . . . . . . . . . . . . 278
OBIEE Multi lingual prompt (2009-04-15 19:42) . . . . . . . . . . . . . . . . . . . . . . 281
OBIEE Showing zero’s in a bargraph (2009-04-17 09:21) . . . . . . . . . . . . . . . . . . 282
OBIEE Get the FireBug! (2009-04-17 12:12) . . . . . . . . . . . . . . . . . . . . . . . . 284
OBIEE Prompts putting the label in front (2009-04-17 22:13) . . . . . . . . . . . . . . . 284
OBIEE Prompts putting the label in front part 2 (2009-04-18 08:59) . . . . . . . . . . . 285
OBIEE The final skills, Creating great dashboards. (2009-04-19 19:48) . . . . . . . . . . 286
OBIEE Dashboard Design 001 (2009-04-19 20:36) . . . . . . . . . . . . . . . . . . . . . . 286
OBIEE 10.3.4.1 is out! (2009-04-25 08:45) . . . . . . . . . . . . . . . . . . . . . . . . . . 291
OBIEE 10341 First Impressions (2009-04-25 10:16) . . . . . . . . . . . . . . . . . . . . . 291
OBIEE Opaque data labels on charts (2009-04-25 12:53) . . . . . . . . . . . . . . . . . . 292
OBIEE Answers Tab Headings (2009-04-26 11:01) . . . . . . . . . . . . . . . . . . . . . 293
9
OBIEE not all change is good change (2009-04-26 11:42) . . . . . . . . . . . . . . . . . . 294
OBIEE OLAP on 11G (2009-04-30 21:50) . . . . . . . . . . . . . . . . . . . . . . . . . . 294
3.5 May . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
OBIEE Enable users to change password (2009-05-04 16:00) . . . . . . . . . . . . . . . . 295
OBIEE Bubble chart (2009-05-05 14:11) . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
OBIEE ”Greenbar” Customization (2009-05-05 20:04) . . . . . . . . . . . . . . . . . . . 297
(2009-05-05 21:14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Brighton 2009 (2009-05-16 19:03) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
OBIEE Cache File Name revealed (2009-05-19 12:52) . . . . . . . . . . . . . . . . . . . . 301
OBI Forum live de tweede editie (2009-05-25 14:18) . . . . . . . . . . . . . . . . . . . . 302
OBIEE views.css color cheat sheet (2009-05-26 02:50) . . . . . . . . . . . . . . . . . . . 302
OBIEE Background colour prompt (2009-05-28 09:56) . . . . . . . . . . . . . . . . . . . 303
3.6 June . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
OBIEE Essbase install (2009-06-06 21:36) . . . . . . . . . . . . . . . . . . . . . . . . . . 304
OBIEE get Internet Explorer Developer Toolbar (2009-06-11 11:30) . . . . . . . . . . . 304
OBIEE New portal banner (2009-06-11 19:44) . . . . . . . . . . . . . . . . . . . . . . . . 304
OBIEE Leading zeros calendar prompt (2009-06-12 15:33) . . . . . . . . . . . . . . . . . 305
OBIEE Availible images (2009-06-15 22:03) . . . . . . . . . . . . . . . . . . . . . . . . . 305
OBIEE Get all users from RPD (2009-06-16 21:43) . . . . . . . . . . . . . . . . . . . . . 306
OBIEE Remote Admintool login problems (2009-06-19 22:56) . . . . . . . . . . . . . . . 307
OBIEE Get all users and roles from RPD (2009-06-22 19:49) . . . . . . . . . . . . . . . 308
OBIEE Remember my ID and password (2009-06-23 19:19) . . . . . . . . . . . . . . . . 310
OBIEE backslash in dashboard page name (2009-06-23 20:37) . . . . . . . . . . . . . . . 310
OBIEE Online Photoshop (2009-06-28 08:19) . . . . . . . . . . . . . . . . . . . . . . . . 311
3.7 July . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
OBIEE Dashboard Default Controls (2009-07-07 18:20) . . . . . . . . . . . . . . . . . . 311
OBIEE Cool CSS trick (2009-07-08 17:57) . . . . . . . . . . . . . . . . . . . . . . . . . . 311
OBIEE Adding custom image in Conditional Column Format (2009-07-08 18:59) . . . . 311
OBIEE perfmon (Performance Monitor) (2009-07-09 20:23) . . . . . . . . . . . . . . . . 313
OBIEE made it to Expert on OTN (2009-07-10 09:35) . . . . . . . . . . . . . . . . . . . 313
OBIEE Nifty New Blog (2009-07-10 09:47) . . . . . . . . . . . . . . . . . . . . . . . . . 314
OBIEE Hide the page options button (2009-07-10 11:03) . . . . . . . . . . . . . . . . . . 314
OBIEE New Sample Sales Analysis v 1.3 (2009-07-11 21:46) . . . . . . . . . . . . . . . . 315
OBIEE DiagCap.vbs (2009-07-12 15:19) . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
OBIEE Enable508 (2009-07-13 21:17) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
OBIEE OTN is Down / was Down (2009-07-16 10:32) . . . . . . . . . . . . . . . . . . . 316
OBIEE If you had a 1000 wishes&. (2009-07-17 21:35) . . . . . . . . . . . . . . . . . . 316
OBIEE get the previous row (2009-07-22 17:54) . . . . . . . . . . . . . . . . . . . . . . . 317
10
OBIEE Hide the saved filter view link (2009-07-22 19:14) . . . . . . . . . . . . . . . . . 317
OBIEE my first server (2009-07-23 19:39) . . . . . . . . . . . . . . . . . . . . . . . . . . 318
OBIEE How to get started (2009-07-25 22:16) . . . . . . . . . . . . . . . . . . . . . . . . 318
OBIEE Google Maps an alternative ending (2009-07-26 15:58) . . . . . . . . . . . . . . 321
OBIEE Moving period to date aggregations (2009-07-27 20:14) . . . . . . . . . . . . . . 321
3.8 August . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
OBIEE UDML and Notepad (2009-08-02 12:13) . . . . . . . . . . . . . . . . . . . . . . . 322
OBIEE www obiforums com (nice idea) (2009-08-03 19:41) . . . . . . . . . . . . . . . . 323
OBIEE TopN versus the rest (2009-08-06 17:35) . . . . . . . . . . . . . . . . . . . . . . 324
OBIEE Prompts setting a default value to force a selection (2009-08-15 15:57) . . . . 326
OBIEE Google Maps linebreak in annotations (2009-08-15 19:33) . . . . . . . . . . . . . 327
OBIEE Prompt based on groupmembership (2009-08-17 19:05) . . . . . . . . . . . . . . 328
OBIEE Config Tags (2009-08-19 20:45) . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
OBIEE Bing Maps (2009-08-21 22:11) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
3.9 September . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Got the flu (2009-09-13 16:05) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
OBIEE Patches 10341 (2009-09-18 21:06) . . . . . . . . . . . . . . . . . . . . . . . . . . 333
OBIEE ODBC Client (2009-09-19 00:43) . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
OBIEE a blog lost&. (2009-09-20 09:06) . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
OBIEE LDAP Problems? Try this! (repost) (2009-09-22 00:20) . . . . . . . . . . . . . . 336
OBIEE Tooltip Text in Column Heading (2009-09-22 15:33) . . . . . . . . . . . . . . . . 337
OBIEE Grand Totals with Calculated Columns (repost) (2009-09-24 00:21) . . . . . . . 338
OBIEE Using the Top N Filter (repost) (2009-09-26 00:22) . . . . . . . . . . . . . . . . 339
OBIEE When the Top N Filter fails& (repost) (2009-09-28 00:25) . . . . . . . . . . . . 340
OBIEE Open a Linux-Hosted OBIEE Repository in Online Mode (repost)
(2009-09-30 00:26) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
3.10 October . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
OBIEE Multiple repository s / Multiple presentation servers (2009-10-02 21:51) . . . . . 341
a generic calendar dimension (2009-10-29 20:09) . . . . . . . . . . . . . . . . . . . . . . 342
3.11 December . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
OBIEE Making an OR filter (2009-12-17 09:46) . . . . . . . . . . . . . . . . . . . . . . . 342
OBIEE Top N Months across (2009-12-17 10:25) . . . . . . . . . . . . . . . . . . . . . . 343

4 2010 345
4.1 January . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
OBIEE a new year (2010-01-02 20:13) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
OBIEE PATCHES 10.1.3.4.1 part 2 (2010-01-03 20:51) . . . . . . . . . . . . . . . . . . . 345
OBIEE Navigating from report to report (2010-01-05 19:56) . . . . . . . . . . . . . . . . 347
OBIEE Aggregate BY part 2 (2010-01-08 21:18) . . . . . . . . . . . . . . . . . . . . . . 348
11
OBIEE ResultRowLimit (2010-01-13 18:52) . . . . . . . . . . . . . . . . . . . . . . . . . 349
OBIEE Google Charts part 1 (2010-01-16 21:19) . . . . . . . . . . . . . . . . . . . . . . 350
OBIEE Google Charts part 2 (2010-01-19 20:28) . . . . . . . . . . . . . . . . . . . . . . 352
OBIEE Oracle support (2010-01-20 19:32) . . . . . . . . . . . . . . . . . . . . . . . . . . 353
OBIEE Horizontal Pivot Sections (2010-01-22 21:03) . . . . . . . . . . . . . . . . . . . . 353
OBIEE Google Charts part 3 QR Codes (2010-01-25 16:08) . . . . . . . . . . . . . . . . 355
OBIEE Party 2000 page views (2010-01-27 20:26) . . . . . . . . . . . . . . . . . . . . . . 356
OBIEE Performance tuning (2010-01-28 18:35) . . . . . . . . . . . . . . . . . . . . . . . 357
OBIEE Horizontal Pivot Sections Part 2 (2010-01-30 00:00) . . . . . . . . . . . . . . . . 359
OBIEE Reset OC4J Admin password (2010-01-31 19:16) . . . . . . . . . . . . . . . . . . 361
4.2 February . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
OBIEE Report Name Length (2010-02-03 20:16) . . . . . . . . . . . . . . . . . . . . . . 362
OBIEE PATCHES 10.1.3.4.1 part 3 (2010-02-06 17:44) . . . . . . . . . . . . . . . . . . . 363
OBIEE Pivot Conditional Format Grand Total Part 2 (2010-02-06 20:40) . . . . . . . . 364
OBIEE Grabbing the logical SQL (2010-02-09 20:26) . . . . . . . . . . . . . . . . . . . . 367
OBIEE Changing unchangeable cells (2010-02-12 20:00) . . . . . . . . . . . . . . . . . . 370
OBIEE Chancing CSS style on the fly (2010-02-15 20:22) . . . . . . . . . . . . . . . . . 372
OBIEE JavaScript and comments (2010-02-18 18:57) . . . . . . . . . . . . . . . . . . . . 374
OBIEE ATR files (reports). (2010-02-21 20:39) . . . . . . . . . . . . . . . . . . . . . . . 375
OBIEE Popup box (2010-02-24 20:09) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
OBIEE Presentation Server Always Refresh (2010-02-27 20:42) . . . . . . . . . . . . . . 378
4.3 March . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
OBIEE Quirky Report Name (2010-03-02 19:47) . . . . . . . . . . . . . . . . . . . . . . 379
OBIEE Report XML Structure Part 1 (2010-03-05 21:05) . . . . . . . . . . . . . . . . . 379
OBIEE conditional format using arrows (2010-03-07 21:03) . . . . . . . . . . . . . . . . 380
OBIEE Report XML Structure Part 2 (2010-03-08 20:27) . . . . . . . . . . . . . . . . . 382
OBIEE Report XML Structure Part 3 (2010-03-11 20:48) . . . . . . . . . . . . . . . . . 383
OBIEE Start reading on graphs! (2010-03-16 20:58) . . . . . . . . . . . . . . . . . . . . 384
OBIEE rtfm.ini config file (2010-03-22 16:49) . . . . . . . . . . . . . . . . . . . . . . . . 385
OBIEE PATCHES 10.1.3.4.1 part 4 (2010-03-26 23:27) . . . . . . . . . . . . . . . . . . . 385
4.4 April . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
OBIEE 11G still waiting&& (2010-04-19 21:49) . . . . . . . . . . . . . . . . . . . . . . 385
4.5 May . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
OBIEE using display folders (2010-05-05 10:50) . . . . . . . . . . . . . . . . . . . . . . . 386
OBIEE multi-line tabs (2010-05-06 14:26) . . . . . . . . . . . . . . . . . . . . . . . . . . 386
OBIEE Naming Conventions Physical Layer (2010-05-07 10:55) . . . . . . . . . . . . . 388
OBIEE New Google charts (2010-05-08 21:27) . . . . . . . . . . . . . . . . . . . . . . . . 390
OBIEE Naming Conventions Business Model Layer (2010-05-09 11:02) . . . . . . . . . 391
12
OBIEE See me speak (2010-05-11 11:40) . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
OBIEE Remove Default button from one dashboard only (2010-05-11 18:51) . . . . . . 393
OBIEE Naming Conventions Presentation Layer (2010-05-11 20:06) . . . . . . . . . . 394
OBIEE Remove PDF print option for one dashboard only (2010-05-11 21:13) . . . . . . 395
OBIEE Open letter to Oracle (2010-05-14 11:51) . . . . . . . . . . . . . . . . . . . . . . 396
OBIEE Remove line below guided navigation link (2010-05-15 19:02) . . . . . . . . . . . 397
My Scrapbook (2010-05-16 12:17) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
OBIEE Events Calendar (2010-05-17 20:07) . . . . . . . . . . . . . . . . . . . . . . . . . 398
OBIEE Conditional format based on other column in charts (2010-05-18 09:39) . . . . . 401
OBIEE Playing With TopN Part 1 (2010-05-20 21:13) . . . . . . . . . . . . . . . . . . . 406
OBIEE Playing With TopN Part 2 (2010-05-21 21:41) . . . . . . . . . . . . . . . . . . . 408
OBIEE Brighton 2010 (2010-05-22 17:50) . . . . . . . . . . . . . . . . . . . . . . . . . . 412
OBIEE Playing with TopN part 3 the Rank Function (2010-05-22 20:16) . . . . . . . . . 413
OBIEE 11g The GA bet (2010-05-23 23:54) . . . . . . . . . . . . . . . . . . . . . . . . . 413
OBIEE Like to bet? (2010-05-24 22:18) . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
OBIEE TimeStamp Calculations: (2010-05-25 18:00) . . . . . . . . . . . . . . . . . . . . 414
4.6 June . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
OBIEE 11g Launch (2010-06-06 12:59) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
OBIEE Guide user to help text (2010-06-14 12:36) . . . . . . . . . . . . . . . . . . . . . 415
OBIEE PATCHES 10.1.3.4.1 part 5 (2010-06-17 08:32) . . . . . . . . . . . . . . . . . . . 415
OBIEE11G Visualisations (2010-06-18 10:21) . . . . . . . . . . . . . . . . . . . . . . . . 416
OBIEE Multie line tabs part 2 (2010-06-23 14:40) . . . . . . . . . . . . . . . . . . . . . 416
OBIEE Which report uses which column (2010-06-24 18:50) . . . . . . . . . . . . . . . . 419
OBIEE you don t want to see this&.. (2010-06-25 08:48) . . . . . . . . . . . . . . . . . 421
OBIEE Google map redux (2010-06-26 18:03) . . . . . . . . . . . . . . . . . . . . . . . . 422
OBIEE dynamic pivot calculations (2010-06-28 10:18) . . . . . . . . . . . . . . . . . . . 423
OBIEE Adding Image to Column Header (2010-06-30 08:42) . . . . . . . . . . . . . . . 427
4.7 July . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
OBIEE Which connection pool user NOT to use (2010-07-02 10:52) . . . . . . . . . . . 428
OBIEE 10G the Farewell Competition (2010-07-04 11:12) . . . . . . . . . . . . . . . . . 428
OBIEE dynamic columns in the by statement (2010-07-04 14:34) . . . . . . . . . . . . . 430
OBIEE 10G The Farewell Competition! (2010-07-05 11:49) . . . . . . . . . . . . . . . . 430
OBIEE Administration Tool Options Part 1 (2010-07-06 08:13) . . . . . . . . . . . . . . 430
OBIEE11g Launch day! (2010-07-07 16:59) . . . . . . . . . . . . . . . . . . . . . . . . . 431
OBIEE Administration Tool Options Part 2 (2010-07-08 08:22) . . . . . . . . . . . . . . 431
OBIEE Administration Tool Options Part 3 (2010-07-10 08:27) . . . . . . . . . . . . . . 432
OBIEE Administration Tool Options Part 4 (2010-07-12 08:33) . . . . . . . . . . . . . . 433
OBIEE Images Cheat Sheet (2010-07-14 00:43) . . . . . . . . . . . . . . . . . . . . . . . 433
OBIEE remove the whole portalbanner (2010-07-16 11:23) . . . . . . . . . . . . . . . . . 436
13
14
Chapter 1

2007

1.1 December

My First Blog (2007-12-05 07:19)

Wow,
Even I had to go with the flow and create my own blog.
Let me introduce myself...
My name is John Minkjan and I’m a senior BI consultant voor [1]CIBER in the Netherlands.
I use this blog to store all the things I run into when using OBIEE. Mostly to use it as a reminder (how
did we to that?). Feel free to send me any comments!
1. http://www.ciber.nl/

OBIEE Dummy Column with NULL value (2007-12-05 10:03)

Sometimes you need a dummy column in Union (ALL) query’s with a NULL value.
Try this =>
CAST(NULL as double)

OBIEE EVALUATE function and presentation variables (2007-12-05 18:00)

I have this function defined in a report:


evaluate(’bi server.fnc XXX l ind ( %1, %2)’ as varchar(250),@ {MACHINEID } {’1234’ }
,@ {PTESTCODE } {’X56GH’ })
both %1 and %2 are varchar
When I put the report in a dashboard and try to fill the presentation values the report comes back with:
[nQSError: 27005] Unresolved column: ”X56GH”. (HY000)
The reason for this error is that is’t trying to use the column ”X56GH” instead of the string ”X56GH”.
The solution is to put single quotes around the presention variables:
evaluate(’bi server.fnc XXX l ind ( %1, %2)’ as varchar(250),’@ {MACHINEID } {1234 }’,’@ {PTEST-
CODE } {X56GH }’)
But not around the default values!

OBIEE Measures and Events in one chart (2007-12-06 10:55)

Recently I had a question from a customer, a truck management company. They collect electronically
statistics from several truck company s. One statistic is fuel consumption.
15
[1]
The other one is trips to the garage:

[2]
Where 1 = Tyre change, 2 = Oil Change, 3= Fuel Filter Change, 4 = Other maintenance.

They want this data combined in one chart, to see if a trip to garage has an influence on the fuel
consumption.

First I combined the data into one view using UNION ALL and a couple of dummy columns. If I have
an event for that date I put in a 10 else NULL.

[3] Then I put this into a Line Bar


Combo Graph

16
[4]

A simple way to combine Measure and Events.

[17-DEC-2007] @George:

This is the date format:[5]

[6]

1. http://bp2.blogger.com/_3AP-vNabdk4/R1fJOz2SG7I/AAAAAAAAAAY/JJ3LkEiiMkw/s1600-h/Fuel_Consumption.JPG
2. http://bp1.blogger.com/_3AP-vNabdk4/R1ffgj2SG8I/AAAAAAAAAAg/vQcbULxHeRI/s1600-h/Trucks_in_Garage.JPG
3. http://bp0.blogger.com/_3AP-vNabdk4/R1fmIT2SG_I/AAAAAAAAAA4/VBL-a34WP38/s1600-h/Combined.JPG
4. http:
//bp1.blogger.com/_3AP-vNabdk4/R1fy5j2SHAI/AAAAAAAAABA/V8ionxf9DcI/s1600-h/Chart_Measure_and_event.JPG
5. http://bp0.blogger.com/_3AP-vNabdk4/R2YYTuEukFI/AAAAAAAAADI/j6XsdyMKLH4/s1600-h/OBIEE_date_format.JPG
6. http://bp2.blogger.com/_3AP-vNabdk4/R2YYFOEukEI/AAAAAAAAADA/i5sk9v4MqS0/s1600-h/OBIEE_date_format.JPG

17
OBIEE for MicroSoft Office (2007-12-06 14:14)

When you try to log on to OBIEE for the first time from Excel, you are asked to define a connection:

[1]
The setup documentation and the default settings from OBIEE for MS-Office can put you in the wrong
direction.
The port number is the port where your bioffice is running, default this is the same port as your BI-server
(default) 9704.
Your connection could look like this:

[2]
1. http:
//bp1.blogger.com/_3AP-vNabdk4/R1f3Ij2SHBI/AAAAAAAAABI/eutaEe5giHE/s1600-h/OBIEE_MS_OFFICE_CONNECTION.JPG
2. http://bp1.blogger.com/_3AP-vNabdk4/R1f4-j2SHCI/AAAAAAAAABQ/eA_TvHp72hE/s1600-h/OBIEE_MS_OFFICE_
CONNECTION_WITH_PORT_INFO.JPG

OLAP 101 (2007-12-06 14:57)

Found this blog entry:


Part I:
[1]http://oraclebi.blogspot.com/2007/11/olap-workshop-basic-over view-of-olap.html
part II:
[2]http://oraclebi.blogspot.com/2007/11/olap-workshop-part-2-und erstanding-olap.html
Part III:
[3]http://oraclebi.blogspot.com/2007/12/olap-workshop-part-3-bui lding-analytic.html
Some good basic info examples when you need to talk with customers
1. http://oraclebi.blogspot.com/2007/11/olap-workshop-basic-overview-of-olap.html
2. http://oraclebi.blogspot.com/2007/11/olap-workshop-part-2-understanding-olap.html

18
3. http://oraclebi.blogspot.com/2007/12/olap-workshop-part-3-building-analytic.html

OBIEE Pivot table with carriage return (2007-12-07 09:06)

One of my customers wanted some data presented in a pivot table with a maximum of 5 columns. If
more data is available then a sort of carriage return should be given and continue on next line. (A sort
of DTP)
First I concatenated all the data into 1 cell:

[1]

Then I determined the ColomnNumber and RowNumber for each element. [2]

19
[3]
And finally put it in a pivot table:

[4]
Don’t forget to set the aggregate level for the measure to first!

1. http://bp2.blogger.com/_3AP-vNabdk4/R1kLskfttHI/AAAAAAAAABk/JNwQlSy_nOA/s1600-h/obiee_concat_data.JPG
2. http://bp0.blogger.com/_3AP-vNabdk4/R1kOrEfttJI/AAAAAAAAAB0/1Llu22_vukk/s1600-h/obiee_row_number.JPG
3. http://bp0.blogger.com/_3AP-vNabdk4/R1kOmEfttII/AAAAAAAAABs/eXyTiP6ilok/s1600-h/obiee_column_number.JPG
4. http://bp0.blogger.com/_3AP-vNabdk4/R1kPfEfttKI/AAAAAAAAAB8/N5waGJo-b14/s1600-h/OBIEE_PIVOT_CARRIAGE_
RETURN.JPG

OBIEE EVALUATE Function (2007-12-07 11:39)

In the documentation for OBIEE 10.3.3.1 you find a very small description of the EVALUATE function:

6.1 EVALUATE Function


This function is intended for scalar and analytic
calculations.
Syntax: EVALUATE(’DB Function( %1)’, {
Comma separated Expression })
Example: SELECT
20
e.lastname,sales.revenue,EVALUATE(’dense rank()
over(order by %1
)’,sales.revenue) FROM sales s, employee e;

As often in practice the real world is more complex:


Good practice is to tell the EVALUATE function which type of return value it can expect:
EVALUATE(’DB Function( %1)’ as returntype, {Comma separated Expression }). If you omit this it
might sometimes complain that it can’t concatenated values from a different type.
Another trap is when you use columns from several tables for the input variables, be sure that they
have a direct join. Else OBIEE will try to join them underwater which can lead to unwanted Cartesian
products.

OBIEE EVALUATE AGGR Function (2007-12-07 12:02)

In the documentation for OBIEE 10.3.3.1 you find a very small description of the EVALUATE AGGR
function:

6.2 EVALUATE AGGR Function


This function is intended for aggregate functions
with group by clause.
Syntax: EVALUATE AGGR(’DB Aggregate Function( %1)’,
{comma separated Expression })
Example: SELECT year.year, sales.qtysold, EVALUATE AGGR(’sum( %1)’, sales.quantity)
From SnowFlakeSales;

This function is very useful if you want to use the build in statistics functions from the ORACLE database
like:

• CORR

• COVAR POP

• STDDEV POP

The following example calculates the coefficient of correlation between the list prices and minimum
prices of products by weight class in the sample view oe.products:SELECT weight class, EVALUATE
AGGR(’CORR( %1, %2)’ as double, product information.list price, product information.min price)
FROM product information;

If you get a ”[38083] The Attribute defines a measure using an obsolete method.” error, check whether
you set the Aggregation Rule of the logical column correctly.

Good info can also be found here:

[1]http://www.oracle.com/technology/products/bi/pdf/Oracle %20Business %20Intelligence %20Server


%20and %20Embedded %20DB %20Functions.pdf

1. http://www.oracle.com/technology/products/bi/pdf/Oracle%20Business%20Intelligence%20Server%20and%
20Embedded%20DB%20Functions.pdf

21
OBIEE referencing session variables in report title (2007-12-10 14:40)

After spending way to much time figering out the exact lingo, I decided to blog them for futher reference:

• currentTime => @ {system.currentTime }

• system.productVersion => @ {system.productVersion }

• session.locale => @ {session.locale } = en-gb

• session.language => @ {session.language } = en

• rtl =>@ {session.rtl } = false

• session.loginTime => @ {session.loginTime }

• session.logoutTime =>@ {session.logoutTime }

• session.lastAccessTime =>@ {session.lastAccessTime }

• session.currentUser => @ {session.currentUser.id } = administrator

• user.homeDirectory => @ {user.homeDirectory } = /users/administrator

• user.id => @ {user.id } = administrator

• user.displayName => @ {user.displayName } = administrator

OBIEE empty presentation tables in a repository in a multi-user environment


(2007-12-11 12:20)

If you check in a repository in a multi-user environment, you will notice that it doesn’t accept empty
presentation tables, which you might use for table indentation.

One solution is to using a dummy column:

[1]
To make it invisible for the other users you can make a special user HideColumn:
22
[2][3]
And set the persions only for this user:

[4][5]
This way OBIEE checks in and out without any problems.

1. http:
//bp2.blogger.com/_3AP-vNabdk4/R151jJPKGyI/AAAAAAAAACg/lGWPetcbpoM/s1600-h/OBIEE_Folder_indentation.JPG
2. http://bp3.blogger.com/_3AP-vNabdk4/R150OZPKGwI/AAAAAAAAACQ/K9dZbckVI9Q/s1600-h/OBIEE_HideColumn_User.
JPG
3. http://bp1.blogger.com/_3AP-vNabdk4/R152X5PKGzI/AAAAAAAAACo/2nRZCPDMnZY/s1600-h/OBIEE_HideColumn_User.
JPG
4. http://bp0.blogger.com/_3AP-vNabdk4/R150dpPKGxI/AAAAAAAAACY/yzH2FTeVLZI/s1600-h/OBIEE_HideColumn_
Permissions.JPG
5. http://bp1.blogger.com/_3AP-vNabdk4/R152-5PKG0I/AAAAAAAAACw/3oLAP4VfPok/s1600-h/OBIEE_HideColumn_
Permissions.JPG

23
OBIEE Excel and slashes (2007-12-11 17:45)

Just a tip from my (time costly) experience when using the Excel plug-in. Try to avoid the ’/’ - forward
slash (fi: costs / hr) in column names . Excel has sometimes trouble handling those columns if the column
name is used in further (VBA) scripting. Basically it not a good idea to use any mathematical signs
(+-/*ˆ % # &) in a column name.

OBIEE Default security groups for BI Publisher (2007-12-13 07:19)

If you are using OBIEE and BI Publisher side by side using shared security model (XDO), you wil need
to create some default users groups:

[1]
These groups are used by the XMLP server:

• XMLP ADMIN

• XMLP DEVELOPER

• XMLP SCHEDULER

• XMLP ANALYZER EXCEL

• XMLP ANALYZER ONLINE

• XMLP TEMPLATE DESINGER

If you are working with multi user repository development remember to assign the groups at least to one
project, or the group will be lost at check in.
1. http://bp0.blogger.com/_3AP-vNabdk4/R2DPTJPKG1I/AAAAAAAAAC4/_xGzZsqnrP8/s1600-h/OBIEE_Default_Users.JPG

OBIEE Duration between events (2007-12-19 11:00)

OBIEE doesn’t have a default GANTT type chart type.

[1]
24
For a customer I developed a simple and crude alternative.
First I get the LAG column and a Dummy column which calculates the total duration in the selection so
far:

[2]

[3]
Then a select a vertical bar graph in which I give the dummy column the same colour as the background:
25
[4]
I know it’s crude, but it works, but any better suggestions are welcome.

1. http://bp0.blogger.com/_3AP-vNabdk4/R2jshOEukGI/AAAAAAAAADQ/ofQS7i8OGxw/s1600-h/OBIEE_DURATION_BETWEEN_
EVENTS.JPG
2. http://bp1.blogger.com/_3AP-vNabdk4/R2jsneEukHI/AAAAAAAAADY/gsfT0Q-gVOo/s1600-h/obiee_dummy_column.JPG
3. http://bp0.blogger.com/_3AP-vNabdk4/R2jsuOEukII/AAAAAAAAADg/r2HsXivmTx0/s1600-h/obiee_lag_column.JPG
4. http://bp3.blogger.com/_3AP-vNabdk4/R2js6-EukJI/AAAAAAAAADo/Vb0r1PurZqI/s1600-h/OBIEE_DURATION_
BETWEEN_EVENTS_TOTAL.JPG

OBIEE Scale markers (2007-12-19 11:30)

According to the documentation you can set a scale marker based on a column value.

[quote]Options for these values include a static value, a variable, a value


sourced from a column included in the request, or one derived from a SQL
query.
Advanced options enables you to dynamically set values based on
results of a
column, query, or presentation variable which is evaluated
while rendering the
chart as follows.[/quote]

It seems that if a query is very complex (5 union all and some dashboard prompts) you loose the column
selector (undocumented feature?).

== After futher research I discovered that this feature seems to


be turned on or off based on the availble columntypes. If you make the column an aggragate
(SUM,MIN,MAX etc) you can use it directly.... ==
26
You can add the scale marker manually by first adding a static marker and then editing the XML directly
by replacing the linePosition part:

(saw:linePosition>(saw:columnRef columnID=”c59”/> (/saw:linePosition>

( Replace the ( with < )


where ”c59” is the column you want to use as a scale marker.

27
28
Chapter 2

2008

2.1 January

OBIEE using oracle stored procedure to fill report (2008-01-11 13:35)

Oracle stored procedures by default don’t return recordsets, but sometimes a query is to slow or complex.
Especially if it contains multiple outerjoins or complex statistical calculations. (yes, if know how to handle
table types there is an other workaround see: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11
QUESTION ID:666224436920 )
In this demo I will show you a workaround. First you need to tables, one for the parameters and one for
the resultset.

CREATE TABLE SH.DEMOPAR


( ID NUMBER, SDATE DATE DEFAULT trunc(sysdate
- 183), EDATE DATE DEFAULT
trunc(sysdate), MACHINENUMBER VARCHAR2(30 BYTE) )
;
CREATE
UNIQUE INDEX SH.DEMOPAR PK ON SH.DEMOPAR (ID) ;
CREATE
TABLE SH.DEMODATE
(ID NUMBER, MDATE DATE, VALUE NUMBER, INTERPOL NUMBER, C1
NUMBER, C2 NUMBER ) ;
CREATE UNIQUE INDEX SH.DEMODATE PK ON SH.DEMODATE
(ID, MDATE) ;

For the parameter table you need to construct an XML file for the write-back functionality:
-<-webmessagetables sawm=”com.siebel.analytics.web/message/v1”>
-<-webmessagetable lang=”en-us” table=”Messages” system=”WriteBack”>
-<-webmessage name=”demosavepar”>
-<-XML>
-<-writeBack connectionPool=”CP dateDemo”>
-<-insert>INSERT
INTO DEMOPAR VALUES(’@ {c0 }’,’@ {c1 }’,’@ {c2 }’,’@ {c3 }’)
-<-update>UPDATE DEMOPAR SET SDATE = ’@ {c1 }’,EDATE =
’@ {c2 }’,MACHINENUMBER = ’@ {c3 }’ WHERE ID= ’@ {c0 }’
-<-/writeBack>
-<-/XML>
-<-/webmessage>
29
-<-/webmessagetable>
-<-/webmessagetables>
Alter the ”-<-” in ”<” and place the file in ?:\ {OracleBI }\web\msgdb\customMessag es. Next restart
the presentation server. Add both tables to two separate connection pools in your repository! Be sure
the cache is off.
Make one report for the parameter table and add the write-back functionality.[1]

Next go to the connection pool for your datatable and open the ”Execute before query” tab:

[2]
Here you can put your script to execute the stored procedure:[3]

Now you can put both reports on a dashboard!


Till next time
1. http://bp3.blogger.com/_qd3TDEvIh4Y/R4drCHkyvcI/AAAAAAAAAAM/UF52kD_aHn8/s1600-h/obiee_writeback.JPG
2. http://bp0.blogger.com/_qd3TDEvIh4Y/R4duMXkyveI/AAAAAAAAAAc/VC_Hpz5VvZE/s1600-h/obiee_execute_before_
query.JPG
3. http://bp3.blogger.com/_qd3TDEvIh4Y/R4duiHkyvfI/AAAAAAAAAAk/476Nez_9Xj0/s1600-h/obiee_query_script.JPG

OBIEE IsNumeric (2008-01-16 07:54)

I was searching for an ’IsNumeric’ function in OBIEE and couldn’t find it so I wrote two alternatives. If
anybody has better suggestions feel free to report them!
(the report builders didn’t have the proper authorisation to make there own dbFunctions)
Version 1 (all OBIEE):

CASE WHEN
LENGTH(TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
30
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPL
ACE(REPLACE(TBLTRUCKS.LICENSEPLATE,’1’,’
’),’2’, ’ ’),’3’, ’ ’),’4’, ’ ’),’5’,’ ’),’6’, ’ ’),’7’,’ ’),’8’,’ ’),’9’,’
’),’0’,’ ’),’+’,’ ’ ),’-’,’ ’),’.’,’ ’))) <> 0 THEN ’Non-Numeric’ ELSE
’Numeric’ END

Version 2 (Doing it on the database):

CASE WHEN EVALUATE(’LENGTH(TRIM(TRANSLATE( %1, %2, %3)))’ AS DOU-


BLE PRECISION,
TBLTRUCKS.LICENSEPLATE, ’+-.0123456789’, ’ ’ ) IS NULL THEN ’Numeric’ ELSE
’Non-Numeric’ END

[1]
Until next time....
1. http://bp2.blogger.com/_qd3TDEvIh4Y/R42sHXkyvgI/AAAAAAAAAAs/NB-WWGEG3pk/s1600-h/obiee_IsNumeric.JPG

OBIEE Corda Popchart (2008-01-16 12:25)

If you want to use the examples for the Corda Popchart Engine in OBIEE you first have to register a
DLL .
The script is called ”installCOMEmbedder.bat” can be found here:
?:\OracleBI\corda50\bin
Till Next Time

OBIEE Corda Popchart Example (2008-01-16 14:34)

A customer asked me to demonstrate the default ”CORDA” graph types availible in OBIEE to insert into
a dashboard. After a lot of ctrlC and ctrlV if made this HTML page for future reference. (You have to
run it on your OBIEE / CORDA server)

[1]graph type samples.zip[2]

Till Next Time


1. http://www.pi4aa.nl/_obiee/graph_type_samples.zip
2. http://www.pi4aa.nl/_obiee/graph_type_samples.zip

31
OBIEE X,Y and data in mouse over label (2008-01-16 17:21)

One of our custumers wants not only the data value in the mouse over label but als the X and Y axis
value.

[1]
You can achieve this by editing the ”.PCXML” for the graph type.

% BUBBLE VALUE=> The value for the bubble item. [bubble]


% CATEGORY NAME => The name of the category that the data item belongs to. [All,
except, X-Y and Time Plot]
% CATEGORY TOTAL => The sum of all data values in the category to which the data
item belongs. [Area, Bar, Line, Pareto, Pie, Radar]
% CLOSE VALUE => The close value for a high-low data item. [Stock]
% GRAPH TOTAL => The sum of all data values in a bar, line, pie, or radar graph. [Area,
Bar, Line, Pareto, Pie, Radar]
% HIGH VALUE => The high value for a high-low data item. [Stock]
% LOW VALUE => The low value for a high-low data item. [Stock]
% OPEN VALUE => The open value for a high-low data item. [Stock]
% PERCENT OF CATEGORY => The data value represented as a percentage of the sum
of all data values in its category. [Area, Bar, Line, Pareto, Pie, Radar]
% PERCENT OF TOTAL => The data value represented as a percentage of the
sum of all data values in the graph. [Area, Bar, Line, Pareto, Pie, Radar]
% SERIES NAME => The name of the data series that the data item belongs to. [All]
% TIME VALUE => The time value for a Time Plot data item. [Time Plot]
% VALUE => The value of the data item. [Area, Bar, Line, Pareto, Pie, Radar]
% XVALUE => The x value for an X-Y data item. [X-Y]
% YVALUE => The y value for an X-Y or Time Plot data item. [X-Y, Time Plot]

You can find the ”.PCXML” files here: {OracleBI }\web\app\resashs oracle10\popbin or {OracleBI
}\web\app\resashs Siebel77\popbin
look for
<- DataLabels Font=’Size:9;Style:Bold;’ TransparentBackground=’False’ BGColor=’ #FFFFFFcd’ Bor-
derColor=’ #EEEEEE’ FormatString=’ % BUBBLE VALUE’/>
After editing you have to restart the java host and the presentation service.
32
Till Next Time
1. http://bp2.blogger.com/_qd3TDEvIh4Y/R48zG3kyvhI/AAAAAAAAAA0/4A9ht_QOwa0/s1600-h/OBIEE_BUBBLE_MOUSE_
OVER_NO_FORMAT.JPG

OBIEE adding a customized graphtype (2008-01-17 13:32)

One of our customers had the need for some extra customized graphtypes in answers. It took me a while
to figure out how OBIEE connects but here is how we did it.

1. In the map {OracleBI }\web\app\resashs oracle10\popbin make a copy of the PCXML for the
graphtype you want customize.

2. rename the file [FI:bubble2.pcxml]

3. Open the file and make the custyomistions you want

4. In the map {OracleBI }\web\app\resashs oracle10\charts make a copy of the CXML for the
graptype you want to customize.

5. rename the file [FI:bubble2.cxml]

6. open the file and edit in sawc:template => displayNameRef=”kmsgChartCustomBubble”

7. edit in sawc:seriesRules => displayNameRef=”kmsgBubbleCustomSeries”

8. edit in sawc:engineSpecific file=”popbin/bubble2.pcxml”

9. Save and close the file.

10. Next we have edit the messages !you have to this for every language you use! (remember to back
it up, else you loose it after every (re-)install/update of OBIEE) [EDIT: or make a custommessage
folder for each language] go to {OracleBI }\web\msgdb\l en\messages

11. open ”chartmessages.xml” and add the entry <-WebMessage name=”kmsgBubbleCustomSeries”><-


TEXT>Bubble - Custom
33
12. Save and close the file
13. open ”charviewmessages.xml” and add the entry <-WebMessage
name=”kmsgChartCustomBubble”><-TEXT>Bubble - Custom
14. Save and close the file
15. restart the Java-host and the prestationserver.

note: replace ”<-” with ”<”

Till Next Time

OBIEE Graphs Gradient Effect (2008-01-22 08:48)

[1]

The default graph type are rather plain a simple ’professional’ effect can be created by playing around
with the gradient effect in the PCXML file:
<-Chart Version=’4.30.00’ BorderType=’None’ Width=’491’ Height=’295’ BGGradientColor=’ #ccccff’
GradientType=’BottomTop’ >
possible types are:
34
• BottomTop

• TopBottom

• LeftRight

• RightLeft

Till Next Time


1. http://bp0.blogger.com/_qd3TDEvIh4Y/R5WlI3kyvkI/AAAAAAAAABM/Z_8bFdfqeac/s1600-h/gradient_LeftRight.JPG

OBIEE 10.1.3.3.2 availble on OTN (2008-01-24 10:03)

Discovered this morning that version 10.1.3.3.2 is available on OTN. A quick scan of the documentation
gives only small patches, mostly in the documentation.
It is still not possible to send DATE/TIME ranges to graphs&.
Till Next Time

OBIEE Restricting data based on User Group (2008-01-24 10:54)

One way of doing this is by making a calculated measure

FI:
CASE WHEN LOCATE(’GROUP NAME’, VALUEOF(NQ SESSION.”GROUP”)) > 0
THEN
MyBM. SomeColumn ELSE ’-’ END

The reason for using LOCATE is that


NQ SESSION.”GROUP” returns a comma separated string with all the groups a user belongs to fi:
Everyone;GROUP NAME Till Next Time

OBIEE backing up repository (2008-01-29 07:29)

When developing you sometimes need to go back in time. Developers have a natural tendency to forget
checking in there work properly, SourceSafe safe systems have a tendency to crash.....
During a recent project I installed this simple script on all development machines and simple have it run
every hour by a scheduler.
Stampme.cmd:

@ECHO off
SETLOCAL
IF [ %1] NEQ [] goto s start
:: Author - Simon Sheppard, July 2003
:: Tested for Windows NT, 2K, XP
:: Adapted by John Minkjan, January 2008 Ciber
ECHO STAMPME.cmd
ECHO Copy to a backup directory
ECHO and rename a file with the DATE/Time
ECHO.
ECHO SYNTAX STAMPME sh.rpd
35
ECHO.
:: To change the filename format just change around the last line below
GOTO :eof
:s start
SET
file= % n1 %
SET pathname= % f1 %
SET ext= % x1 %
::Get the date
:: note ISO 8601 date format would require 4 digit YYYY Year)
FOR /f ”tokens=6-8
delims=/ ” % %G IN (’NET TIME \\ %computername %’) DO (
SET mm= % %G
SET
dd= % %H
SET yy= % %I
)
:: Get the time
FOR /f ”tokens=1,2 delims=: ”
% %G IN (’time/t’) DO (
SET hr= % %G
SET min= % %H
)
copy ” % pathname %”
”.\backup\ % file %- % yy %- % mm %- % dd %@ % hr %- % min % % ext %”

Till Next Time

(2008-01-30 07:34)

Ideas for my BLOG


UDML optimize Reposotory
group by
EXecute on query
area under XY plot
Block area graphs
simple scripts
development street
metalink 3

fragmentation

timstamp add
cast(year(timestampadd(SQL TSI WEEK,-1,current date)) as char(4)) right(’0’ trim(
cast(week(timestampadd(SQL TSI WEEK,-1,current date)) As char(2))),2)

OBIEE Calculate YearWeek and YearWeekAgo (2008-01-30 10:56)

Dates in a datamodel are not always captured in a DateTime dimension. If you need to convert a date
to YearWeek (YYYYWW) or to a previous YearWeek, consider this one

36
cast(year(timestampadd(SQL TSI WEEK,0,measuredate)) as
char(4)) right(’0’ trim( cast(week(timestampadd(SQL TSI WEEK,0,measuredate)) As
char(2))),2)

If you change the 0 to -1 you get a YearWeekAgo (or 2,3,4)


other intervals are:

• SQL TSI SECOND

• SQL TSI MINUTE

• SQL TSI HOUR

• SQL TSI DAY

• SQL TSI WEEK

• SQL TSI MONTH

• SQL TSI QUARTER

• SQL TSI YEAR

Till Next Time

2.2 February

OBIEE Usefull server scripts (2008-02-01 17:13)

When developing your repository you often have start and stop the BI-server between savings of the .rpd
file. For these task I made a couple of .cmd scripts which I draged on the windows taskbar .

StopBi.cmd:

:: StopBI.Cmd
:: Stops the Oracle BI Server
:: Author: John Minkjan
:: [1]http://knowledge.ciber.nl/weblog/ and [2]http://obiee101.blogspot.com/
Net stop ”Oracle BI Server”
exit

StartBi.cmd:

:: StartBI.Cmd
:: Starts the Oracle BI Server
:: Author: John Minkjan
:: [3]http://knowledge.ciber.nl/weblog/ and [4]http://obiee101.blogspot.com/
Net start ”Oracle BI Server”
exit
37
and combined they give ResetBI.cmd:

:: StopBI.Cmd
:: Stops and Starts the Oracle BI Server
:: Author: John Minkjan
:: [5]http://knowledge.ciber.nl/weblog/ and [6]http://obiee101.blogspot.com/
Net stop ”Oracle BI Server”
Net start ”Oracle BI Server”
exit

Till Next Time


1. http://knowledge.ciber.nl/weblog/
2. http://obiee101.blogspot.com/
3. http://knowledge.ciber.nl/weblog/
4. http://obiee101.blogspot.com/
5. http://knowledge.ciber.nl/weblog/
6. http://obiee101.blogspot.com/

OBIEE development street (2008-02-02 20:06)

If you are using a ”development street” (different development, test, acceptance and production environ-
ment) you sometimes need to reconfigure the connection pool of your repository back and forth. On a
recent project a customer of us wanted to have this automated for both convenience and security reasons.

Before I go explaining how we did two things:

1. Credit where credit is due, the original idea is from my collegue Raymond de Vries based on this
entry from [1]Mark Rittman.

2. This method isn’t supported by Oracle. They have logged as a possible feature for coming realeses.

This method is based the fact that Oracle uses UDML as scripting language when updating the reposi-
tory. You can check this by right clicking on the connection pool and pressing Ctrl + C. Paste the result

in note pad.
In the UDML script you regonise the ID of the connection (in this case 22). What we did was storing
this file 4 times as dbTst.txt, dbDev.txt, dbPrd.txt and dbAcc.txt. In each file we only changed the
datasource to the apporated database.

Next we created 4 .cmd files (conToTst.cmd, conToDev.cmd, conToPrd.cmd and conToAcc.cmd). Each
file looks like this:
:: conToTst.cmd
:: reconfigure OBIEE repository to TEST database
:: Author: John Minkjan Ciber
38
:: Raymond de Vries Ciber
:: stop the BI server

Net stop ”Oracle BI Server”’

:: Backup the rpd

copy E:\OracleBI\server\Reposi tory\trucks.rpd ..\OracleBI\server\Reposi tory\trucks.rpd.bak

:: run the update script

:: info :>

:: nQUDMLExec [-U [userid]]

:: [-P [password]]

:: -I input script pathname

:: [-B base repository pathname]

:: -O output repository pathname

:: [-8]

:: -8 is for UTF-8

:: Eg 1: nQUDMLExec -I testudml.txt -O rp1.rpd:: create a new repository rp1

:: Eg 2: nQUDMLExec -U administrator -I testudml.txt -B rp1.rpd -O rp2.rpd

:: modify rp1 and write to rp2

:: Update the .rpd

E:\OracleBI\server\BinxtbackslashnqUDMLexec.exe -U Administrator -P Administrator -


I E:\connect\dbTst.txt -B E:\OracleBI\server\Reposi tory\Trucks.rpd -O E:\OracleBI\server\Reposi
tory\Trucks.rpd

:: start the BI server


Net start ”Oracle BI Server”’

pause

exit

Till Next Time

1. http://www.rittmanmead.com/2007/10/27/scripting-entries-in-the-oracle-bi-repository/

39
OBIEE Adding session variables to the report title / using a narrative view
(2008-02-06 20:30)

A lot of times we find in the request for reports ”please put the value of the used report variables in the
title”.
But when you try that you quickly run into trouble. By default you are confined to only the predefined
ones:

From the OBIEE documentation:


To show your own defined variables (repository/session/presentation) in OBIEE you have to use the

narrative view.
First you have to add the variable(s) to your query:

Then alter the column properties, set


the column hide property.
40
Next open a Narrative view, set your
descriptive text, the variables are referenced by there a @ and there column number (in this case 2)

Set the rows to display to 1


Reorganize your compound lay-out so that your narrative view is directly below your title

Till Next Time


41
Sometimes you stand corrected see: [1]http://obiee101.blogspot.com/2008/09/obiee-title-view.html

1. http://obiee101.blogspot.com/2008/09/obiee-title-view.html

OBIEE Using ORACLE stored procedures part 2 (2008-02-07 17:34)

In the connection pool you are able to define connection scripts in 4 events:

• ”Execute on connect” -> Very usefull point for security logging events

• ”Execute before query” -> Ideal to fill a global temp table or to do some execution logging

• ”Execute after query” -> To close you execution loging

• ”Execute on dissconnect -> close your security log

Sadly in the OBIEE documentation (10.1.3.x ) there is no info about these options... I did some research
(mostly trail and error) on how to incoperate variables in these scripts. The syntax for this is different
then in the rest of OBIEE.
All parameters have to be enclosed in single quotes:

• ’:USER’, ’:PASSWORD’

• ’VALUEOF(REPOSITORY VARIABLE)’

• ’VALUEOF(NQ SESSION.SESSION VARIABLE)’

If you want to pass something from the dashboard put in a session variable.
The execution string is build like
42
BEGIN SCHEMA.PACKAGE NAME.PROCEDURE NAME(’PARAMETER’); END;

Don’t forget the semicolons ’;’


Till Next Time

OBIEE Using ORACLE stored procedures part 3 (2008-02-11 17:12)

If you are using the Multi User Development (MUD) be aware that the connectionscripts aren’t updated
when you check in.
You have to edit them manualy in the main repository.
Till Next Time

OBIEE Aggregate BY (2008-02-18 20:23)

OBIEE has many aggregate functions: AVG, AvgDistinct, BottomN, Count, CountDistinct, Count (*)
(CountStar), First, Last, Max, Median, Min, NTile, Percentile, PeriodAgo, PeriodToDate, Rank, StdDev,
Sum, SumDistinct, TopN.

Default OBIEE ”groups” these functions


on the lowest level. If you want it in an other ”grouping” you can use the ”BY” statement in your function

definition. If neccesary you can also


define multiple columns (Comma seperated):

43
In the background OBIEE is translating this to ANSI-SQL:

WITH SAWITH0 AS (select T21.LICENSEPLATE as c1,


T21.MEASUREDATE as c2, T21.FUELCONSUMPTION as
c3, avg(T21.FUELCONSUMPTION) as
c4, count(T21.FUELCONSUMPTION) as
c8, sum(T21.FUELCONSUMPTION) as c9from
TBLFUELCONSUMPTION T21group by T21.LICENSEPLATE,
T21.MEASUREDATE, T21.FUELCONSUMPTION)
select SAWITH0.c1 as c1, SAWITH0.c2 as c2, SAWITH0.c3
as c3, SAWITH0.c4 as c4,
sum(SAWITH0.c9) over (partition by SAWITH0.c2) / sum(SAWITH0.c8) over
(partition by SAWITH0.c2) as c5,
sum(SAWITH0.c9)
over (partition by SAWITH0.c1) / sum(SAWITH0.c8) over (partition by
SAWITH0.c1) as c6,
sum(SAWITH0.c9) over (partition
by SAWITH0.c1, SAWITH0.c2) / sum(SAWITH0.c8) over (partition by
SAWITH0.c1, SAWITH0.c2) as c7
from SAWITH0order by
c1, c2, c3

Which isn’t always the most cost effective way, you might consider using the EVALUATE AGGR func-
tion instead for very complex aggregations.
Till Next Time

OBIEE Controling Pivot View behavior (2008-02-23 12:09)

One of the more powerful tools in OBIEE is the pivot view. If you have large amounts of data you
sometime run out of rows and or columns or even worse out of cells
You can control these values by altering the instanceconfig.xml.
This file is usually found in ..\OracleBIData\web\confi g
Good info can be found in the Oracle® Business Intelligence Presentation
Services Administration Guide (b31766.pdf)
If you open instanceconfig.xml in notepad you get something like these parameters
44
The behavior of the pivot view can be altered with the following parameters:

• [MaxVisibleColumns] Sets the maximum number of columns to be displayed in a Pivot View default
{1000 }

• [MaxVisiblePages] Sets the maximum number of page choices (or pages in PDF) to be displayed in
a Pivot View default {1000 }

• [MaxVisibleRows] Sets the maximum number of rows to be displayed in a Pivot View. Default
{100000 }

• [MaxVisibleSections] Sets the maximum number of sections to be displayed in a Pivot View. Default
{1000 }

Altered in the in-

stance config it would look like this:

If you still run out of cells try this:

• [CubeMaxPopulatedCells] The maximum number of populated cells in the Pivot Table. If this
maximum is exceeded, the user receives an error when rendering the pivot table. Default {150000
}

• [CubeMaxRecords ] The maximum number of records returned by a query for the Pivot Table
engine to process. This roughly governs the maximum number of cells that can be populated in a
pivot table (unpopulated cells in a sparse pivot table do not count). If this maximum is exceeded,
the user receives an error when rendering the pivot table.

Till next Time


45
OBIEE Optimizing NQQuery.log for debugging (2008-02-29 19:29)

When building and debugging OBIEE repository s and reports you will often go back to the NQQuery.log.
Depending on the security setting of the user the actual query send to the database will be logged here.
Because the log can grow very quickly over time it often means having to scroll to the end of the log to
find the information needed.
By default the maximum size for the NQQuery.log is 10MB. This setting is found in the NQSConfig.ini

under USER LOG FILE SIZE:


If the log goes beyond this size OBIEE will rename it as NQQuery.log.old after it has finished the last
request.
In a development environment you might consider setting this value to 50KB (or even as low as 10KB).

That way the log only contains the very last actions you are interested in.
Be aware that if the new log goes beyond the USER LOG FILE SIZE the old NQQuery.log.old will
be overwritten.

Till Next Time

2.3 March

OBIEE No Thousand separator (2008-03-04 14:33)

One of our customers wants no thousand separators visible when using the English languages settings.
To achive this you have to edit your localedefinitions.xml. You can find this probably in \Ora-
cleBi\web\config.

46
Restart the presentation sever.

WOW: (Word Of Warning) Do not use wordpad to edit this file but Notepad or an real XML-editor!
Till Next Time

OBIEE Continues Time Line (2008-03-09 15:43)

Because OBIEE graph types are not ”Date/Time” aware you often face the problem of broken
Date/Time Lines. If you don’t want to wait for OBIEE 11G you might want to try this alterna-
tive. Our table with fuel consumption entry’s doesn’t have an entry for each day after filtering:[1]

Due to this fact the graphical representation is wrong:

47
[2] One solution is to combine this re-
port with a union query based on a calendar dimension:

The executed query against 10G looks now like this:

[3] The graphical representation is no


much better.

48
[4]
Be aware that a union query will influence the perfromance! Till Next Time
1. http://bp2.blogger.com/_qd3TDEvIh4Y/R8q-OoJkGjI/AAAAAAAAAG4/Tx4f6N23iV4/s1600-h/OBIEE_UNION_001.JPG
2. http://bp1.blogger.com/_qd3TDEvIh4Y/R8q-DYJkGiI/AAAAAAAAAGw/puEEutCN8n0/s1600-h/OBIEE_UNION_002.JPG
3. http://bp0.blogger.com/_qd3TDEvIh4Y/R8q9-IJkGhI/AAAAAAAAAGo/--l9epvTnRc/s1600-h/OBIEE_UNION_003.JPG
4. http://bp2.blogger.com/_qd3TDEvIh4Y/R8q95oJkGgI/AAAAAAAAAGg/se_25YjaSV0/s1600-h/OBIEE_UNION_004.JPG

OBIEE Downgrading Repository (2008-03-09 16:37)

I wrote a Q &D Command line tool to downgrade an OBIEE repository. You have to run it on the oldest
OBIEE-server.
<————————–————————->
< COBIEEDG {CIBER } Obiee downgrade tool
< No warrantys what so ever!!!!!!!!!
< version 0.0.2
< 09 March 2008
< COBIEEDG Has to run on the oldest OBIEE server!!
<—————————————————>
-? Show Argument Help
-U User
-P Password
-I Source Repository
-O Output Repository
-N New Repository Number
<—————————————————>
You can download it [1]here!
Till Next Time
1. http://www.pi4aa.nl/obiee/cobieedg.zip

OBIEE Manage the cache part 1 (2008-03-13 22:16)

Emptying/Purging the cache


One of the most powerful features of OBIEE is the way it uses it’s cache. Good cache management can
really boost your performance. From the system management point of view there are a couple of tips
and tricks to influence the cache performance.
For a customer I made a couple of handy scripts for handling the cache.
1. Purging the whole cache.
If you have a completed database reload or want to do some performance testing with your repository
49
you might want to purge the whole cache.
Put the following in a .txt file in your maintenance directory

// Purge complete cache


// John Minkjan Ciber Nederland
// executed by cmd string:
// nqcmd -d AnalyticsWeb -u Administrator -p Administrator -s
c:\obiee\mscripts\purg ecompletecache.txt Call SAPurgeAllCache()

You can execute this from the commandline: nqcmd -d AnalyticsWeb -u Administrator -p Administrator
-s c:\obiee\mscripts\purgeco mpletecache.txt

[1]
2. Purging the cache by table If you have a major update of your dimensional tables you might want to
clear the cache for just one table.
Put the following in a .txt file in your maintenance directory:

// Purge complete cache


// John Minkjan Ciber Nederland
// FileName: PurgeTableCache.txt
// executed by cmd string:
// nqcmd -d AnalyticsWeb -u Administrator -p Administrator -s
c:\obiee\mscripts\Purg eTableCache.txt
Call SAPurgeCacheByTable( ’JJMORCL SH’, NULL, ’SH’, ’TBLTRUCKS’ );

You can execute this from the commandline: nqcmd -d AnalyticsWeb -u Administrator -p Administrator
-s c:\obiee\mscripts\PurgeTa bleCache.txt

[2]
WOW: the database, schema, (catalog), and tablename are the names in OBIEE not in the database. 3.
Purging the cache by query Sometimes you only want to purge only ”old” data from your cache.
Put the following in a .txt. file in your maintenance directory:

// Purge cache by Query


// John Minkjan Ciber Nederland
// FileName: PurgeQueryCache.txt
50
// executed by cmd string:
// nqcmd -d AnalyticsWeb -u Administrator -p Administrator -s
c:\obiee\mscripts\Purg eQueryCache.txt
Call SAPurgeCacheByQuery(’SELECT TBLFUELCONSUMPTION.LICENSEPLATE,
TBLFUELCONSUMPTION.MEASUREDATE,
TBLFUELCONSUMPTION.FUELCONSUMPTION FROM Trucks
WHERE TBLFUELCONSUMPTION.MEASUREDATE <= TIMESTAMPADD(SQL TSI
YEAR, -1,NOW())’); // The ”query” line must be one contiues line! You can execute
this from the commandline: nqcmd -d AnalyticsWeb -u Administrator -p Administrator -
s c:\obiee\mscripts\Purg eQueryCache.txt

[3]

WOW: the ”query” is the OBIEE one not the database one! 4 Purging the cache by database

Put the following in a .txt. file in your maintenance directory:


// Purge cache by Database
// John Minkjan Ciber Nederland
// FileName: PurgeDataBaseCache.txt
// executed by cmd string:
// nqcmd -d AnalyticsWeb -u Administrator -p Administrator -s
c:\obiee\mscripts\Purg eDataBaseCache.txt
Call SAPurgeCacheByDatabase( ’JJMORCL SH’ );
// The ”dbName” is the OBIEE name!

You can execute this from the commandline: nqcmd -d AnalyticsWeb -u Administrator -p Administrator
-s c:\obiee\mscripts\PurgeDa taBaseCache.txt
[4]
Till Next Time
1. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/2348b176-71d1-4adf-b85f-658d3c8ad371/image4.png
2. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/2348b176-71d1-4adf-b85f-658d3c8ad371/image9.png
3. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/

51
PostSupportingFiles/2348b176-71d1-4adf-b85f-658d3c8ad371/image14.png
4. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/2348b176-71d1-4adf-b85f-658d3c8ad371/image18.png

OBIEE Manage the cache part 2 (2008-03-16 09:35)

Seeding / Filling the cache

• Now why should you want to do that? OBIEE is not a database, so why would this be an advantage?

• If you have a ”slow connection to your source database, maybe because it’s on the other side of
the world.

• If you have ”slow” aggregation views.

• If you can ”predict” what 90 % percent of your queries look like .

From your user statistics you can pick up the top 10 of your queries, Check if you can make them
”dynamic” by changing fixed date into dynamic dates.
Put the following in a .txt file in your maintenance directory.

// Load cache by Query


// John Minkjan CIBER Nederland
// FileName: LoadCache.txt
// executed by cmd string:
// nqcmd -d AnalyticsWeb -u Administrator -p Administrator -s c:\obiee\mscripts\Load
Cache.txt
// Query 1
SELECT TBLFUELCON-
SUMPTION.LICENSEPLATE, TBLFUELCONSUMPTION.MEASUREDATE, TBLFUEL-
CONSUMPTION.FUELCONSUMPTION FROM Trucks WHERE TBLFUELCONSUMP-
TION.MEASUREDATE >= TIMESTAMPADD(SQL TSI YEAR, -2,NOW());
// Query 2
SELECT TBLFUELCONSUMPTION.LICENSEPLATE, TBLFUELCONSUMP-
TION.MEASUREDATE, TBLFUELCONSUMPTION.FUELCONSUMPTION FROM
Trucks WHERE
TBLFUELCONSUMPTION.MEASUREDATE <= TIMESTAMPADD(SQL TSI YEAR,
-3,NOW());
// The Queries are separated with a ;

Till Next Time

OBIEE Yes No Prompt (2008-03-28 10:50)

Sometimes you need a simple Yes / No prompt. If you don’t have a LOV (List of Values) table in your
db defined there is a simple workaround.
Create a new prompt based on any column:

Next set show to SQL results, deselect all choices:

52
Alter the SQL to:

SELECT case when 1=0 then TBLTRUCKS.LICENSEPLATE else ’Yes’ end FROM
Trucks union all SELECT case when 1=0 then TBLTRUCKS.LICENSEPLATE else ’No’
end FROM Trucks

The ”case when 1=0 then TBLTRUCKS.LICENSEPLATE ” is only there to trick OBIEE in thinking
that it’s selecting a column.

Alter the column name to ’SELECTOR’ (single quotes).

Set your default value, your presentation variable and set the label:

Till Next Time

OBIEE Repository Version Control (2008-03-31 20:39)

If you work in ”professional” development street (a separate machine for development, testing, acceptance
and production) you will have different version of the repository on different machines.
It s good practice to show to the user which version of the repository they are working on.
Since OBIEE doesn t have a (automatic) version number you have to use a work around.
Here is one:
In the repository make a new session variable init block INIT REP CONTROL .
53
Set the datasource to:
SELECT ’0.00.01’ REP VERSION, ’01-APR-2008 20:00’ REP VERSION DATE
FROM DUAL
Add the two session variables REP VERSION DATE and REP VERSION

54
In Presentation area add a new subject area Repository Version :
To the description area add the text:
The current version of the repository is: VALUEOF(NQ SESSION.REP VERSION).
This version was brought to production on: VALUEOF(NQ SESSION.REP VERSION DATE)

Add a dummy table and column, set the permissions to your HiddenColumns groups:

55
REMEBER TO ALTER REP VERSION AND REP VERSION DATE each time you move your
repository to the next server.

Till Next Time

2.4 April

OBIEE ”Combined with Similar Request” and filterview (2008-04-05 13:44)

If you use the ”Combine with Similar Request”


method in OBIEE, for instance in the case of making a ”DateTime” aware
graph ( [1]http://knowledge.ciber.nl/weblog/?p=93 or
[2]http://obiee101.blogspot.com/2008/03/obiee-continues-time-lin e.html) you will loose the filterview.

This is caused because the filterview only looks at the outer query of the UNION ALL statement:

[3]
This logically leads to ”Request contains no filters
I have developed a workaround for this problem:
Open a new request with a dummy column:[4]
56
The CASE when 1=0 statement prevent executing from the query so it won’t use any resources.
On this request put all your ”prompt”columns in the filter and set them on ”is prompted”or use ”named

prompts” { [5] } .
Be sure to also incoperate your ”hard coded” filters!
Add the filterview to your compound layout and remove all other views:[6]

Save your request as ”Filterview”[7]


Add the request to your dashboard and now you have the content off your filter on your dashboard.

57
Till Next
Time

[8]

1. http://knowledge.ciber.nl/weblog/?p=93
2. http://obiee101.blogspot.com/2008/03/obiee-continues-time-line.html
3. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/3f36468a-d769-4e1f-8906-4e3ce5f39104/image[11].png
4. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/3f36468a-d769-4e1f-8906-4e3ce5f39104/image[23].png
5. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/3f36468a-d769-4e1f-8906-4e3ce5f39104/image[26].png
6. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/3f36468a-d769-4e1f-8906-4e3ce5f39104/image[33].png
7. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/3f36468a-d769-4e1f-8906-4e3ce5f39104/image[30].png
8. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/3f36468a-d769-4e1f-8906-4e3ce5f39104/image[39].png

OBIEE View Selector, forcing a selection. (2008-04-05 14:52)

If you have a dashboard with a view selector by default OBIEE will executed the first request from the
selector when a dashboard page becomes ”active”. Especially if have several ”heavy” request will this
really slow down your dashboard and irriate the hell out of your users. A tip is: Add an extra title view
58
to your report and give this the title ”make a selection”
Add this extra title view to your view selector and rename it ”make a selection”. Be sure it’s on top of

the list. This way the dashboard is forced to

wait on the selection of the user:


Till Next Time

OBIEE 10.1.3.3.3 (2008-04-21 16:53)

Heard it trough the grapevine:


OBIEE 10.1.3.3.3 will be released within 48 hours.
Till Next Time
04/24/2008 07:20 -> The rumors seem to be wrong, still no release of 10.1.3.3.3.
Till Next Time
59
2.5 May

OBIEE 10.1.3.3.3 it’s out (2008-05-10 16:18)

OBIEE 10.1.3.3.3 is out, you can find at [1]OTN. They haven’t updated there documentation yet....
Till Next Time

Of course I was beaten by Venkatakrishnan : [2]http://oraclebizint.wordpress.com/2008/05/10/oracle-
bi-ee-101 333-released-and-out-for-download/
Most ’improvements’ seem to be in the BI publisher tool. Stil no ’datetime’ aware graphs.

1. http://www.oracle.com/technology/software/index.html
2. http://oraclebizint.wordpress.com/2008/05/10/oracle-bi-ee-101333-released-and-out-for-download/

OBIEE 10.1.3.3.3 documentation (2008-05-10 16:32)

The first documentation is out :


[1]http://download.oracle.com/docs/cd/E10415 01/doc/bi.1013/e10416/toc.htm
Till Next Time

1. http://download.oracle.com/docs/cd/E10415_01/doc/bi.1013/e10416/toc.htm

OBIEE making a column selector in a prompt (2008-05-18 19:47)

On of our customers has a very wide table containing 50+ ’settings’ columns and four ’result’ columns.
For there report they only use one of the setting columns, but they wanted total freedom to select this
column (1 of 50+).
A normal prompt for this report would take up a very large portion of the screen and was found very
unpractical / unaesthetic.
Here is how we solved this, based on the ’PAINT’ example:

First we made a simple report based on


the columns Year, Year Ago Dollars and Dollars. For debugging purpose we added the Logical SQL view.
On the year column we added the following filter based on a presentation variable.
60
[1]

No switch to the Advanced tab:


Have a close look at the request XML especially the filter part:
Periods.”Year”
FILTER01 LEFT
Now edit the FILTER XML to:
@ {FILTER01 LEFT } {’1’ }
@ {FILTER01 RIGHT } {’1’ }
Don’t forget the single quotes (’).

Press the set XML button: and switch back to your criteria view:

Save the report!


If you run the report and have a look at the logical SQL:

61
you will see that the filter have evaluated into 1=1, which is always TRUE. It’s a good practice not to
let it evaluate to NULL = NULL since not every database will give back the same result.
Now create a new prompt called FILTER01 LEFT as a dropdown list based on SQL:

In the SQL statement you put:


SELECT case when 0=1 then Markets.Region else ’1’ end FROM Paint
union all
SELECT case when 0=1 then Markets.Region else ’Markets.”Total US”’ end FROM Paint
union all
SELECT case when 0=1 then Markets.Region else ’Markets.Region’ end FROM Paint
union all
SELECT case when 0=1 then Markets.Region else ’Markets.District’ end FROM Paint
union all
SELECT case when 0=1 then Markets.Region else ’Markets.Market’ end FROM Paint
union all
SELECT case when 0=1 then Markets.Region else ’Products.”Total Product”’ end FROM Paint
union all
SELECT case when 0=1 then Markets.Region else ’Products.Type’ end FROM Paint
union all
SELECT case when 0=1 then Markets.Region else ’Products.Brand’ end FROM Paint
union all
SELECT case when 0=1 then Markets.Region else ’Products.UPC’ end FROM Paint
union all
SELECT case when 0=1 then Markets.Region else ’Products.Color’ end FROM Paint
union all
SELECT case when 0=1 then Markets.Region else ’Products.Finish’ end FROM Paint
union all
SELECT case when 0=1 then Markets.Region else ’Products.”Size X”’ end FROM Paint
Test the result:

Add the second prompt FILTER01 RIGHT as edit box prompt:

Test the result:

62
Save the prompt and open a new dashboard page, put the prompt and the report on the dashboard page:

Test the result

Till Next Time John Minkjan is a senior BI-consultant at Ciber in the Netherlands, the English text of
this article is also published on his compagny blog [2]http://knowledge.ciber.nl/weblog/
1. http://bp1.blogger.com/_qd3TDEvIh4Y/SDBsSA8jhwI/AAAAAAAAALI/gvgsN1NPbxA/s1600-h/blog002.JPG
2. http://knowledge.ciber.nl/weblog/

OBIEE Changing the line color in a scatter graph with line (2008-05-23 09:35)

In OBIEE they forgot to put in a editor to change the line color for a Scatter with lines graph. It’s a
known issue on Metalink3. A simple workaround is to edit the PCXML file for this graph type.
You can find it in:
...\OracleBI\web\appbackslashres\s oracle10\popbin
Open the file scatter.pcxml
after the {/legend } tag and before {/graph } tag add the following:

{SeriesDefinition Number=’1’ Color=’ #2175BB’/ } {SeriesDefinition


Number=’2’ Color=’ #F4B44D’/ } {SeriesDefinition Number=’3’
Color=’ #A4C000’/ } {SeriesDefinition Number=’4’
Color=’ #F9F400’/ } {SeriesDefinition Number=’5’
Color=’ #82AFDD’/ } {SeriesDefinition Number=’6’
Color=’ #000000’/ } {SeriesDefinition Number=’7’
Color=’ #C8C8C8’/ } {SeriesDefinition Number=’8’
Color=’ #CC6600’/ } {SeriesDefinition Number=’9’
63
Color=’ #CC99CC’/ } {SeriesDefinition Number=’10’
Color=’ #EE00EE’/ } {SeriesDefinition
Number=’11’/ } {SeriesDefinition
Number=’12’/ } {SeriesDefinition
Number=’13’/ } {SeriesDefinition
Number=’14’/ } {SeriesDefinition
Number=’15’/ } {SeriesDefinition
Number=’16’/ } {SeriesDefinition
Number=’17’/ } {SeriesDefinition
Number=’18’/ } {SeriesDefinition
Number=’19’/ } {SeriesDefinition Number=’20’/ }

(Note replace the { and } with correct tag symbols)


Till Next Time

OBIEE Pivot table Measure label (2008-05-29 20:04)

One of those things you have to be reminded of how it works.

If you have this request:

You will get a default table view like this:

Let’s put it in a pivot table:


Switch the measure label box with the region:
64
It becomes even more intressting wen we bring the measure label box to row pane:

Till Next Time

2.6 June

OBIEE Flexible Dashboards (2008-06-07 11:45)

One of our customers wanted a flexible dashboard. They wanted to select a x number of trucks and
have an individual graph for each truck. The number of selected truck varies between 0 and 5.
We made this possible by using the RANK function in OBIEE. We made a simple report for the licence
plate dimension:

[1][2]
65
Have a look at SQL going to the database:

[3]
If we put a filter (fi: 3) on the RANK we get:

[4]
You see that the filtering is done after getting the RANK number from the db.
Now save this report 5 times were you put a different number in each rank filter (SEL1, SEL2, SEL3,
SEL4 and SEL5) .
To test this make a dashboard page with a dimension prompt and the 5 SEL reports:

[5]
Select 1 truck:

[6]
Select 3 trucks:

[7]
Now make your real reports and filter them Filter based on results of another request.

66
[8]

[9]
Set your NO RESULTS view do a simple -

[10]
Do this also 5 times every time on a different SEL report. (RES1, RES2, RES3, RES4 and RES5)
Put the 5 RES reports to your dashboard instead of the SEL reports.

67
[11]
Check if it works:

[12]
Till Next Time

(this text is also published on [13]http://knowledge.ciber.nl/) NOTE: in some cases using RCOUNT
instead of RANK works better, there is a known issue of OBIEE RANK function when numbers are
strings.

1. http://www.pi4aa.nl/blogjohn/OBIEEFlexibleDashboards_99FF/image.png
2. http://www.pi4aa.nl/blogjohn/OBIEEFlexibleDashboards_99FF/image_3.png
3. http://www.pi4aa.nl/blogjohn/OBIEEFlexibleDashboards_99FF/image_4.png
4. http://www.pi4aa.nl/blogjohn/OBIEEFlexibleDashboards_99FF/image_5.png
5. http://www.pi4aa.nl/blogjohn/OBIEEFlexibleDashboards_99FF/image_6.png
6. http://www.pi4aa.nl/blogjohn/OBIEEFlexibleDashboards_99FF/image_7.png
7. http://www.pi4aa.nl/blogjohn/OBIEEFlexibleDashboards_99FF/image_8.png
8. http://www.pi4aa.nl/blogjohn/OBIEEFlexibleDashboards_99FF/image_9.png
9. http://www.pi4aa.nl/blogjohn/OBIEEFlexibleDashboards_99FF/image_10.png
10. http://www.pi4aa.nl/blogjohn/OBIEEFlexibleDashboards_99FF/image_11.png
11. http://www.pi4aa.nl/blogjohn/OBIEEFlexibleDashboards_99FF/image_12.png
12. http://www.pi4aa.nl/blogjohn/OBIEEFlexibleDashboards_99FF/image_13.png
13. http://knowledge.ciber.nl/

68
OBIEE Directing a user to a default dashboard (2008-06-07 22:12)

One of our customers wanted the OBIEE users after login directed to a default dashboard based on the
department they work in. First we created a view containing P USER, DEPARTMENT and PORTAL-
PATH.

[1]
In the variable manager we created an initialization block

[2]

[3]
We connected this to a session variable called PORTALPATH. This is a OBIEE reserved word so will get
a warning, just ignore it.

[4]
You need to restart the BI-server and the presentationserver!
Let s try it:
USER1
69
[5]
USER2

[6]
USER3

[7]
Till Next Time

1. http://www.pi4aa.nl/blogjohn/OBIEEDirectingausertoadefaultdashboard_13259/image.png
2. http://www.pi4aa.nl/blogjohn/OBIEEDirectingausertoadefaultdashboard_13259/image_3.png
3. http://www.pi4aa.nl/blogjohn/OBIEEDirectingausertoadefaultdashboard_13259/image_4.png
4. http://www.pi4aa.nl/blogjohn/OBIEEDirectingausertoadefaultdashboard_13259/image_5.png
5. http://www.pi4aa.nl/blogjohn/OBIEEDirectingausertoadefaultdashboard_13259/image_6.png
6. http://www.pi4aa.nl/blogjohn/OBIEEDirectingausertoadefaultdashboard_13259/image_7.png
7. http://www.pi4aa.nl/blogjohn/OBIEEDirectingausertoadefaultdashboard_13259/image_8.png

OBIEE ”Private” output type for a chart (2008-06-10 19:49)

Sometimes you want the OBIEE chart in a higher graphical definition. This can be done by altering
the instanceconfig.xml. Problem with this is that this will change the setting for the whole presentation
server.
At one of our customers we had the need only to change this for the scatter chart and leave the rest on
default (Flash)
This is how we did it:
Warning: Remember PNG and JPEG graphical types are not down drillable!
Step 1: Altering imagetypes.cxml
First locate your Chart support directory, usually found in &OracleBI\web\app\restbackslashs ora-
cle10\chartsupport

70
Make a copy of imagetypes.cxml in the same directory, give it a name which refers to the chart type
you want to use (eg: imagetypesScatter.cxml )
Open the renamed file (e.g. with Notepad):

Changed preferred to the image type you want (e.g.: png )

! Save the file

Step 2: Altering charttype.cxml


Now locate the charts directory usually found &.\OracleBI\web\appackslashres\s oracle10\charts

Open the .CXML file for the chart type (e.g.: scatter.cxml )

Alter the
{?xml:namespace prefix = xi / } {xi:include parse=”xml” href=”fmap://chartSupport/imagetypes.cxml”
71
} {/xi:include } {?xml:namespace
prefix = xi / } {xi:include parse=”xml” href=”fmap://chartSupport/imagetypes.cxml” } {/xi:include
}
(of course use the correct tag sign)
Till Next Time

OBIEE Excel Import, prepping the data (2008-06-15 17:04)

One of our customers has an application which generates an Excell with combined data.

They wanted this to be imported into OBIEE, but couldn t get OBIEE to see the data. They got the
connection oke, but didn t ”see” the tables. This problem was caused by the fact that the generating
application didn t prep the data. It didn t set the named ranges for the three tables.
Here is how you do it by hand:
Select a range:

Enter a range name and press enter!

Do the same for the two other tables:

Here is how you do it by VBA code:

Columns(”A:B”).Select ActiveWorkbook.Names.Add Name:=”MY TABLE RANGE”,


RefersToR1C1:= ”=Sheet1!C1:C2”
72
When you now try to import the data into OBIEE you will see the three tables:

Till Next Time Note: don’t forget


to disable the count distinct feature: [1]http://obiee101.blogspot.com/2008/11/obiee-excell-count-disti
nct-error.html

1. http://obiee101.blogspot.com/2008/11/obiee-excell-count-distinct-error.html

OBIEE Blocking request based on Criteria (2008-06-19 20:49)

The basis can be found in Oracle Business Intelligence Presentation Services Administration Guide
(B31766.pdf)

When a user attempts to execute a request that your code blocks, you can display an
error message, and the request will not be executed. The answerstemplates.xml file includes
a message named kuiCriteriaBlockingScript that can be overridden to either define or include
JavaScript that defines a validateAnalysisCriteria function. By default, this message contains
a function that always returns True.
Answers calls your validateAnalysisCriteria function when the user tries to execute the request.
The function can return True if the request is not blocked, or False or a message if the request
is blocked. If a message or a value other than False is returned, the message is displayed in a
popup window. In either case, the query is blocked.

Since the documentation on this subject is guiding you in the wrong direction, I toke upon myself to
make a step by step instruction.
Step 1: in .. \OracleBI\web\msgdb create a customMessages folder if it not already there:
73
Step 2: in \OracleBI\web\msgdbackslashcustomMessages create an XML file named : qbCriteria.xml
(The name is arbitrary, the content isn t !!!)

Step 3:
Enter the following XML into the file
{ ?xml version=”1.0” encoding=”utf-8”? }
{ WebMessageTables xmlns:sawm=”com.siebel.analytics.web.messageSystem” }
{ WebMessageTable system=”QueryBlocking” table=”Messages” }
{ WebMessage name=”kuiCriteriaBlockingScript” translate=”no” }
{ HTML }
{ script language=”javascript” src=”fmap:myblocking.js” / }
{ /HTML }
{ /WebMessage }
{ /WebMessageTable }
{ /WebMessageTables }
Replace the { and }
Save the file!
In &OracleBI\web\app\restbackslashb mozilla (this is wrong in the OBIEE documentation) make a
new text file called myblocking.js

Enter the following Script:


// This is a blocking function. It makes sure users pick what I want them to.
function validateAnalysisCriteria(analysisXml)
{
// Create the helper object
var tValidator = new CriteriaValidator(analysisXml);
74
// Validation Logic
if (tValidator.getSubjectArea() != ”Paint”)
return ”Why don’t you try Paint?”;
if (!tValidator.dependentColumnExists(”Markets”,”Region”,”Markets”, ”District”))
{
// If validation script notifies user, then return false
alert(”Region and District go so well together, don’t you think?”);
return false;
}
if (!tValidator.dependentColumnExists(”Sales Measures”,””,”Periods”,”Year”))
return ”You picked a measure so pick Year!”;
if (!tValidator.filterExists(”Sales Measures”,”Dollars”))
return ”Why don’t you filter on Dollars?”;
if (!tValidator.dependentFilterExists(”Markets”,”Market”,”Markets” ))
return ”Since you’re showing specific Markets, please filter the markets.”;
var n = tValidator.filterCount(”Markets”,”Region”);
if ((n <= 0) (n > 3))
return ”Please select 3 or fewer specific Regions”;
return true;
}
save the file:
the name myblocking.js is seemingly hard coded is OBIEE somewhere, I wasn t able to change it&&..
Restart the whole BI-server and play around in the Paint and Paint Exec subject area.
In Paint Exec:

In Paint:

Till Next Time

OBIEE Follow the sun / Time driven connection (2008-06-29 11:18)

One of our customers wanted a ’follow the sun’ solution to connect to there international databases.
Translated to the practice this means that they wanted to set a connectionpool based on the the local
time. To achieve this we made a repository initationblock called ”REP IB TNS” and a repository vari-
able called ”LOCAL TNS TO USE”.
75
In the datasource block we made a very simple query
which determines which TNS to uses based on the time of the day:

We forced a refresh every 10 minutes by setting the ”lifespan” of the block:

In the connection pool you make a reference by using the VALUEOF method:
76
n theory it takes a maximum of 15 minutes (10
minutes for ”REP IB TNS”, 5 minutes for the connection pool) to refresh all connections
Till Next Time

2.7 July

OBIEE naming conventions repository (2008-07-07 19:00)

One of those things which can cost you a lot of time:


If for some reasons you really need space’s in a repository name, put double quotes around it!
paint 1.rpd doesn’t work, ”paint 1.rpd” does.
If want to use a subdirectory you can use ”subdir\paint.rpd”. Be aware this is relative to you ..Ora-
cleBI\server\Repository directory.
Till Next Time

OBIEE Public Reports and Dashboards - Bypassing authentication (2008-07-07 19:08)

Have look at [1]this entry in Venkatakrishnan’s blog (a comprehesive blog for every OBIEE specialist!)
Till Next Times
1. http://oraclebizint.wordpress.com/2008/06/30/
oracle-bi-ee-1013332-public-reports-and-dashboards-bypassing-authentication/

OBIEE Preventing Auto-Previewing of Results in Answers (2008-07-08 19:25)

If you are creating a new request it can be a pain in the ... wenn every time you add a column the whole
query is exectued. Especially if you are working on a pivot view. This can be switched of by default
(except for the tableview)
Yes, it’s in the manual, Yes, there is a typo in the example......

77
Oracle Business Intelligence displays the results of the request when editing most views
within Answers. If you prefer that the user explicitly ask to view
the results, you can create an XML message that specifies that auto-preview
should be disabled when new views are created. The user can still click the display results
link to view the results when editing a view.

Here is my example.
In your customMessage Folder make a new XML entry called ”PreventAutoPreview.XML” (or any other
name you fancy). This folder is ussaly found under ..\OracleBI\web\msgdbtbackslashcustomMessages.
Add the following XML in the message:

! Save the file and restart the presentation server.

Now all the autopreview is switched off:


Till Next Time

OBIEE Changing XLS (Excel) data on the fly (2008-07-09 17:08)

• One the big strengths of OBIEE is the possibility to easily integrate Excel sheets into the repository.
If you leave everything to the default settings you will find that you can t edit the sheet on the
fly without having to restart the OBIEE services. Here is a workaround. Step 1: Make the XLS
workbook shareable
78
In Excel goto Tools > Share Workbook

In the Editing tab check the Allow changes&&.. box.


When prompted save the workbook!
Step 2: Set the connection pool settings:

79
Uncheck:
Require fully qualified table names
Shared logon
Enable connection pooling
Use multithreaded connections
Execute queries asynchronously
Check:
Parameters supported
Set:
Parameters supported to Repeatable read
Step 3:
80
Deselect the cacheable checkbox
Now when you have made a change to your Excel sheet you only have to press the refresh button in your

OBIEE report: Till Next Time

OBIEE Plus Workshop Munchen Day 1 (2008-07-15 11:09)

Just started the OBIEE Plus workshop in Munchen Germany. Altough a lot of 101 and 201 stuff the
program seems very intressting. They are on Linux so some new challenges for me :-)
Update 1: I REALLY NEED TO GET MY LINUX UP TO SPEED!!!
Who knows of a great 101 site for linux?
Update 2: This afternoon we rushed trough the basics. Good to (re)find some of the buttons which you
don’t use every day.
Update 3: Had some good tips and tricks from the course leaders from Oracle I will make them in a
couple of post next week (or wenn I find the time......)
Till Next Time

OBIEE Plus Workshop Munchen Day 2 (2008-07-16 10:00)

All whole day of working on the repository, finnaly figured out how and why to use preferred drill path,
will blog it soon...
Update 1: Got some really good info on using the webservice in VB and C #. So much to learn, so little
time.
Till Next Time
81
OBIEE Plus Workshop Munchen Day 3 (2008-07-17 09:07)

Had some good discussions on how and when to use the OBIEE cache.
Update 1: Had some good info about clustering, global synchronization is still a challenge.
Update 2: Some interesting discussions on security and a lab on using the Office plug-in.
Update 3: Very good demo on how to use SOA with OBIEE.
Update 4: Nice demo on using Essbase
General conclusion: If you a possibility to follow this workshop from Oracle PTS, you really should do
it. The course leaders are very knowledgeable and very willing to help you with your ’private’ issues.
Till Next Time

OBIEE managing the cache: Emptying/Purging the cache Part 2 (2008-07-19 10:42)

Besides using batch / shell


command to purge the cache (see: [1]http://obiee101.blogspot.com/2008/03/obiee-manage-cache-part-
1.html), it s also possible to do this automatically based on events in your ETL process.
This is done by having the OBIEE cache manager polling one or more a EVENTS table(s). What you
do is have a predefined reference table in a each database you are using. (If you have 1 complete ETL
process you could log all table changes in one table.)
The Event table should have the following structure (copied from the OBIEE documentation )

Note 1: You can play around with the column names as long as they imported in this order in the OBIEE
repository.
Note 2: Although UpdateTime needs to be unique, you can not put a UNIQUE constrain on this column.
OBIEE copies the row back into the table during the purging process.
A script for an Oracle version would look like this:
CREATE TABLE OBIEE UPDATE EVENTS
(
UPDATE TYPE INTEGER DEFAULT 1 NOT NULL,
UPDATE TIME DATE DEFAULT SYSDATE NOT NULL,
DB NAME VARCHAR2(40 BYTE),
CATALOG NAME VARCHAR2(40 BYTE),
82
SCHEMA NAME VARCHAR2(40 BYTE),
TABLE NAME VARCHAR2(40 BYTE) NOT NULL,
OTHER VARCHAR2(80 BYTE) DEFAULT NULL
)
/
Imported in the OBIEE repository it would look like this:

Now assign this table as an event table:


Tools > Utilities > Oracle Event Tables

Drag the event table(s) to the right side

Set the polling frequency, press OK.


Let s fill the cache with a simple query: (SH schema)

Check if the cache is actually


filled:

Fill the Event table: (Based on the SH


schema)
INSERT INTO obiee update events

83
(db name, catalog name, schema name, table name
)
VALUES ( orcl SH , NULL, SH , Sales
)
/
COMMIT
/
Look in the cache directory after the polling time:

Note 3: OBIEE removes each entry from the EVENT


table independent if it was a success or not.
Note 4: OBIEE only logs failures in the NQServer.log. Usually found in ..OracleBI\server\Log
Till Next Time
1. http://obiee101.blogspot.com/2008/03/obiee-manage-cache-part-1.html

OBIEE number of gauges on canvas (2008-07-21 18:04)

Some time ago a colleague of mine encountered the following error screen when developing a dashboard
with gauges.

After a small discussion: why the hell


he needed more then the OBIEE default of 100 gauges on a single screen? , he convinced me that it was
for development purposes only.
The properties which influence the gauge behavior can be found in the instanceconfig.xml.
If they are not yet present in the

file OBIEE uses the default settings.


Till Next Time

OBIEE running it on an other web port (2008-07-23 11:28)

On a default installation OBIEE runs on web port 9704. This means that the user will have
the put the portnumber in the webadress. (http://myhostname:9704/analytics/saw.dll?Dashboard).

If you want to run the websdervice on different port-


number or even better from the default port 80, this is what you have to do.

Step 1: Navigate to your OC4J config directory, ussally found in ..:\OracleBI\oc4j bi\j2ee\home\config
Step 2: Add a new directory called: ”backup orignal”. Copy the whole content of the config directory
to the new directory. (better save then sorry......) Step 3: Open the file named default-web-site.xml in
84
a (XML) editor. Step 4: between the {web-site } find the port= tag, change it to port = ”80”. Save

the file. Step 5: Add a new directory


called: ”backup change YYYYMMDDNNN” (fi:backup change 20080723001. Copy the whole content
of the config directory to the new directory. (Why?, if you not carefull during an upgrade you loose all
your OC4J settings......) Step 6: Stop and start your OC4J. You can now run your OBIEE website from

the new portnumber.


Of course you also have to alter the port
number in the OBIEE config files: ...\OracleBI\oc4j bi\j2ee\home\applicatio ns\bioffice\bioffice\WE B-
INF\bioffice.xml ...\OracleBI\xmlp\XMLP textbackslashAdmin\Configuration\xmlp- server-config.xml
...\OracleBIData\web\conf ig\instanceconfig.xml
Till Next Time This article is also published on: [1]http://knowledge.ciber.nl/weblog/

1. http://knowledge.ciber.nl/weblog/

OBIEE running it as a HTTPS / SSL service (2008-07-23 16:26)

We where recently asked how to run OBIEE as a HTTPS / SSL service. The customer wanted this
because of in house security policy. Here is how we did it:
Step 1: Navigate to your OC4J config directory, ussally found in ..:\OracleBI\oc4j bi\j2ee\home\config.
Add a new directory called: ”backup orignal”. Copy the whole content of the config directory to the new
directory. (better save then sorry......)
Step 2: Creating the SSLFILE (site certificate).
Open a command box and navigate to your OC4J config directory, ussally found at: ..:\OracleBI\oc4j
bi\j2ee\home\config. Enter
keytool -genkey -keyalg ”RSA” -keystore sslfile -storepass MySecretPassword -validity 365
Next you will get a couple of questions on your name and organisation, the values entered here are used
for ”encrypting” the key.

[1]
On the last question just give RETURN, else if you do not enter the same password as the storepassword,
you may get Cannot recover key errors when deploying your website.
Step 3: Creating a new website config file
From the config directory copy and paste the file ”default-web-site.xml” rename the copy to ”secure-web-
site.xml”. Open the new file in a editor. In the {web-site } change the port number to ”443” (or an
other you like) add the sub tag: secure=”true”. Add the SSL-config tag: {ssl-config keystore=”sslfile”
keystore-password=”MySecretPassword”/ }

85
[2]
Step 4: Edit SERVER.XML
Open the file ”SERVER.XML” in a editor and add reference to ”secure-web-site.xml”. Between the
application-server tags add: {web-site path=”./secure-web-site.xml” / }. Your file should look something
like this:

[3]
save the file!
Step 5: an extra backup!
Add a new directory called: ”backup change YYYYMMDDNNN” (fi:backup change 20080723001.
Copy the whole content of the config directory to the new directory. (Why?, if you not carefull during
an upgrade you loose all your OC4J settings......)
Step 6: Restart OC4J
Stop and start your OC4J.
You can now run your OBIEE website from the default HTTPS adress.
Remember: All your users still have to import the certificate!

Of course you also have to alter the port number in the OBIEE config files:
...\OracleBI\oc4j bi\j2ee\home\applicatio ns\bioffice\bioffice\WE B-INF\bioffice.xml
...\OracleBI\xmlp\XMLP textbackslashAdmin\Configuration\xmlp- server-config.xml
...\OracleBIData\web\conf ig\instanceconfig.xml
Till Next Time

This article is also published on: [4]http://knowledge.ciber.nl/weblog/

1. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/ef2715ca-8af2-42d6-be56-9ee93ea234e2/OBIEE_OC4J_004[3].jpg
2. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/ef2715ca-8af2-42d6-be56-9ee93ea234e2/OBIEE_OC4J_005[7].jpg
3. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/ef2715ca-8af2-42d6-be56-9ee93ea234e2/OBIEE_OC4J_006[3].jpg
4. http://knowledge.ciber.nl/weblog/

OBIEE Migration discover to OBIEE (2008-07-24 17:26)

Had a good demo this evening on the new migration tool for discover to OBIEE from the people at Oracle
PTS. Looks very promising!
They also solved the discover multi join path nicely!
The conversion of workbooks still under development.
The migration tool is planed to be in 10.1.3.4.
Till Next Time
86
OBIEE dropdown prompt (2008-07-24 20:00)

Q: Is it possible to add 10.000 entries to a dropdown prompt


A: Yes, but why the hell you want to do that since OBIEE doesn’t know autofill?
Anyway, this is how you do it:
Add / modify the following in your instanceconfig.xml:
{Prompts }
{MaxDropDownValues }10000 {/MaxDropDownValues }
{/Prompts }
Till Next Time

OBIEE Number of values in the multiselect prompt (2008-07-25 20:00)

[1]

If you want more or less choices returned alter / add this in the instanceconfig.xml:
{Prompts }
{MaxScrollValues }100 {/MaxScrollValues }
{/Prompts }
Till Next Time
1. http://bp1.blogger.com/_qd3TDEvIh4Y/SIiU54sAFXI/AAAAAAAAAYI/xVHmfUlUA2E/s1600-h/prompt_002.JPG

OBIEE Number of default values in a multiselect prompt (2008-07-26 20:00)

Q: There seems to be a maximum to the number of default values on a multiselect control prompt, can
we set this to 5000?

A: Yes, the default is 255, but why the hell you want to do that? Big chance that you run into trouble
with the ”in” statement OBIEE will create from this prompt!
Anyway, this is how you do it:
Add / modify the following in your instanceconfig.xml:
{Prompts }
{MaxDefaultValues }5000 {/MaxDefaultValues }
{/Prompts }
Till Next Time
87
OBIEE cache management. (2008-07-27 22:44)

Some remarks upfront:

• OBIEE is NOT a database. It s a tool to plough trough multidimensional data out of a data
warehouse or datamart.

• OBIEE is NOT an extraction tool. It s not designed to extract 100k+ rows to a CSV or XLS file.

• OBIEE reports returning more then 1000 rows are often use as source for other tools (like Excel)
and don t contain any information for the user without having him/her plough trough the data
manually.

• OBIEE caching is NOT in memory! It s a file based system.

How does the OBIEE cache work?


The program first hashes the request string, looks in the cache directory is there is already a valid file
present, if not it will execute the request against the database.
If you have a close look at your cache directory you will see that there it s collection of .TBL files. If
you open the file in an editor you will recognize things like, user, repository, execute request and of course
the resulting data.
Cache entries will become ”personal” if you have row level secrurity inside OBIEE. One other reason
for a cache entrie to become personal is when you have a VPD (Virtual Private Database) in place. A
good posting on this subject can be found here: [1]http://obieeblog.wordpress.com/2008/12/29/obiee-
and-virtual-p rivate-database-vpd/
Since all the cache is written to disk, the cache directory needs to be on the quickest drive available
preferable with its own disk controller.
Before we go in to detail over the possible cache settings we first have to ask ourselves what the valid
reasons to use the OBIEE cache are.

• The user executes the same request over and over within the valid period of the cache.

• The result of the request is the rollup of a large amount of underlying data. But if the rollup level
is greater then 1 to 100 you really should go back to your data warehouse design.

Caching a report because it takes to long is usually a sign that your data warehouse or data mart
doesn t meet the user requirements.
The parameters for the cache management can be found in NQConfig.ini.
ENABLE
To enable the cache set the ENABLE parameter to YES.
DATA STORAGE PATHS
This parameters specifies one or more directory paths for where the cached query results data is stored and
are accessed when a cache hit occurs. The maximum capacity in bytes, kilobytes, megabytes or gigabytes.
The maximum capacity for each path is 4 GB. For optimal performance, the directories specified should
be on high performance storage systems.
Each directory listed needs to be an existing, fully-qualified, writable directory pathname, with double
quotes ( ” ) surrounding the pathname. Specify mapped directories only.
UNC path names ( \\server.name.edu\som efolder ) and network mapped drives are allowed only if the
service runs under a qualified user account. To change the account under which the service is running,
see the corresponding topic in the Oracle Business Intelligence Enterprise Edition Deployment Guide.
Specify multiple directories with a comma separated list.
When you specify more than one directory, they should reside on different physical drives. (If you have
multiple cache directory paths that all resolve to the same physical disk, both available and used space
may be double-counted.)
88
Example: DATA STORAGE PATHS = ”d:\OracleBI\cache” 256MB, f:\OracleBI\cache” 256MB ;
OBIEE fills uses these directories alternating, request 1 goes to first directory, request 2 goes to second
directory, request 3 goes to first directory etc.
some notes:

1. Don t make a directory larger than 4 GB, this caused by the fact that some of the OBIEE core
products are VC++ based which uses an unsigned 32 bit integer for the memory allocation.

2. Working with an organization of 8000 users who run an average of 10 reports during the cache valid
period (average cache entry size 10 KB), I have never seen the total allocated cache space become
more then 1 GB during a 6 months monitoring period. If you really need a cache allocation of more
then 2GB there is probably something seriously wrong with your DWH or DM.

3. Invest in one or more small high-speed disks with low access times and large cache memories. Give
the drive(s) its/their own controller. If your are on a SAN ask your SAN system manager to give
you a high priority access drive, so you don t have to wait . You might want to consider creating
an ”in memory” drive.

4. An Oracle Business Intelligence Server defined as a clustered server does not share cached data. The
DATA STORAGE PATHS entry needs be unique for each server defined as a cluster participant.

5. Specifying more than one directory per drive does not improve performance, because file input and
output (I/O) takes place through the same I/O controller. In general, specify only one directory
per disk drive. Specifying multiple directories on different drives may improve the overall I/O
throughput of the OBIEE Server internally by distributing I/O across multiple devices.

6. Seeding the OBIEE cache with large tables (more then 1MB) as source for relative small requests
( less then 50kb) force OBIEE to do a full file read for every request. Most modern databases have
large shared pools and can do much quicker this read from memory.

7. Most datacentres have dedicated VLAN’s for communication between databases and OBIEE. Most
of these connections are much quiker then reading from disk.

MAX ROWS PER CACHE ENTRY


Specifies the maximum number of rows in a query result set to qualify for storage in the query cache.
Limiting the number of rows is a useful way to avoid using up the cache space with runaway queries that
return large numbers of rows. If the number of rows a query returns is greater than the value specified
in the MAX ROWS PER CACHE ENTRY parameter, the query is not cached. When set to 0, there
is no limit to the number of rows per cache entry.
Default: MAX ROWS PER CACHE ENTRY = 100000 ;
Setting this any higher makes OBIEE an ETL tool.
MAX CACHE ENTRY SIZE
Specifies the maximum size for a cache entry. Potential entries that exceed this size are not cached. The
default size is 1 MB.
Specify GB for gigabytes, KB for kilobytes, MB for megabytes, and no units for bytes.
Example: MAX CACHE ENTRY SIZE = 1 MB ; Altering this value should be done in conjunction
with the setting of MAX ROWS PER CACHE ENTRY.
MAX CACHE ENTRIES
Specifies the maximum number of cache entries allowed in the query cache. Limiting the total number
of cache entries provides another parameter with which to manage your cache storage. The actual limit
of cache entries might vary slightly depending on the number of concurrent queries. The default value is
1000. Example: MAX CACHE ENTRIES = 1000 ; Rule of thumb number of users * average number
of report per cache period .
POPULATE AGGREGATE ROLLUP HITS
Specifies whether to aggregate data from an earlier cached query result set and create a new entry in the
query cache for rollup cache hits. The default value is NO.
89
Typically, if a query gets a cache hit from a previously executed query, then the new query is not added to
the cache. A user may have a cached result set containing information at a particular level of detail (for
example, sales revenue by ZIP Code). A second query may ask for this same information, but at a higher
level of detail (for example, sales revenue by state). The POPULATE AGGREGATE ROLLUP HITS
parameter overrides this default when the cache hit occurs by rolling up an aggregate from a previously
executed query, in this example, by aggregating data from the first result set stored in the cache. That is,
Oracle BI sales revenue for all ZIP Codes in a particular state can be added to obtain the sales revenue
by state. This is referred to as a rollup cache hit.
Normally, a new cache entry is not created for queries that result in cache hits. You can override this
behavior specifically for cache rollup hits by setting POPULATE AGGREGATE ROLLUP HITS to
YES.
Nonrollup cache hits are not affected by this flag. If a query result is satisfied by the cache that is, the
query gets a cache hit then this query is not added to the cache. When this parameter is set to YES,
then when a query gets an aggregate rollup hit (for example, ”sales by region” is answered from ”sales
by district, region”) then the result is put into the cache. Setting this parameter to TRUE may result in
better performance, but results in more entries being added to the cache.
Example: POPULATE AGGREGATE ROLLUP HITS = YES ;
USE ADVANCED HIT DETECTION
When caching is enabled, each query is evaluated to determine whether it qualifies for a cache hit. A
cache hit means that the server was able to use cache to answer the query and did not go to the database
at all. The Oracle BI Server can use query cache to answer queries at the same or later level of aggregation
(Data Mart Automation).
The parameter USE ADVANCED HIT DETECTION enables an expanded search of the cache for
hits. The expanded search has a performance impact, which is not easily quantified because of variable
customer requirements. Customers that rely heavily on query caching and are experiencing misses might
want to test the trade-off between better query matching and overall performance for high user loads.
Example:USE ADVANCED HIT DETECTION = YES;
Reasons Why a Query is Not Added to the Cache:

• Non-cacheable SQL element. If a SQL request contains Current Timestamp, Current Time, Rand,
Populate, or a parameter marker then it is not added to the cache.

• Non-cacheable table. Physical tables in the Oracle BI Server repository can be marked ’non-
cacheable’. If a query references any non-cacheable table then the query results will not be added
to the cache.

• Cache hit. In general, if the query gets a cache hit on a previously cached query, then the results
of the current query are not added to the cache. The exception is query hits that are aggregate
roll-up hits.

• Result set is too big. Query is cancelled. This can happen by explicit cancellation from Oracle BI
Presentation Services or the Administration Tool, or implicitly through timeout.

• Oracle BI Server is clustered. Queries that fall into the cache seeding family are propagated
throughout the cluster. Other queries continue to be stored locally. Therefore, even though a query
may be put into the cache on Oracle BI Server node 1, it may not be on Oracle BI Server node 2.

MAX SUBEXPR SEARCH DEPTH


The parameter MAX SUBEXPR SEARCH DEPTH allows you to configure how deep the hit detector
looks for an inexact match in an expression of a query. The default is 5. At the default level (5), for
example, a query on the expression sin(cos(tan(abs(round(trunc(profit)))))) misses on Profit, which is at
level 7. Changing the search depth to 7 opens up Profit for a potential hit. Advice set it to 99.
The [CACHE] part from your NQConfig.ini file could now look like this:
#######################################
##############
90
#
# Query Result Cache Section
#
#######################################
##############
[ CACHE ]
ENABLE = YES;
DATA STORAGE PATHS = ”d:\OracleBI\cache” 1GB, f:\OracleBI\cache” 1GB ;
MAX ROWS PER CACHE ENTRY = 10000 ;
MAX CACHE ENTRY SIZE = 1 MB ;
MAX CACHE ENTRIES = 80000 ;
POPULATE AGGREGATE ROLLUP HITS = YES;
USE ADVANCED HIT DETECTION = YES;
MAX SUBEXPR SEARCH DEPTH = 99;
If your OBIEE server is in a clustered environment use the following parameters for the shared part:
GLOBAL CACHE STORAGE PATH
The physical location for storing cache entries shared across clustering. All clustering nodes share the
same location.
Example: GLOBAL CACHE STORAGE PATH = ”” SIZE;
MAX GLOBAL CACHE ENTRIES
The maximum number of cache entries stored in the location specified by
GLOBAL CACHE STORAGE PATH.
Example: MAX GLOBAL CACHE ENTRIES = 1000;
CACHE POLL SECONDS
The interval in seconds that each node pulls from the shared location specified in
GLOBAL CACHE STORAGE PATH.
Example: CACHE POLL SECONDS = 300;
CLUSTER AWARE CACHE LOGGING
Turns on logging for the cluster caching feature. Used only for troubleshooting. The default is NO.
Example: CLUSTER AWARE CACHE LOGGING = NO;
Till Next Time
This article is also published on: [2]http://knowledge.ciber.nl/weblog/
1. http://obieeblog.wordpress.com/2008/12/29/obiee-and-virtual-private-database-vpd/
2. http://knowledge.ciber.nl/weblog/

OBIEE Protect Filter (2008-07-28 20:58)

I had to make demo on protecting filters for a small class I gave.


Let’s start with a simple report against the SH repository:

[1] Put in a basic OR filter

[2] Have a look a the result:

[3] Make a basic prompt:


91
[4] Put it

all on a dashboard: Select the year

2000:

You will see that you loose the ”OR” function.

Now go back to your report on the first filter part check the Protect Filter option:

Save your report and go back to the dashboard. Select the year 1999 and press go.

You will see that the ”OR” part stays intact.

Now go back to your report on the second filter part check the Protect Filter option:

Save the report and go back to your dash-


board. Whatever year you select the result will not change.
92
Till Next Time
1. http://bp1.blogger.com/_qd3TDEvIh4Y/SI4XKQ78sxI/AAAAAAAAAYQ/xE9Bu7NhSDc/s1600-h/obiee_pf_001.JPG
2. http://bp1.blogger.com/_qd3TDEvIh4Y/SI4XKol_CQI/AAAAAAAAAYY/Zfv2ng-wllY/s1600-h/obiee_pf_002.JPG
3. http://bp3.blogger.com/_qd3TDEvIh4Y/SI4XK1RwXtI/AAAAAAAAAYg/sCrFnVnoa3g/s1600-h/obiee_pf_003.JPG
4. http://bp3.blogger.com/_qd3TDEvIh4Y/SI4XK19MmnI/AAAAAAAAAYo/MQTgAij_7ww/s1600-h/obiee_pf_004.JPG

OBIEE .Net using the webservice (2008-07-29 21:34)

Altough most of you will use the OBIEE webservice on a JAVA platform it’s perfectly usable on a .NET
platform. Step 1 is to make a reference in your project. Go to your Solution Explorer, right click and

press add Service Reference. Press the advanced button:

93
Press the add web reference button:
Add the URL enter [1]http://localhost:9704/analytics/saw.dll?WSDL (Change the port number if
needed). Later you can put the settings for

this reference in a config file. Press

94
GO Till Next Time

1. http://localhost:9704/analytics/saw.dll?WSDL

OBIEE SAWSessionService (2008-07-30 20:00)

The SAWSessionService is the core element of the webservice in OBIEE. This service is used to provide
authentication methods such as logon and logoff, and other sessionrelated methods.
First some public declarations:

LogOn:

LogOff

The VB. NET source can be found here:


95
[1]http://knowledge.ciber.nl/weblog/OBIEE/modSAWService001.txt
Till Next Time

1. http://knowledge.ciber.nl/weblog/OBIEE/modSAWService001.txt

OBIEE SAWSessionService Part 2 (2008-07-31 22:13)

Some more SAWSessionService methods in VB .Net


getCurUser:

[1] getSessionEnviroment:

[2]

[3]
The VB. NET source can be found here:
[4]http://knowledge.ciber.nl/weblog/OBIEE/modSAWService002.txt
Till Next Time

1. http://bp1.blogger.com/_qd3TDEvIh4Y/SJIdEH-5W8I/AAAAAAAAAaw/Wzn8gGo3vPo/s1600-h/obiee_net_VB_004.JPG
2. http://bp1.blogger.com/_qd3TDEvIh4Y/SJIdEcMkogI/AAAAAAAAAa4/1FKIY2XvNbY/s1600-h/obiee_net_VB_005.JPG
3. http://bp3.blogger.com/_qd3TDEvIh4Y/SJIdERjqEJI/AAAAAAAAAbA/n6Th0Ll4J5g/s1600-h/obiee_net_VB_006.JPG
4. http://knowledge.ciber.nl/weblog/OBIEE/modSAWService002.txt

96
2.8 August

OBIEE 10.3.4.0 is out (2008-08-07 09:52)

Yippie,
You can download the new version of OBIEE.
Update 1: Loads of new stuff, Finaly a DATE TIME aware graph!!!!!!!!!!!!!!!!!!
see: [1]http://download.oracle.com/docs/cd/E10415 01/doc/bi.1013/e10416.pdf
Till Next Time
1. http://download.oracle.com/docs/cd/E10415_01/doc/bi.1013/e10416.pdf

OBIEE Continues Date Time Line redux (2008-08-08 08:42)

Remeber this entry: [1]http://obiee101.blogspot.com/2008/03/obiee-continues-time-lin e.html ?


Well they fixed it in OBIEE 10.3.4.0. Yes OBIEE finanally has a date time aware grahtype. No more:

But real:

[2]
Thank you Oracle, this makes OBIEE live a whole lot better!
Okay the inteface is still very basic but you can influence a lot by tweaking the PCXML file for this
graph.
Till Next Time
This article is also published on: [3]http://knowledge.ciber.nl/weblog/
1. http://obiee101.blogspot.com/2008/03/obiee-continues-time-line.html
2. http://knowledge.ciber.nl/weblog/wp-content/uploads/2008/08/image1.png
3. http://knowledge.ciber.nl/weblog/

OBIEE Date Time Scatter graph (2008-08-08 09:07)

In OBIEE 10.3.4.0 Oracle gave us the date time graph. Of course we want more :-) Here is how you can
make a Date Time scatter graph by editing the PCXML.
WOW: Before you start doing any editing like this BACK UP BACK UP BACK UP. Because if it goes
wrong it can really F* #@ $”>F* #@ $ your system.
Step 1: Copy the linetime.cxml file to linetimescatter.cxml. This file can ussaly be found in ..\Ora-
cleBI\web\appackslashres\s oracle10\charts
97
Step 2: Copy the timeline.pcxml to timelinescatter.pcxml. This file can ussaly be found in ..\Ora-
cleBI\web\appackslashres\s oracle10\popbin
Step 3: In the custommessages folder for the language add the following to the custommessages.xml
file (create the

folder and file if they don’t exsist!)

Step 4: Edit the linetimescatter.cxml file


set displaynameref=”kmsgChartTimeSeriesScatter”
set sawc:engineSpecific file=”popbin/timelinescatter.pcxml”
Save and close the file

Step 5: Edit the timelinescatter.pcxml file

set Graph Name=”graph” Type=”Time” SubType=”Scatter”


Save and close the file

Step 6:
98
restart the Java-host and the prestationserver.

Till Next Time

OBIEE customising your PCXML (2008-08-08 17:09)

Altough NOT supported by Oracle you can do a lot of customizing of your PCXML files. These file
control the appearance of your Charts and craphs in OBIEE.
Some documentation can be found on your OBIEE server: ..\OracleBI\corda50\docs textbackslashgraph
reference\graph reference.pdf
Till Next Time

OBIEE Migrating Oracle BI Discoverer to OBIEE (2008-08-08 22:48)

OBIEE can convert your discoverer EEX files to OBIEE .RPD files. The manual for this
can be found on your OBIEE 10.3.4.0 server in ..\OracleBI\server\Docume nt\DiscovererMe-
tadataConversionAssistant.pdf. I did some prelimanary testing with and it seems to work just fine.
Till Next Time

OBIEE Bottom scale on the time line graph (2008-08-09 12:03)

By default the bottom scale on a timelin graph is set to automatic. The OBIEE interface doesn’t allow
you to influence it. Of course we found a workaround. You can do this by altering the PCXML file.
The scale is controlled by the tags in the ValueScale Position=’Bottom’ part. Try playing around with
ManualTicksMajor=’Quarter’ and ManualTicksMinor=’Month’ . Possible values are ’Year’, ’Quarter’,
’Month’, ’Week’, ’Day’, ’Hour’, ’Minute’.
Till next time
99
OBIEE making a clear button (2008-08-09 23:00)

Found this piece of javascript in the new 10.3.4.0 version Sales example:

It clears all the user prompts edits and sets them back to their defaults.
{div class=”XUIPromptEntry minibuttonOn” }
{ href=” #” onclick=”return PersonalizationEditor.removeDefaultSelection(false)” }Clear {/a } {/div
}
Till Next Time

OBIEE 10.3.4.0 First impressions (2008-08-10 23:14)

Played around with the new OBIEE 10.3.4.0 all weekend. Some great improvements!
Best of all the new date time lin graph is a hugh improvement.
The new example repository is much more ”real world” then the old paint one.
Big improvement on the Office plug in is the possibility to ”reprompt” the reporst without having to
rebuild the document.
The converter between discoverer and OBIEE is a hugh time saver.
All in All the made a big leap forward in this version. Keep up the good work!
Till Next Time

OBIEE Setting up usage tracking (2008-08-11 06:00)

OBIEE has a very good usage tracking system, with low resource costs. Here is how you set up the
Oracle variant.
100
Step 1: create a oracle schema:
CREATE USER obiee usage tracking IDENTIFIED BY ”OBIEE USAGE TRACKING”
DEFAULT TABLESPACE ”USERS”
TEMPORARY TABLESPACE ”TEMP”
PROFILE DEFAULT
QUOTA UNLIMITED ON ”USERS”;
GRANT ”CONNECT” TO obiee usage tracking;
GRANT ”RESOURCE” TO obiee usage tracking;
GRANT CREATE SESSION TO obiee usage tracking;
GRANT CREATE TABLE TO obiee usage tracking;
GRANT CREATE VIEW TO obiee usage tracking;
ALTER USER obiee usage tracking DEFAULT ROLE NONE;
Step 2: Create the tracking table.
the Tracking table Script can be found in: ... \OracleBI\server\Schema
Use SAACCT.Oracle.sql for Oracle and put it in the relevant OBIEE USAGE TRACKING schema.
Step 3: Make it available for the public
GRANT SELECT ON S NQ ACCT TO PUBLIC;
Step 4: Setting up the additional tables
You can find the scripts in ...\OBIEE\OracleBI\server \Sample\usagetracking\S QL Server Time
Run the following scripts;
Oracle create nQ Calendar.sql
Oracle create nQ Clock.sql
Oracle nQ Calendar.sql (Warning this only goes to 2016!)
Oracle nQ Clock.sql
Step 5: Make it available for the public
GRANT SELECT ON S ETL DAY TO PUBLIC;
GRANT SELECT ON S ETL TIME DAY TO PUBLIC;

Step 5b: Create an extra view

(They forgot this one in the documentation)


CREATE OR REPLACE VIEW nq login group AS SELECT DISTINCT user name AS login, user
name AS resp FROM s nq acct;
grant select on nq login group to public;
Step 6: Merge the usage tracking RPD into your master RPD.
Open your master RPD offline.
101
Save as ”master temp.rpd”
From the file menu select merge.

Select you original master.RPD

102
Select the modified repository from
...\Or-

acleBI\server\Sampl e\usagetracking\

Password is empty

103
Click MERGE If you get this one don’t worry about
it, just click ok

Save the merged RPD as your master.rpd

Step 7: Move the Usage Tracking to a native connection pool If you ommit this and use ODBC you can
get ”strange” errors.
Import 1 table from the OBIEE USAGE TRACKING schema.

104
[1]
Delete only the table and copy the connection pool

[2]
Drag and drop the table part from the imported Usage tracking rpd.

[3]
Rename the databasebase an connection pools

[4]
Check the connection pool data

Be sure to set both connection pools!


Step 8: Altering the NQSConfig.ini
The file can be found in: &\OracleBI\server\Config
Locate and Alter the following:

###################
# Usage Tracking Section
# Collect usage statistics on each logical query submitted to the
# server.
###################
[ USAGE TRACKING ]
ENABLE = YES;
105
DIRECT INSERT = YES;
PHYSICAL TABLE NAME = ”OBI Usage Tracking”.”Catalog”.”dbo”.”S NQ ACCT”;
CONNECTION POOL = ”OBI Usage Tracking”.”Usage Tracking Writer Connection Pool” ;
BUFFER SIZE = 10 MB ;
BUFFER TIME LIMIT SECONDS = 5 ;
NUM INSERT THREADS = 5 ;
MAX INSERTS PER TRANSACTION = 1 ;
Step 9:
Restart the BI server. Check the server log for errors.
Step 10: Import the Usage Tracking Presentation Catalog into the existing Presentation Catalog.
Extract the example catalog from the ZIP file found in ...\OracleBI\server\Sampl e\usagetracking\

Open one instance of the Oracle Business Intelligence Catalog Manager. Open the source Presentation
Catalog from where we can copy the Usage Tracking content.

Open this Presentation Catalog in offline Mode.


Once you have opened the presentation catalog, click on the shared folder. In this folder you can find the
folder Usage Tracking, which holds all related reports, filters and the dashboard page.

Open another instance of the Oracle Business Intelligence Catalog


106
Manager. Open the destination Presenta-
tion Catalog in online mode to which you want to copy the Usage Tracking content to. Open the shared
folder. As you can see in the example below, this presentation catalog doesn t have the Usage Tracking
folder yet.

Go back to the source Presentation Catalog for the Usage tracking. Click on the Usage Tracking folder
and click on Copy button in the upper left of the screen.

Go to the destination presentation catalog. Be sure the shared folder is opened. Right click in the folder
window and click on Paste. Close both catalog managers.
Note: Some people are worried that they don’t see the entry directly in the reports. This is because
OBIEE saves the usage tracking inserts them in a batch. The amount is influenced by the BUFFER
SIZE parameter. This specifies the amount of memory used to temporarily store insert statements. The
buffer allows the insert statements to be issued to the usage tracking table independently of the query
that produced the statistics to be inserted. When the buffer fills up, then subsequent queries statistics
are discarded until the insert threads service the buffer entries. When you stop the BI-server it will try
to issue an insert all remaining entries.
Till Next Time
This article is also published on: [5]http://knowledge.ciber.nl/weblog/
Murat did some great extra comments:
[6]http://muratdemirkiran.wordpress.com/2009/01/07/test/

1. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/5de4575a-ebb0-4d25-9987-1c8dc4201e1b/image[2].png
2. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/5de4575a-ebb0-4d25-9987-1c8dc4201e1b/image[5].png
3. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/5de4575a-ebb0-4d25-9987-1c8dc4201e1b/image[8].png

107
4. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/5de4575a-ebb0-4d25-9987-1c8dc4201e1b/image[11].png
5. http://knowledge.ciber.nl/weblog/
6. http://muratdemirkiran.wordpress.com/2009/01/07/test/

OBIEE 10.3.4.0 missing popchart service (2008-08-11 14:28)

On a clean install of OBIEE10.3.4.0 op windows 2003 somehow the popchart service doesn’t get installed

causing you to see no charts. [1] This


is easily solved by running two scripts:
installCOMEmbedder.bat (not required but handy)
installService.bat
both can be found in ..\OracleBI\corda50\bin

[2]
Now you have to start the service manualy or reset the whole server.

[3]
108
Till Next Time
1. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SKAwpRKwXjI/AAAAAAAAAe4/Jko2_K-7KR8/s1600-h/Pop001.JPG
2. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SKAwpsCOzgI/AAAAAAAAAfA/fiTO4Opup8A/s1600-h/Pop002.JPG
3. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SKAwpnomqKI/AAAAAAAAAfI/WjJZ29RSGBQ/s1600-h/Pop003.JPG

OBIEE Configuring Configuring the scheduler on Windows2003/Oracle


(2008-08-12 15:11)

As with many configurations on OBIEE, it’s in the documentation only distributed on many PDF’s.
Here is how install the OBIEE scheduler on Windows2003 and an Oracle DB.
Basically you have to go trough 5 steps:
1 Create the DB User and Tables.
2 Check the instanceconfig.xml
3 Add the Scheduler Administrator to the credential store
4 Configure the Job Manager
5 Run A test
1 CREATE THE DB USER AND TABLES.
The table scripts can be found in ..\OracleBI\server\Schema \SAJOBS.Oracle.sql, but you have create
the user yourself. Or you can use this script:
/******************************************************************* **********/
/* Setup OBIEE scheduler on ORACLE */
/* READ THE SCRIPT BEFORE YOU RUN IT !!!!!!!!!! */
/* Run the script as SYSTEM */
/******************************************************************* **********/
/***************************************************************** ************/
/* Create the S NQ SCHED user */
/* You can change the password NOT the user name */
/******************************************************************* **********/
DROP USER S NQ SCHED;
CREATE USER S NQ SCHED IDENTIFIED BY ”S NQ SCHED PASSWORD”
DEFAULT TABLESPACE ”USERS”
TEMPORARY TABLESPACE ”TEMP”
PROFILE DEFAULT
QUOTA UNLIMITED ON ”USERS”;
GRANT ”CONNECT” TO S NQ SCHED;
GRANT ”RESOURCE” TO S NQ SCHED;
GRANT CREATE SESSION TO S NQ SCHED;
GRANT CREATE TABLE TO S NQ SCHED;
GRANT CREATE VIEW TO S NQ SCHED;
ALTER USER S NQ SCHED DEFAULT ROLE NONE;
2 Check the instanceconfig.xml
In ..\OracleBIData\web\confi g you will find the instanceConfig.xml

Check if the entry between Alerts Tags has a ScheduleServer entry. If you run it on an other port then
109
9705 add it in the form ServerName:PortNumber (MyServer:1234).
3 Add the Scheduler Administrator to the credential store
Open a command line box:
cryptotools credstore -add -infile e:/OracleBIData/web/config/credentialstore.xml
Credential Alias: admin Username: SchedulerAdmin Password: SchedulerAdmin Do you want to encrypt
the password? y/n (y): Y Passphrase for encryption: secret Do you want to write the passphrase to the
xml? y/n (n): Y File ”OracleBIData HOME/web/config/credentialstore.xml” exists. Do you want to
overwrite it? y/n (y): Y

4 Configure the Job Manager

From the file menu select Configuration Options

On the Database tab enter the connection pool date. Always use the native call interface if possible!.
110
On the General tab enter the administrator name and credentials
Start the scheduler service

You can find the log in: ..\OracleBI\server\Logxtbackslash 5 Run A test


Create a simple report and press Save And Schedule
111
Click on the destinations tab an select Oracle BI Server

Cache Save the IBot.

Open a connection with the jobmanager:

112
Enter the login credentials
Press the refresh button and have a look at the entry:

This article was original written for the Ciber knowledge Blog:
[1]http://knowledge.ciber.nl/weblog/?p=124
Till Next Time

1. http://knowledge.ciber.nl/weblog/?p=124

OBIEE Difference between two rows (2008-08-12 16:00)

Found this one on the OTN Forum:

[1]http://forums.oracle.com/forums/thread.jspa?threadID=692479 &tstart=30

113
Handy when your database doesn’t have a Lag or Lead function
Till Next Time
1. http://forums.oracle.com/forums/thread.jspa?threadID=692479&tstart=30

OBIEE Children of the level / Converting rows to strings (2008-08-13 09:36)

1 Preface
Consider the following table:

But what you really want is this:

Or even better sorted alphabetically

This document describes how you can achieve this in OBIEE against an Oracle DB
2 Stragg function
This solution is based on Tom Kite s original String Aggregation function found here:
[1]http://www.sqlsnippets.com/en/topic-11591.html
To implement this function in OBIEE your first have to bring the function to the database. Either in
the data-schema or in your custom OBIEE function schema. If you do the later be sure that the OBIEE
function schema has direct select rights granted on the data-schema tables and views. Grant an execute
114
on the STRAGG function to public. It s also very handy to create a public SYNONYM for the STRAGG
function. (CREATE PUBLIC SYNONYM STRAGG FOR SCHEMA NAME.STRAGG;)
2.1 The STRAGG scripts
2.1.1 The STRAGG object

create or replace type stragg type as object


(
string varchar2(4000),
static function ODCIAggregateInitialize
( sctx in out stragg type )
return number ,
member function ODCIAggregateIterate
( self in
out stragg type ,
value in varchar2
) return number ,
member
function ODCIAggregateTerminate
( self in stragg type,
returnvalue out
varchar2,
flags in number
) return number ,
member function
ODCIAggregateMerge
( self in out stragg type,
ctx2 in stragg type
)
return number
);
/

2.1.2 The STRAGG type body

create or replace type body stragg type


is
static
function ODCIAggregateInitialize
( sctx in out stragg type )
return
number
is
begin
sctx := stragg type( null ) ;
return
ODCIConst.Success ;
end;
member function ODCIAggregateIterate
( self in out stragg type ,
value in varchar2
) return number
is
115
begin
self.string := self.string ’,’ value ;
return
ODCIConst.Success;
end;
member function ODCIAggregateTerminate
( self in stragg type ,
returnvalue out varchar2 ,
flags in number
) return number
is
begin
returnValue := ltrim( self.string,
’,’ );
return ODCIConst.Success;
end;
member function
ODCIAggregateMerge
( self in out stragg type ,
ctx2 in stragg type
)
return number
is
begin
self.string := self.string
ctx2.string;
return ODCIConst.Success;
end;
end;
/

2.1.3 The STRAGG function

create or replace function stragg


( input varchar2 )
return varchar2
deterministic
parallel enable
aggregate using stragg type
;
/

3 OBIEE Usage
These function work both from the repository as directly from the reports.

3.1 Unsorted
116
EVALUATE AGGR( ’STRAGG( %1)’ as varchar(200), EMP.ENAME)
3.2 Sorted

EVALUATE( ’STRAGG( %1) OVER ( PARTITION BY ( %2) ORDER BY ( %1) ASC RANGE
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) ’ as varchar(200),
EMP.ENAME,DEPT.DEPTNO)

117
3.3 Distinct
EVALUATE AGGR( ’STRAGG( DISTINCT %1)’ as varchar(200), EMP.ENAME)
Till Next Time
This article was original written for the Ciber knowledge Blog:
[2]http://knowledge.ciber.nl/weblog/?p=125

1. http://www.sqlsnippets.com/en/topic-11591.html
2. http://knowledge.ciber.nl/weblog/?p=125

OBIEE error saving security account (2008-08-13 15:14)

My colleague Rene Kuipers encountered this error while trying to copy reports using the catalog manager
over a network share.

This was caused by the fact that the cat-


alog manager didn’t have full control over the catalog folder (read,write,create and delete).
118
Till Next Time

OBIEE Configuration Tags (2008-08-14 21:14)

Hi,
I did an extraction of the ”sercret” file with all the OBIEE configration tags:
[1]OBIEE10340CONFIGURATIONTAGS.pdf
You can find the file at ..\OracleBI\systemsmanagementashresources\
DON’T EDIT THIS FILE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Till Next Time

1. http://knowledge.ciber.nl/weblog/OBIEE/OBIEE10340CONFIGURATIONTAGS.pdf

OBIEE Where is the ODBC Data Source Administrator? (2008-08-14 21:30)

Stumbled today over an OBIEE sandbox machine without an ODBC Data Source Administrator config-
ured:
119
[1]
We had to dig deep in our collective brain where to find it: ..\windows\system32\odbca d32.exe

[2] In the registry you have give to have


full control over the HKEY LOCAL MACHINE\SOFTWARE\ODBC

[3]
Till Next Time

1. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SKSIJJ6ShbI/AAAAAAAAAiI/7wYGIlTeO0s/s1600-h/ODBC001.JPG
2. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SKSIJUaWYZI/AAAAAAAAAiQ/ycVRxTG3fWM/s1600-h/ODBC002.JPG
3. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SKSIJfeSVjI/AAAAAAAAAiY/d5Er-elj7eg/s1600-h/ODBC003.JPG

120
OBIEE Stragg function on 10G.. (2008-08-16 23:35)

Up to 9i you had to use Tom Kyte’s Stragg function to get the children of the level to a single string.
From 10GR1 you can use the collect function.
I wrote an entry on my ORACLE101 blog ([1]http://oracle101.blogspot.com/2008/08/oracle-collect-
funct ion.html) which can be used in the same way you use the STRAGG function in OBIEE (see:
[2]http://obiee101.blogspot.com/2008/08/obiee-children-of-level- converting-rows.html) Till next time
1. http://oracle101.blogspot.com/2008/08/oracle-collect-function.html
2. http://obiee101.blogspot.com/2008/08/obiee-children-of-level-converting-rows.html

OBIEE Hidding dashboard sections (2008-08-17 16:24)

When you make a dashboard you don’t want to show the same reports to each (group of) user (s). To
accomplish this there are two strategies: Create a unique dashboard for each group, which can be very
labor and maintenance intensive.
Or you can make parts of the dashboard visible based on the group the user belong to.

First we have to make a report that will return at least a row if a user belongs to a specific group and
no rows if the user isn’t a member.

The valueof(NQ SESSION.GROUP) returns a string with all the groups the user belongs to. Using the
the POSITION function we can determine if a certain group is in the string:

POSITION(’Administrators’ in valueof (NQ SESSION.GROUP) )

If the value is greater then 0 then it’s in the string.

Now we add this formula to the filter:

121
Next goto the guided navigation dashboard section you want to toggle:

Select Reference Source Request, the selection report and how it should react.

The section is now only visible if a user


is a member of the Administrators group.

Till Next Time

This article was original written for the Ciber Knowledge Blog:

[1]http://knowledge.ciber.nl/weblog/?p=126

1. http://knowledge.ciber.nl/weblog/?p=126

OBIEE Identifying the server. (2008-08-18 21:02)

If you are working in a ”Development Street” like environment, (separate Development, Testing, Accep-
tance and Production machines) , most of the time the data on these machines will not be the same.
In most organizations the refresh rate for the production system is higher then on the other systems.
On most development and test system you usually only have a subset of the production data. Problems
can arise when during the development process you create hard copies of your reports (paper/pdf etc).
These tend to start roaming trough the organization, and when they accidently land on a managers desk
he/she might misinterpret the data.
Solution 1 would be to hardcode the source name on the report or in a repository variable. But&
report and repositories are transported back and forth between the different Development Street parts,
so there is no SOx compliant guarantee that the report is correctly identified.
Solution 2 is to dynamically put the server name and IP-address on the report. Problem is that OBIEE
doesn t have build in variables holding these values.
As long as your repository connects to at least one Oracle database, then you can use this method, using
the Oracle sys context function
In your repository make two new initiation blocks called:
INIT ENV TERMINAL
122
INIT ENV IP ADDRESS

For the data source use:


SELECT sys context(’USERENV’, ’TERMINAL’) FROM dual

123
And
SELECT sys context(’USERENV’, ’IP ADDRESS’) FROM dual

Put the data in repository variables named TERMINAL and IP ADRESS.


In your reports you can call these variables using:
VALUEOF(TERMINAL) and VALUEOF(IP ADDRESS)

Till Next Time


This article was original written for the Ciber Knowledge Blog:
[1]http://knowledge.ciber.nl/weblog/?p=127
1. http://knowledge.ciber.nl/weblog/?p=127

OBIEE Back One Page (2008-08-20 20:12)

Found an intresting one on the OTN forum today:


[1]http://forums.oracle.com/forums/thread.jspa?threadID=683746 &tstart=0
You can make your own ”Go Back One Page” button by adding a textpart to your dashboard section:
124
{input type=”button” value=”Go Back One Page” onclick=”history.back();” }
For a clear button have look here:
[2]http://obiee101.blogspot.com/2008/08/obiee-making-clear-butto n.html
Till Next Time
1. http://forums.oracle.com/forums/thread.jspa?threadID=683746&tstart=0
2. http://obiee101.blogspot.com/2008/08/obiee-making-clear-button.html

OBIEE Conditional Hyperlink (2008-08-21 16:35)

A customer wanted a conditional hyperlink.


If the turnover was greater then 100000 it should show a hyperlink else only the number

Here is how we did it:

125
[1] CASE WHEN (”F1 Revenue”.”1-01
Revenue (Sum All)”> 100000 )THEN ’ {a href=http://www.google.com }’CAST(”F1 Revenue”.”1-01
Revenue (Sum All)” as VARCHAR(10)) ’ {/a }’ else CAST( ”F1 Revenue”.”1-01 Revenue (Sum All)” as
VARCHAR(10) )END

Don’t forget to set the column data type settings: [2]

Till Next Time

1. http:
//1.bp.blogspot.com/_qd3TDEvIh4Y/SK13pdt8DhI/AAAAAAAAAnU/iIU9qWPzNLc/s1600-h/ConditionalHyperlink002.bmp
2. http:
//1.bp.blogspot.com/_qd3TDEvIh4Y/SK14HoqrTBI/AAAAAAAAAnc/Wvsp4edA3a8/s1600-h/ConditionalHyperlink003.bmp

OBIEE Change the password (2008-08-21 23:23)

Found this one on the blog of Jose Troya ([1]http://oracleintelligence.blogspot.com/2008/08/obiee-enabl


e-users-to-change-passwords.html) It’s in Spanish so I translated it into English.
126
If you don’t a security model like LDAP in place, all the users and there passwords are stored in the
repository. Wenn you want your users to be able to change there own password from there browers here
is how you do it:
Step 1: Create a new entry in your customMessage.xml:

Be sure it’s in your customMessage folder. You can cut and paste this message from the controlmes-
sages.xml file found in the ..\OracleBI\web\msgdbtbackslashmessages.
Restart the Oracle BI Server, Web server, and WWW services in that order.

Till Next Time


1. http://oracleintelligence.blogspot.com/2008/08/obiee-enable-users-to-change-passwords.html

OBIEE scripting user into the repository (2008-08-22 18:18)

On the OTN forum today there was a question about how to script a new user into the repository:
[1]http://forums.oracle.com/forums/thread.jspa?threadID=697646 &tstart=0
127
The only way I know is using the nQUDMLExec.exe First create a txt file with your new users:

DECLARE USER ”NewUser” AS ”NewUser” UPGRADE ID 1 FULL NAME {New User


} PASSWORD
’D7EDED84BC624A917F5B462A4DCA05CDCE256EEEEEDC97D54A286E822D97C35C
7AD5C43AD4F2A09EAC4D07C3A079829F’
PERIODICITY 90 HAS ROLES ( ”Administrators”, ”XMLP ADMIN” ) DESCRIPTION
{password = welcome1 } PRIVILEGES ( READ);

The password can only be entered encrypted, this string is for ”welcome1”.

Next you have to ”merge” the txt file into the reopsitory:

E:\OracleBI\server\Bin>nQ
UDMLExec.exe -U Administrator -P Administrator -I E:\temp\NewUser.txt -B E:\temp\paint.rpd -
O e:\temp\newrep.rpd

[2]
Check the new repository! Till next Time
1. http://forums.oracle.com/forums/thread.jspa?threadID=697646&tstart=0
2. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SK7Arb6gu9I/AAAAAAAAApA/x2vAlHJEQRk/s1600-h/ScriptUser003.JPG

128
OBIEE Conditional X-axis graph (2008-08-27 17:19)

One of our customer had a unique request. If the selected period becomes longer then a predifinend
period, the x-axis should switch from item 1 to item 2 without user intervention! Here is how we did it:
First create the conditonal x-axis: (Sales sample)

CASE WHEN (TIMESTAMPDIFF(SQL TSI DAY, MIN(”D0 Time”.”T00 Calendar


Date”), MAX(”D0 Time”.”T00 Calendar Date”)) > 20 ) THEN ”D1 Customer”.”C2 Cust
Status” ELSE ”D2 Market”.”M02 Area” END

Next alter the Y value so that it will


follow the X - axis:

sum(”F1 Revenue”.”1-01 Revenue (Sum All)” by CASE WHEN


(TIMESTAMPDIFF(SQL TSI DAY, MIN(”D0 Time”.”T00 Calendar Date”), MAX(”D0
Time”.”T00 Calendar Date”)) > 20 ) THEN ”D1 Customer”.”C2 Cust Status”
ELSE ”D2 Market”.”M02 Area” END )

Add everthing to a dashboard:


15 days:
129
25 days:

Till Next Time

OBIEE Forcing OC4J BI shutdown (2008-08-28 04:30)

Somtimes your OC4J is really stuck, and if you to give a shutdown without resestting your server try:
” {JDK HOME here }\bin\java.exe” -jar {ORACLE BI home here }\oc4j bi\j2ee\home\admin.jar
ormi://localhost:23791 {OC4JADMIN password here } -shutdown force
Till Next Time

2.9 September

Setting up a mailserver in a VMware (2008-09-01 21:23)

Not only valid for OBIEE: For demo purposes you sometimes need to setup a mailserver within an
VMware session. Here is how you do it with ArGoSoft mail server. ( [1]http://www.argosoft.com/)
Step 1: Download and do a NNF install of the ArGoSoft mail server.
Step 2: Goto Tools > Options [2]
130
On the local domains tab [3]add the name of your VMware server. Leave the rest to default.
Step 3: Goto Tools > Users and add one or more users:

[4]
Step 4: Set up an Outlook Express account:

131
[5]

On the General tab:


[6]
On the servers tab:

132
[7]
Step 5: Create a test mail to check it:

[8]
Till Next Time This article was original written for the Ciber Knowledge Blog:
[9]http://knowledge.ciber.nl/weblog/?p=128
1. http://www.argosoft.com/
2. http://knowledge.ciber.nl/weblog/wp-content/uploads/2008/09/image.png
3. http://knowledge.ciber.nl/weblog/wp-content/uploads/2008/09/image1.png
4. http://knowledge.ciber.nl/weblog/wp-content/uploads/2008/09/image2.png
5. http://knowledge.ciber.nl/weblog/wp-content/uploads/2008/09/image3.png
6. http://knowledge.ciber.nl/weblog/wp-content/uploads/2008/09/image4.png
7. http://knowledge.ciber.nl/weblog/wp-content/uploads/2008/09/image5.png
8. http://knowledge.ciber.nl/weblog/wp-content/uploads/2008/09/image6.png
9. http://knowledge.ciber.nl/weblog/?p=128

OBIEE OpenOffice (2008-09-01 22:06)

OpenOffice is getting more and more popular, especially with (non)-governmental organizations for the
simple fact that there are no license fees.
133
Oracle has told that OpenOffice isn t on the current roadmap / support list of OBIEE.

When using OpenOffice 0ne of the problems is that the default download to EXCEL is mime based
which isn t regonised by the

OpenOffice Calc import engine. Im


not sure if this is an OBIEE or an OpenOffice issue. But here is a workaround. (Actually is just
downloading it in the Excel2000 format). In the customMessage folder of your language make a new
viewmessages.xml with entries for kmsgEVCDownloadExcel2000Tip and kmsgEVCLinkDownloadEx-

cel2000 Now try the Link:

134
Till Next Time

OBIEE TimeLine graph Line settings (2008-09-03 20:23)

In 10.3.4.0 Oracle introduced finally the DTA or Time Line graph. In there haste to release it the forgot
the chart properties editor. This means we have to edit the PCXML files ourselfs, to get dotted lines,
other colors or the plus symbol.
In the timeline.pcxml file look for the SeriesDefinition tag:
Within this tag you can set the following properties:
LineColor=’ #ff0033’
{the color of the line; possible colors all web RGB colors }
SymbolColor=’ #3366ff’
{the color of the Symbol; possible colors all web RGB colors }
FillColor=’ #66ff99’
{the color of the FillColor; possible colors all web RGB colors }
LineWidth=’1.0’
{the width of the line in pixels; possible values ’Off’,’1.0’,’2.0’,’3.0’,’4.0’,’5.0’,’6.’0’ }
LineStyle=’Dashed’
{the style of the line; possible values ’Plain’,’Dashed’, ’Dotted’, ’DashDot’ }
SymbolType=’Circle’
{the symbol at the datapoint; possible values ’Off’, ’Dot’, ’SmallSquare’, ’Square’,’SquareOutline’, ’Cir-
cle’, ’CircleOutline’, ’Triangle’, ’TriangleOutline’, ’Plus’, ’PlusOutline’, ’Diamond’, ’DiamondOutline’ }
ShowArea=’True’
{show the area below the line; possible values ’True’, ’False’ }
Till next time

OBIEE Setting up an Compagny custom ”Skin” and ”Style” (2008-09-08 21:30)

OBIEE uses Styles and Skins to generate the graphical representation.


These can be found in the ..\OracleBI\web\appackslashres\ directory. On a default install the content
of sk oracle10 and s oracle10 is used. A lot of people edit directly in these two directories running a
huge risk to loose everthing when an update of OBIEE is installed! It’s much safer to make your own
”Skin” and ”Style” directories.
To make a custom Skin and Style :
1. Make a copy of the sk Oracle10 and rename it sk MyCompagny (Capital sensitive) both in ..\Ora-
cleBI\web\appackslashres\ directory and ..\OracleBI\oc4j bi\j2ee\home\applicatio ns\analytics\anal-
ytics\ res
2. Make a copy of the s Oracle10 and rename it s MyCompagny (Capital senstive) both in ..\Ora-
cleBI\web\appackslashres\ directory and ..\OracleBI\oc4j bi\j2ee\home\applicatio ns\analytics\anal-
ytics\ res
In the instanceconfig.xml file (&\OracleBIDate\web\con fig\) add between the {ServerInstance } tags:
{DefaultStyle }MyCompagny {/DefaultStyle } (Case Sensitive)
{DefaultSkin }MyCompagny {/DefaultSkin } (Case Sensitive)
Copy any pictures you want to use to the directories in both the Web and OC4J BI skin and style
location.
Restart the presentation server, javahost and OC4J BI (in that order). Or even better restart the whole
server.
Since OBIEE and OCJ4 BI sometimes have dominance over each other (not always in the same order).
It is good practice to keep the file in both directories the same.
A good tutorial on .CSS can be found here:
[1]http://www.w3schools.com/Css/default.asp
Till Next Time
135
This article was original written for the Ciber Knowledge Blog:
[2]http://knowledge.ciber.nl/weblog/?p=129
1. http://www.w3schools.com/Css/default.asp
2. http://knowledge.ciber.nl/weblog/?p=129

OBIEE setting the bottomscale in a DTA Graph (2008-09-09 22:00)

1 Problem Description
1.1 General
With the introduction of OBIEE 10.3.4.0 the DTA (Date Time Aware) graph became available. In there
haste to release this version Oracle has omitted a usable properties editor. All properties have to be set
manually.
2 Properties of the DTA graph
2.1 Preface
All manual setting are done in the timeline.pcxml file. This file can be found in the s {StyleName
}\popbin directory. Make sure to synchronize this file with the one found in the OC4J BI s {StyleName
}\popbin directory. After editing you have to restart the presentation server, the javahost and the
webserver.
2.2 Month Names
<MonthNames>Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec</MonthNa mes>
By default the month names are presented in English. If you want for instance Dutch presentation put
the following between the <Graph> tags:
<MonthNames>Jan,Feb,Mrt,Apr,Mei,Jun,Jul,Aug,Sep,Okt,Nov,Dec</MonthNa mes>
2.3 DayNames
<DayNames>Sun,Mon,Tue,Wed,Thu,Fri,Sat</DayNames>
By default the day names are presented in English. If you want for instance Dutch presentation put the
following between the <Graph> tags:
<DayNames>Zon,Maa,Din,Woe,Don,Vrij,Zat</DayNames>
2.4 First Day Of Week
<FirstDayOfWeek>Sunday</FirstDayOfWeek>
By default the first day of the week is Sunday. If you want the week to start Monday put the following
between the <Graph> tags:
<FirstDayOfWeek>Monday</FirstDayOfWeek>
2.5 Date Major Ticks
<DateMajorTicks Year= %Y Quarter= Q %Q %y Month= %b- %y Day= %a Hour= %I %p
Minute= %I: %M %p />
There are 6 major ticks: Year, Quarter, Month, Day, Hour and Minute
2.6 Date Minor Ticks
<DateMinorTicks Quarter= Q %Q Month= %b Day= %d Hour= %I %p Minute= %M />
There are 5 minor ticks Quarter, Month, Day, Hour and Minute.
2.6.1 Cheat sheet
Type;Setting
4 digit year; %Y
136
2 digit year; %y
Quarter number; %Q
Month Name; %b
Month Number; %m
Month Name except replace January with 4 digit year; %F
Month Name except replace January with 2 digit year; %f
Date (1-31); %d
Day Name; %a
Hour(1-24); %H
Hour(1-12); %I
Minutes; %M
Seconds; %S
am/pm; %p

2.7 Manual Ticks Major and Manual Ticks Minor


To tell which TickMarker should be used add to the <ValueScale Position= Bottom tag: ManualTicks-
Major= Month ManualTicksMinor= Week (!No ; between ManualTicksMajor and ManualTicksMi-
nor!)
If you don t want a Minor Tag make them both the same: ManualTicksMajor= Month ManualTicksMi-
nor= Month .
2.8 Rotate labels
To rotate the labels add to the <ValueScale Position= Bottom tag:
RotateLabels= 30 where 30 is the angle in degrees.
Till Next Time
This article was original written for the Ciber Knowledge Blog:
[1]http://knowledge.ciber.nl/weblog/?p=130
1. http://knowledge.ciber.nl/weblog/?p=130

OBIEE PDF controls (.fst files) (2008-09-10 11:45)

One of the heritages of previous Siebel releases are the pdfstyle.fst and the pivot.fst files. These files
control partly the your PDF output looks and can be found in ...\s {skin name }\b mozilla 4 .
Most of the time the settings are controlled by your .CSS files or the settings you make in your report.
Some setting are still controlled by pdfstyle.fst and the pivot.fst (Like Title and Tapedeck).
It looks like Oracle is trying to transfer these controls to the .CSS files, they already did it with the pivot
table and the regular. Still it s handy to know where to hack if you have some strange PDF behavior.
Till Next Time

OBIEE Null, Nul and Nullable (2008-09-10 17:43)

Consider the following table:

[1]
After adding it to the repository make a simple report:
137
[2] Hmmmmm, something is not right here..

I was expecting a ”NULL” and a ”0”....

Go back to you the physical layer of your repository and check the Nullable box.

[3]
Now it’s right:

[4] OBIEE converts a ”NULL” in double type field to ”0” if this box isn’t checked.

Till Next Time

1. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SMfr0aaKpsI/AAAAAAAAArw/APv0mzENLtY/s1600-h/NullNul001.JPG
2. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SMfr0mCvZlI/AAAAAAAAAr4/9X2DPMnV_R0/s1600-h/NullNul002.JPG
3. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SMfr1JOh8_I/AAAAAAAAAsA/sg_2Y2tu8-I/s1600-h/NullNul003.JPG
4. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SMfr1BUeLZI/AAAAAAAAAsI/vvgk3HbdSg0/s1600-h/NullNul004.JPG

OBIEE collapse the whole dashboard with one button (2008-09-10 21:01)

I answered this one : [1]http://forums.oracle.com/forums/thread.j spa?threadID=704696 &tstart=0 on


OTN today and decided to document it a bit beter.

First I made a ”Toggle Dashboard” button jpg and put in my s {SkinName


}\portal directory (Note 1: don’t forget to put in the OC4J BI skin directory) (Note 2: when referecing
this JPG, be aware that the naming is CaSeSeNsItIvE!)(Note 3: you might have to restart OC4J to let see
138
it....) Next I made a simple dashboard:
section1 with a textblock, sections 2 & 3 with the reports.
After running the dashboard I used ”view source” to get the section id of section 2 & 3. Look for
”saw.dashboard.onToggleSection”

In the text1 add the following script:

{td class=”MinMaxCell” onclick=”saw.dashboard.onToggleSection(’d:dashboard p:isca1c9kk


1hb8ubn s:l8052b1hagt86ms6’,
event);
saw.dashboard.onToggleSection (’d:dashboard p:isca1c9kk1hb8ubn s:7rfmm0f1qd4gmllh’,
event);
return false;” align=”center” } {img id=””
src=”res/s MyCompagny/portal/ToggleDashboard.JPG” title=”Toggle Dashboard”/ } {img
id=”” src=”res/s MyCompagny/portal/ToggleDashboard.JPG” style=”display:none”
title=”Toggle Dashboard”/ } {/td } {/tr } {tr }

Replace { and }.
Till Next Time
1. http://forums.oracle.com/forums/thread.jspa?threadID=704696&tstart=0

OBIEE setting default Graph series colors. (2008-09-12 20:13)

If you want to set the default color for your graph, goto &\OracleBI\web\appckslashres\s {StyleName
}\chartsupport
Open the palette.cxml file and edit the sawc:color value=. The color is represented by a web Hex color.
Save the file.
Copy the file to &\OracleBI\oc4j bi\j2ee\home\applicatio ns\analytics\analytics\ res\s {StyleName
}\chartsupport.
If you want to make a custom setting for just one graph type, make a copy of this
file and rename it to paletteGraph.cxml. in the GraphType.cxml point the xi:include
href=”fmap://chartSupport/palette.cxml” parse=”xml” to the new file.
Till Next Time
139
OBIEE Custom CSS Style / Class (2008-09-13 10:31)

For a long time I wondered how this part of the columnsettings works:

If you look in the OBIEE documentation you


will find very little:

What they meant to say is something like this:


In the first part ”Use Custom CSS Style” you can directly add CSS code like ”white-space:nowrap;”. For
more info on CSS see [1]http://www.w3schools.com/Css/default.asp.
The second part is more intressting. In your s [StyleName]\b mozilla 4 you will find a file called
”custom.css”. In this file you can add your own css classes:

.MyCell { background-color: #00ff00; font-style:italic; font-weight: bold; }

See that you synchronise the file with the one in: ..\OracleBI\oc4j bi\j2ee\home\applicatio
ns\analytics\analytics\ res\s [StyleName]\b mozilla 4
In the colomn properties point to your Custom Class:

[2] Note1: Somehow the font-size of the


cell is dominant over the one in the personal class....
140
Note2: Disable your browser cache when developing with this....(some changes might take a while to be
visible.)
Note3: Altough the option is availble in the conditional format screen it doesn’t seem to work there....

Till Next Time

1. http://www.w3schools.com/Css/default.asp
2. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SMt_7Vd1m8I/AAAAAAAAAtA/3Ctv1svA_-Y/s1600-h/CustomCSS003.JPG

OBIEE Title View (2008-09-13 12:02)

In one of my earlier enrties: [1]http://obiee101.blogspot.com/search/label/NARRATIVE %20VIEW I


told that you are restricted in the in the usage of variables of in Title views.
On searching the net I found this document: [2]http://blogs.oracle.com/siebelessentials/oracle %20bi
%20ee %20variables %20overview.pdf which triggered me to revisit the subject.
It seems that using the biServer.variables prefix gives you a far more control, allowing you to use all your
repository and sessions variables.
@ {biServer.variables[’NQ SESSION.USER’] }
@ {biServer.variables[’BI EE HOME’] },
Till Next Time

1. http://obiee101.blogspot.com/search/label/NARRATIVE%20VIEW
2. http://blogs.oracle.com/siebelessentials/oracle%20bi%20ee%20variables%20overview.pdf

OBIEE Setting a picture as graph backgound (2008-09-17 17:03)

One of our customers wanted a custom background for there graphs, some what in this style :-) :[1]
[2]
141
So that the would end up with a graph

looking like this:[3] Step 1: from the


corda archives download version 5.1.2:[4]http://www.corda.com/corda-update-archive.php There is a
fourteen day free license key, after that you will have to buy the product.
Step 2: With the popchart builder create a new graph using the wizard, any graph will do. [5]Press

the add image button: In the PCXML file locate the {ChartBitmap part:[6]

Copy and paste into the PCXML file of your OBIEE graph. between the {project } tags.
Add the following reference to make the graph visible:
142
Playaround with zindex, if the image isn’t fully on the background.

Till Next Time <image name=”’bitmap1’” top=”’0’” left=”’0’” width=”’544’” height=”’336’” an-
chor=”’TopLeft’” visible=”’True’” zindex=”’3’” imagename=”’img bitmap1’”><properties keeppropor-
tions=”’False’/”></image>

1. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SNCr5METx4I/AAAAAAAAAtg/66ztZN9Hf1Y/s1600-h/sunset_wallpaper_
brazil-1600x1200.jpg
2. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SNCr5METx4I/AAAAAAAAAtg/66ztZN9Hf1Y/s1600-h/sunset_wallpaper_
brazil-1600x1200.jpg
3. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SNCylvOwS7I/AAAAAAAAAto/ccV-HIWmhUw/s1600-h/GraphBackGround002.
JPG
4. http://www.corda.com/corda-update-archive.php
5. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SNC1O_Q29RI/AAAAAAAAAtw/S69vPmbUhh0/s1600-h/GraphBackGround003.
JPG
6. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SNC5nn53HQI/AAAAAAAAAt4/bW15xkRWiso/s1600-h/GraphBackGround004.
JPG

OBIEE CHOOSE statement (2008-09-19 17:30)

Let’s assumme that one group is allowed to see the content of a column and a other group isn’t. If
you simple only try todo use ”permissions” the whole report will crash for the group which can’t see the
column.

[1] You can workaround this crash with


the ”CHOOSE” statement. From the Oracle documentation:

[2]
First let’s make a ”No Access” column:
143
[3]
Drag the column somewhere in you presenmtation layer, be sure that the persmission is set to everyone.
In your report edit the column which this group isn’t allowed to see:

[4]

Now run the report again for the ”No Access” group : [5]
Till Next Time

1. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SNNJhkdi1VI/AAAAAAAAAuA/qgXqa9hf2fc/s1600-h/choose001.JPG
2. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SNNMDRsNlwI/AAAAAAAAAug/v-qO3ysddfw/s1600-h/choose005.JPG
3. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SNNKQodIrnI/AAAAAAAAAuI/2g04DUW9F-M/s1600-h/choose002.JPG
4. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SNNLGPWJtNI/AAAAAAAAAuQ/J_c-vh9oPKQ/s1600-h/choose003.JPG

144
5. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SNNLkIvb-DI/AAAAAAAAAuY/MQW5iTKnl9U/s1600-h/choose004.JPG

OBIEE Google chrome (2008-09-21 21:02)

Installed GOOGLE CHROME as browser tonight, seems to be missing a couple of plugins on the default

install:[1]
On a personal note: Google Chrome has a look and feel you need to get used to, but it’s very very fast!
Note 2:
Played around with it a little longer, had a couple of freezes using OBIEE, decided to uninstall it.......
Till Next Time

1. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SNaa0c9XO8I/AAAAAAAAAuo/Rng164qP89s/s1600-h/Crome001.JPG

OBIEE setting up customMessages folders (2008-09-23 18:47)

OBIEE allows you great flexibility in customizing the interaction with the end user, either in there native
language or special systeem messages.
A big risk with these customisation it that you loose them on a systeem upgrade or restore if you edit
them directly in the messagedatabase (MSGDB).
This is a XML style database found in ..:\OracleBI\web\msgdb. There are two kind off messages sys-
temmessages, found in ..\OracleBI\web\msgdbtbackslashmessage and language specific messages found
in ..\OracleBI\web\msgdbtbackslashl {LanguageCode }\messages.
If you want to customize these messages you have to make some extra folders.
For the systemessages a folder called ”customMessages” in the MSGDB root ( ..:\Ora-
cleBI\web\msgdbxtbackslashcustomMessages).
For the language specific messages you have to create a ”customMessages” in each language folder (..\Or-
acleBI\web\msgdb textbackslashl {LanguageCode }\cutomMessages). Copy the table you want to edit
to this folder, and with a good XML editor, make your alterations. After a reboot of the presentation
server the custommessages will be avialble.
Till Next Time
145
OBIEE Timestamp (2008-09-24 09:59)

One of those things you keep forgetting the format on TIMESTAMP:


TIMESTAMP ’YYYY-MM-DD HH24:MI:SS’
TIMESTAMP ’1990-01-10 13:35:43’
Till Next Time

OBIEE making a custom Log On and Log Off screen (2008-09-24 17:45)

One of the first things a customer see when using OBIEE is the log on screen. So it s important to make
this a customer personal as possible. Most information on the web for this personalization is based on
altering the bglogon.jpg.

[1]
Besides it possible being a copyright infringement, you run run the risk that you loose al your work on
the next system upgrade. The content and appearance of the Log On and Log off screen is based on a
couple of files which are highly customable. First of all make your own custom Style and Skin. (If you
can t remember how have a looke [2]here). In the ..\OracleBI\web\appackslashres\sk MyCompagny\b
mozilla 4 you will find logon.css which controls the look and feel. In the .LogonTable part you will find
a reffence to the background image, you can change this to your own personal image:
146
[3]
(WOW: if you are on OC4J BI be sure to keep all changes in sync with the files in ..\OracleBI\oc4j
bi\j2ee\home\applicatio ns\analytics\analytics\ res\sk MyCompagny\b mozilla 4)
The rest of the screen is diffeded into 6 parts:

[4]
HeadLine:

[5]
Appereance: logon.css => .Headline, content: ProductMessages.xml => kmsgProductGeneral {Info on
making your own customMessages can be found [6]here }.
InfoText:

[7]
Appereance: logon.css => .InfoText, content: system generated.
Subtitle:

[8]
147
Appereance: logon.css => .Subtitle, content: logonmessages.xml => kmsgAuthenticateRemembermyI-
Dandpassword
Logon Credentials

[9]
Appereance: logon.css => .PromptTable and .PromptCaption, content: logonmessages.xml => kms-
gAuthenticateUser, kmsgAuthenticatePassword, kmsgAuthenticateLogOn
Select a language

[10]
Appereance: logon.css => .SAWLogonInput, content: logonmessages.xml => kmsgSelectALanguage
(Note: the availble langauges are controlled by the instanceconfig.xml)
Copyright:

[11]
Appereace: logon.css => .Footer (font-size is overruled), content:productmessages.xml => kmsgPro-
ductGeneral, utilmessages.xml => kmsgNQuireLegalCopyright
Log Off Screen

[12]
Background: logon.css => .Logontable ”background-image”
HeadLine:

[13]
Subtitle

[14]
Appereance: logon.css => .Headline, content: ProductMessages.xml => kmsgProductGeneral
Appereance: lo-

148
gon.css => .Subtitle, content: logonmessages.xml => kmsgAuthenticateSSOThankYouHaveLoggedOff,
kmsgAuthenticateThankYouHaveLoggedOff, kmsgAuthenticateThankYouWereLoggedOffText
Till Next Time
This article was original written for the Ciber Knowledge Blog:
http://knowledge.ciber.nl/weblog/?p=132

1. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SNnUoe1nEZI/AAAAAAAAAvo/XEyG0ENisNs/s1600-h/OBIEE_CUSTOM_LOG_ON_
OFF_001.png
2. http://obiee101.blogspot.com/2008/09/obiee-setting-up-compagny-custom-skin.html
3. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SNnUoVX5FJI/AAAAAAAAAvw/JdL6u1CUlbc/s1600-h/OBIEE_CUSTOM_LOG_ON_
OFF_002.png
4. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SNnUoqICVqI/AAAAAAAAAv4/Q3ikgqpFTN0/s1600-h/OBIEE_CUSTOM_LOG_ON_
OFF_003.png
5. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SNnUo47Si6I/AAAAAAAAAwA/JSWeQVG00Jc/s1600-h/OBIEE_CUSTOM_LOG_ON_
OFF_004.png
6. http://obiee101.blogspot.com/2008/09/obiee-setting-up-custommessages-folders.html
7. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SNnUfo5i1lI/AAAAAAAAAvA/lhcU4YBQXow/s1600-h/OBIEE_CUSTOM_LOG_ON_
OFF_005.png
8. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SNnUfsZ_pEI/AAAAAAAAAvI/QbVOenCVPk0/s1600-h/OBIEE_CUSTOM_LOG_ON_
OFF_006.png
9. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SNnUf_QwNLI/AAAAAAAAAvQ/VA1xwnkFes8/s1600-h/OBIEE_CUSTOM_LOG_ON_
OFF_007.png
10. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SNnV3yxnz9I/AAAAAAAAAwI/wBkxUmPW6cY/s1600-h/OBIEE_CUSTOM_LOG_ON_
OFF_012.png
11. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SNnUfwjw-5I/AAAAAAAAAvY/fxyYzZ6NNb0/s1600-h/OBIEE_CUSTOM_LOG_ON_
OFF_008.png
12. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SNnUgK8RsiI/AAAAAAAAAvg/SAzOMliPnS4/s1600-h/OBIEE_CUSTOM_LOG_ON_
OFF_009.png
13. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SNnUODBtElI/AAAAAAAAAuw/gnkCaPt9JWQ/s1600-h/OBIEE_CUSTOM_LOG_ON_
OFF_010.png
14. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SNnUO869LQI/AAAAAAAAAu4/bwElaOGGFqo/s1600-h/OBIEE_CUSTOM_LOG_ON_
OFF_011.png

OBIEE Portal customization part 1 ”the portalbanner” (2008-09-28 19:28)

After customizing the log on log off screen ([1]http://obiee101.blogspot.com/2008/09/obiee-making-


custom-l og-on-and-log-off.html) it’s time to customise the portal:

Title:

Appearance: Browser {title } {/title }, content: ProductMessages.xml => kmsgProductPortal


149
Background:

Appearance: portalbanner.css => .Headline, content: background-image: url(bg banner.jpg);


PortalLinks:

Appearance: portalbanner.css => .PortalLinks, .PortalLink:link, .PortalLink:visited, .PortalLink:hover ,


content: Portalnames.

Portalname:

Appearance: portalbanner.css => .PortalName


Welcome text:

Appearance: portalbanner.css => .Wel-


comeTextCell, Content: uimessages.xml => kmsgUIWelcome
Dashboard actions:
150
[2]

Appereance: portalbanner.css => .DashBarIconCell, .DashBarAlertCell, .DashBarProductCell, .Dash-


BarActiveProductCell, .DashBarActionCell, Content: uimessages.xml => kmsgUIPortal, kmsgUIAn-
swers, kmsgUIProductsLink, kmsgUISettings, kmsgUILogoff
Till Next Time
This article was original written for the Ciber Knowledge Blog:
[3]http://knowledge.ciber.nl/weblog/?p=133
1. http://obiee101.blogspot.com/2008/09/obiee-making-custom-log-on-and-log-off.html
2. http://www.blogger.com/$image[36].png
3. http://knowledge.ciber.nl/weblog/?p=133

2.10 October

OBIEE the ”developersprompt” (2008-10-01 17:26)

When I’m developing a dashboard I often want to play around with some basic settings like cache
hit & seed and loglevel. Normally you have go back to answers or your administration panel to
change these settings (temporarily). I always advice my developers to make a ’developersprompt’......

It’s a simple LOV prompt which returns


me 3 presentation variables (dp cache {0,1 }, dp seed {0,1 } and dp log {0,1,2 }.

In the prefix of each report we default add:

(you can find the postfix block in the advanced tab of your report)

When developing your dashboard you can playaround with different settings to find the optimum. Leave
the prompt on the dashboard and make in only ’available’ for administrators or developers, so that in
time of ”trouble” your are quickly able to bypass the cache or turn on logging.
Till Next Time SET VARIABLE DISABLE CACHE HIT = @ {dp cache } {0 }, DISABLE CACHE
SEED = @ {dp seed } {0 }, LOGLEVEL = @ {dp log } {0 };

OBIEE Multiple Java Versions (2008-10-03 18:44)

Noticed today that OBIEE doesn’t really like having multiple Java versions assigned, when updating
from 3.3.x to 3.4.x be sure to point to the orignal JDK. You can find the original loaction in the instance-
151
config.xml between the JavaHome tags.
Till Next Time

OBIEE ReportAggregateEnabled (2008-10-04 18:41)

My list of things I want to blog about is getting hugher every day. Today it stands at 32. As with most
bloggers my biggest problem is R &D time. Luckily more and more people start blogging on OBIEE.
One of those people is Kevin Custer. He made a great entry on ”ReportAggregateEnabled” here:
[1]http://oraclebi.soundvoid.net/2008/10/grand-totals-with-calcu lated-columns-2/. This is one of those
things you have look at when you work ”complex” grand totals. It is not in the documentation only on
metalink3 : SR 3-159350471
Till Next Time
1. http://oraclebi.soundvoid.net/2008/10/grand-totals-with-calculated-columns-2/

OBIEE update tutorials (2008-10-07 18:56)

The people at OTN have updated ”Oracle by example” section for OBIEE:
[1]http://www.oracle.com/technology/obe/obe bi/bi ee 1013/index.html
Till Next Time
1. http://www.oracle.com/technology/obe/obe_bi/bi_ee_1013/index.html

OBIEE Show Thousands Separator in Chart (2008-10-07 19:02)

A customer wantend no thousand seperator by default for the y-axis in there graphs:

This is very easy when add: ShowThousandsSeparator=’False’ in the ValueScale


tag in the PCXML file of the graph

Till Next Time

152
OBIEE Portal customization part 2 ”the portalcontent” (2008-10-08 20:09)

After the Login screen ([1]http://obiee101.blogspot.com/2008/09/obiee-making-custom-l og-on-and-log-


off.html) and the portalbanner ([2]http://obiee101.blogspot.com/2008/09/obiee-portal-customiz ation-
part-1.html) it’s time

for the portalcontent.[3] Most of this


screenpart is controlled by portalcontent.css.
Active Tab:

[4]
Appearance: portalcontent.css => .TabHiFont
Inactive Tab:

[5] Appearance: portalcontent.css => a.TabDimFont


Space between tabs:

[6] Appearance: portalcontent.css => .TabSep


Thickness of the bar below the tabs:

[7] Appearance: portalcontent.css => .TabLineTable


Tab Background image’s

[8] Appearance: .TabHiCell, .TabHiSep, .TabDimCell, .TabDimSep


Minibuttons:

[9] Appearance: portalcontent.css => .minibuttonOn


Dashboard Sections:
153
[10]

[11]
Of course this posting doesn’t include all possible CSS settings but it gives you a good starting point.
Till Next Time
This article was original written for the Ciber Knowledge Blog:
[12]http://knowledge.ciber.nl/weblog/?p=137

1. http://obiee101.blogspot.com/2008/09/obiee-making-custom-log-on-and-log-off.html
2. http://obiee101.blogspot.com/2008/09/obiee-portal-customization-part-1.html
3. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SOz3v8oG1QI/AAAAAAAAAy4/LVcHHbaywww/s1600-h/portal_content001.png
4. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SOz3v5bT3CI/AAAAAAAAAzA/AgcltpsB1GE/s1600-h/portal_content002.png
5. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SOz3v5NI0hI/AAAAAAAAAzI/7hla_U3msJk/s1600-h/portal_content003.png
6. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SOz3vyRvhrI/AAAAAAAAAzQ/uWaTOKc3PSw/s1600-h/portal_content004.png
7. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SOz3wBnSKOI/AAAAAAAAAzY/KzUJ0taZnEI/s1600-h/portal_content005.png
8. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SOz3h6lwtDI/AAAAAAAAAyY/yQXCIdLORAo/s1600-h/portal_content006.png
9. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SOz3h_ACTfI/AAAAAAAAAyg/SvgLV99-uwU/s1600-h/portal_content007.png
10. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SOz3h8CzISI/AAAAAAAAAyo/TxV_hWZPT5Q/s1600-h/portal_content008.
png
11. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SOz3iLBB0_I/AAAAAAAAAyw/0S1H0MfRB5U/s1600-h/portal_content009.
png
12. http://knowledge.ciber.nl/weblog/?p=137

OBIEE Skin and Style Naming (2008-10-09 18:13)

Discovered today that you can’t use underscores or in Skin and StyleNames.
so MyCompagny SKIN A and ”MyCompagny SKIN A” are illegal . MyCompagnySKINA is allowed.
(yep, I know it’s in the documentation........)
Till Next Time

OBIEE using the webservices (2008-10-10 16:24)

My Collegue Bas Piepers wrote a couple of good articles on how to use the OBIEE webservice:

• [1]OBIEE web services part 1 trigger iBots

• [2]OBIEE web services part 2 writing default selection values


154
Till Next Time

1. http://knowledge.ciber.nl/weblog/?p=139
2. http://knowledge.ciber.nl/weblog/?p=140

OBIEE replacing siebelbug.gif (Powered by Oracle) (2008-10-10 17:31)

Did you ever wanted to replace this:[1] by this:

[2]Or any other picture you can find.....

Make a copy of the productmessages.xml to it’s customMessages folder. Edit the entry for kmsgPowered-
ByAnchor to the new picture. You will have to do this for every language.

Till Next Time

1. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SO9MeYv4ZtI/AAAAAAAAAzg/lJxNAJSRalw/s1600-h/siebelbug.gif
2. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SO9Meq2UNEI/AAAAAAAAAzo/5VSotNk9ZFc/s1600-h/MyCompagny.jpg

OBIEE See me live at Rittman Mead (2008-10-20 09:07)

I will be joining the Rittman Mead Oracle BI Training Days 22nd-24th October 2008. So if you want to
shake hands and have a chat, just drop by.
Till Next Time

OBIEE using the webservices part 2 (2008-10-20 16:59)

My Collegue Bas Piepers wrote a couple of new (good)articles on how to use the OBIEE webservice:

• [1]OBIEE web services part 3 copy reports

• [2]OBIEE web services part 4 write properties to catalog objects

• [3]OBIEE web services part 5 creating and filling dashboard pages

Till Next Time

1. http://knowledge.ciber.nl/weblog/?p=142
2. http://knowledge.ciber.nl/weblog/?p=143
3. http://knowledge.ciber.nl/weblog/?p=144

155
OBIEE Ritmann Mead BI Training Days Day 1 (2008-10-22 23:30)

Did a lot OBIEE indepth discussions, got some new blog ideas....... Some new insights on using max
queries per drive join and max parameters per drive join.
Great meal at ’The Grapes’ in the evening ([1]http://www.hardens.com/az/restaurants/london/e14/the-
grape s.htm)
Till Next Time
1. http://www.hardens.com/az/restaurants/london/e14/the-grapes.htm

OBIEE Ritmann Mead BI Training Days Day 2 (2008-10-23 23:55)

- Some good info on using Essbase with OBIEE and how to use OBIEE as a source
for Essbase. (Even better discusion why you want to do that....) See Mark’s blog:
[1]http://www.rittmanmead.com/2008/09/20/loading-obiee-data-into -essbase-using-essbase-studio-111/
- Borkur demod the conversion of Discovery to OBIEE
- Good info on new partioning possibilities on Oracle11g from
Pete Scott : [2]http://www.rittmanmead.com/2008/09/14/testing-advanced-oltp-c ompression-in-oracle-
11g/ , [3]http://www.rittmanmead.com/2008/09/13/investigating-oracle-11 g-interval-partitioning/ and
[4]http://www.rittmanmead.com/2008/09/05/oracle-11g-partitioning /
Till Next Time
1. http://www.rittmanmead.com/2008/09/20/loading-obiee-data-into-essbase-using-essbase-studio-111/
2. http://www.rittmanmead.com/2008/09/14/testing-advanced-oltp-compression-in-oracle-11g/
3. http://www.rittmanmead.com/2008/09/13/investigating-oracle-11g-interval-partitioning/
4. http://www.rittmanmead.com/2008/09/05/oracle-11g-partitioning/

OBIEE Ritmann Mead BI Training Days Day 3 (2008-10-24 23:46)

Mark gave a good demo on how the mapping in OBI-apps works and how you can customize it. It’s based
on Informatica Powercenter, but if your OWB skills are up to speed you can easily pick it up. Check out
Marks blog: [1]http://www.rittmanmead.com/2008/07/24/adding-new-facts-and-di mensions-to-the-bi-
apps-data-warehouse/
All in All it was a good course covering a lot of the Oracle BI stack! Even better there was enough room
and expertise to ask you personal question.
My advise: If you are into BI using Oracle, try to catch this course.
Till Next Time.
(on a lighter note: The way back to the Netherlands was a nigthmare...... London City Airport closed
because af a security alert! (according to the Chinese Whispers: Unknown flued in the lady toilets .....
;-) , while standing in the line to get into the airport, the rumors that Steve Jobs of Apple had died
spread....Luckely for Steve this wasn’t true.... A wheel of my suitcase broke so I had to drag it for a
mile....)
1. http://www.rittmanmead.com/2008/07/24/adding-new-facts-and-dimensions-to-the-bi-apps-data-warehouse/

OBIEE using google maps (Q&D style) (2008-10-25 23:15)

While I was waiting for a plane back home on London City Airport, I had some time left...... I thought
I digg into how to use Google maps from OBIEE.
Step 1: Get a Google Maps API Key from: [1]http://code.google.com/apis/maps/signup.html
Since the Google maps API uses a key generate based on the IP and name from calling server be
sure your on your webserver when calling this. Get a key based on your own OBIEE server adress:
[2]http://vmobiee:9704/analytics/
Step 2: Create a report with a at least a combined adress column and an RCOUNT (forget it in the
156
picture):

Step 3: Add a narrative view to report with the following script in the prefix area

?!?script src=”[3]http://maps.google.com/maps?file=api &v=2.x &key=ABQIAAAAtgh-


ZliBar5ci3sjZR oGRSEtwgT n0GADCjO95K9FWMY2XE2RQZwN8F1TggjSu117aG7-
0pYMI0GfQ” type=”text/javascript”!?!?!?/script!?! ?!?script type=”text/javascript”!?!
var map1 = null; var geocoder1 = null;
function initialize1(address1) { if (GBrowserIsCompatible()) { map1 =
new GMap2(document.getElementById(1), {size:new GSize(400,300) }); geocoder1 = new
GClientGeocoder(); map1.setCenter(new GLatLng(37.4419, -122.1419), 13); } if (geocoder1)
{ geocoder1.getLatLng( address1, function(point1) { if (!point1) { alert(address1 + ” not
found”); } else { map1.setCenter(point1, 13); map1.addOverlay(new GMarker(point1));
} } ); } }
var map2 = null; var geocoder2 = null;
function initialize2(address2) { if (GBrowserIsCompatible()) { map2 =
new GMap2(document.getElementById(2), {size:new GSize(400,300) }); geocoder2 = new
GClientGeocoder(); map2.setCenter(new GLatLng(37.4419, -122.1419), 13); } if (geocoder2)
{ geocoder2.getLatLng( address2, function(point2) { if (!point2) { alert(address2 + ” not
found”); } else { map2.setCenter(point2, 13); map2.addOverlay(new GMarker(point2));
} } ); } }
var map3 = null; var geocoder3 = null;function initialize3(address3) { if (GBrowserIsCom-
patible()) { map3 = new GMap2(document.getElementById(3), {size:new GSize(400,300)
}); geocoder3 = new GClientGeocoder(); map3.setCenter(new GLatLng(37.4419, -
122.1419), 13); } if (geocoder3) { geocoder3.getLatLng( address3, function(point3)
{ if (!point3) { alert(address3 + ” not found”); } else { map3.addOverlay(new
GMarker(point3));map3.setCenter(point3, 13); } } ); } }
?!?/script!?! ?!?/head!?!

Replace ?!? and !?! with tag symbols


This code is for max 3 maps on a page but easily extenbel to any higher number.
More info on the google map API [4]http://code.google.com/apis/maps/documentation/examples/
In the narrative part add

:?!?div id=”@7” style=”width: 400px; height:


300px;text-align:center;”!?! ?!?script type=”text/javascript”!?! initialize@7(’@6’) ?!?/script!?!
?!?/div!?!@1, @6

Where @7 is the rcount column and @6 is the google adress.


Now put it all on the dashboard:
157
Till Next Time
Edit if you are using IE you migth want to look also here:
[5]http://obiee101.blogspot.com/2009/07/obiee-google-maps-altern ative-ending.html
1. http://code.google.com/apis/maps/signup.html
2. http://vmobiee:9704/analytics/
3. http://maps.google.com/maps?file=api&v=2.x&key=ABQIAAAAtgh-ZliBar5ci3sjZR_oGRSEtwgT_
n0GADCjO95K9FWMY2XE2RQZwN8F1TggjSu117aG70pYMI0GfQ
4. http://code.google.com/apis/maps/documentation/examples/
5. http://obiee101.blogspot.com/2009/07/obiee-google-maps-alternative-ending.html

OBIEE No language dropdown on loginscreen (2008-10-27 02:59)

If you don’t want users to choose any other languages then the one you have defined, goto instancecon-
fig.xml and set the required languages between the AllowedLanguages tags. If you keep to one language
the dropdown list will not appear.
Till Next Time

OBIEE Clearing the log (2008-10-29 19:12)

Even if you have limited the maximum size of the log file ([1]http://obiee101.blogspot.com/2008/01/ob-
iee-optimizing-nqqu erylog-for.html) you sometimes want a Q &D cleanup. For that I create an empty
log file in the log directory called NQQuerylogEmpty.log. I made a small batfile on the desktop of the
development server:

net stop ”Oracle BI Server”


Copy E:\OracleBI\server\Log \NQQueryEmpty.log
E:\OracleBI\server\Log \NQQuery.log
net start ”Oracle BI Server”
158
That way I can do a Q &D reset and now that the next entry is my query.
Till Next Time
1. http://obiee101.blogspot.com/2008/01/obiee-optimizing-nqquerylog-for.html

2.11 November

OBIEE Huge dimensions? Let s split them! (2008-11-03 23:24)

OBIEE is (like most other tools) based on the Kimball methodology of representing date in a star model,
using dimension and fact tables. The problem with dimension tables is that if they have several levels
they can easily become huge and therefor take a long time to load. And if there is one users don’t want
is waiting.....
An example: a dimension with 5 levels and 25 categories on each level can give you 25ˆ5 = 9.765.625
possibilities. An entry on level 1 would generated a ”select distinct level 1 from dim table”. No mater
how good your indexing is, a select distinct on almost 10 million rows is always slower then a select
distinct on 25 rows.
How can we make this faster?
Step 1 is to organize your ETL is such a way that you get a dimension table for each level. (In practices
you will probably group 2 or 3 levels together.)
Each dimension level table should also have the predecessor columns in them:

dim table level 1; level 1


dim table level 2; level 1, level 2
dim table level 3; level 1, level 2, level 3
dim table level 4; level 1, level 2, level 3, level 4
dim table level 5; level 1, level 2, level 3, level 4, level 5

Now we could map this in OBIEE as dim table level 1 => dim table level 2 => dim table level
3 => dim table level 4 => dim table level 5 => fact table. But then again we would you loose
the benefit of ”small” dimension table by introducing costly joins.
Example:

select T36.LEVEL 01 as c1, sum(T56.F FACT VAL) as c2from


DIM LEVEL 01 T36, DIM LEVEL 02
T38, DIM LEVEL 03 T41,
DIM LEVEL 04 T45, DIM LEVEL 05
T50, F FACTS T56where ( T36.LEVEL 01 = T38.LEVEL 01 and T36.LEVEL 01 =
T56.LEVEL 1 and T38.LEVEL 02 = T41.LEVEL 02 and T38.LEVEL 02 = T56.LEVEL
2 and T41.LEVEL 03 = T45.LEVEL 03 and T41.LEVEL 03 = T56.LEVEL 3 and
T45.LEVEL 04 = T50.LEVEL 04 and T45.LEVEL 04 = T56.LEVEL 4 and T50.LEVEL
05 = T56.LEVEL 5 ) group by T36.LEVEL 01order by c1

Let OBIEE make the decision!


If you really want to maximize the speed of OBIEE you can use the ”federated query” functionality.
Beside splitting the dimension table we also split the dimension key in the fact table. (In a later article
I will show you how you make your query’s ”aggregate aware” and speed them up a lot!.)
Your fact table will look like: level 1, level 2, level 3, level 4, level 5, fact 1
If you map this in physical layer as: dim table level 1 => fact table, dim table level 2 => fact
table, dim table level 3 => fact table, dim table level 4 => fact table and dim table level 5
159
=> fact table and put all the dimension tables in the same datasource in the business model layer:

Next we make the dimension accordenly:

[1]
You will see that OBIEE automatically choices the correct dim table while drilling down:

level 1:
select T36.LEVEL 01 as c1,
sum(T56.F FACT VAL) as c2from DIM LEVEL 01
T36, F FACTS T56where ( T36.LEVEL 01 = T56.LEVEL 1
) group by T36.LEVEL 01order by c1

level 2:
select T38.LEVEL 01 as c1, T38.LEVEL 02 as
c2, sum(T56.F FACT VAL) as c3from
DIM LEVEL 02 T38, F FACTS
T56where ( T38.LEVEL 01 = ’A’ and T38.LEVEL 02 = T56.LEVEL 2 ) group by
T38.LEVEL 01, T38.LEVEL 02order by c1, c2

level 3:
select T41.LEVEL 01 as c1, T41.LEVEL 02 as
c2, T41.LEVEL 03 as c3,
sum(T56.F FACT VAL) as c4from DIM LEVEL 03
T41, F FACTS T56where ( T41.LEVEL 01 = ’A’ and
T41.LEVEL 02 = ’AA’ and T41.LEVEL 03 = T56.LEVEL 3 ) group by T41.LEVEL 01,
T41.LEVEL 02, T41.LEVEL 03order by c1, c2, c3

level 4:
select T45.LEVEL 01 as c1, T45.LEVEL 02 as
160
c2, T45.LEVEL 03 as c3,
T45.LEVEL 04 as c4, sum(T56.F FACT VAL) as c5from
DIM LEVEL 04 T45, F FACTS
T56where ( T45.LEVEL 01 = ’A’ and T45.LEVEL 02 = ’AA’ and T45.LEVEL 03 =
’AAF’ and T45.LEVEL 04 = T56.LEVEL 4 ) group by T45.LEVEL 01, T45.LEVEL 02,
T45.LEVEL 03, T45.LEVEL 04order by c1, c2, c3, c4

level 5:
select T50.LEVEL 01 as c1, T50.LEVEL 02 as
c2, T50.LEVEL 03 as c3,
T50.LEVEL 04 as c4, T50.LEVEL 05 as
c5, sum(T56.F FACT VAL) as c6from
DIM LEVEL 05 T50, F FACTS
T56where ( T50.LEVEL 01 = ’A’ and T50.LEVEL 02 = ’AA’ and T50.LEVEL 03 =
’AAF’ and T50.LEVEL 04 = ’AAFG’ and T50.LEVEL 05 = T56.LEVEL 5 ) group by
T50.LEVEL 01, T50.LEVEL 02, T50.LEVEL 03, T50.LEVEL 04, T50.LEVEL 05order
by c1,
c2, c3, c4, c5

Edit: OBIEE guru Stijn Gabriels pointed out to me that you also have to set the levels for each dimension

column.
(When you start with a ”virgin” repository OBIEE will do automaticly, but you should always check
them!)
This article was orinally written for the ciber knowledge blog :
[2]http://knowledge.ciber.nl/weblog/?p=147
Till Next Time
1. file://localhost/C:/Documents%20and%20Settings/john.minkjan/Application%20Data/Windows%20Live%20Writer/
PostSupportingFiles/c30200ed-d8fd-4797-bcfa-900e6b94c9b9/image[2].png
2. http://knowledge.ciber.nl/weblog/?p=147

OBIEE making it ”aggregate aware” (2008-11-06 20:48)

In a previous posting ([1]http://obiee101.blogspot.com/2008/11/obiee-huge-dimensions -lets-split-


them.html) I showed a way to split huge dimensions to bring down the response time of OBIEE. Can we
bring down the response time even more? Of course we can, let s make OBIEE aggregate aware.
The aggregate tables
First we have to change our ETL so that we get aggregate table(s) in the form:

ag fact table level 1; dim level 1, fact aggregate level 1


ag fact table level 2; dim level 2, fact aggregate level 2
ag fact table level 3; dim level 3, fact aggregate level 3
ag fact table level 4; dim level 4, fact aggregate level 4

Mapping the physical layer


161
Next we have to map our dimension table(s) to our aggregate table(s):

Mapping the bussiness model

[2]
Your fact mapping should look like this:

162
[3]
Be sure to check to level on the datasource of the aggregate table:

[4]
Check that the Aggregation content is on ”Logical level”
If you are not sure about the level use the Check levels functionality (press the more button)

[5]
Check if each level of the dimension(s) is mapped correctly:

[6]
163
Checking the results:
Level 1

[7]
Log:

select distinct T36.LEVEL 01 as c1, T307.F FACT VAL as c2 from DIM LEVEL 01
T36, F FACTS 1 T307 where ( T36.LEVEL 01 = T307.LEVEL 1 ) order by c1

Level 2

[8]

select distinct T38.LEVEL 01 as c1, T38.LEVEL 02 as c2, T310.F FACT VAL as c3


from DIM LEVEL 02 T38, F FACTS 2 T310 where ( T38.LEVEL 01 = A and
T38.LEVEL 02 = T310.LEVEL 2 ) order by c1, c2

Level 3

[9]

select distinct T41.LEVEL 01 as c1, T41.LEVEL 02 as c2, T41.LEVEL 03 as c3,


T314.F FACT VAL as c4 from DIM LEVEL 03 T41, F FACTS 3 T314 where (
T41.LEVEL 01 = A and T41.LEVEL 02 = AA and T41.LEVEL 03 = T314.LEVEL
3 ) order by c1, c2, c3

And so on&.. This article


was orinally written for the ciber knowledge blog : [10]http://knowledge.ciber.nl/weblog/?p=148 Till
Next Time
164
1. http://obiee101.blogspot.com/2008/11/obiee-huge-dimensions-lets-split-them.html
2. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SRNOELho__I/AAAAAAAAA5E/PG6VqPrWuV8/s1600-h/obi02.png
3. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SRNOQFsHVMI/AAAAAAAAA5M/mMuR6DPWpNs/s1600-h/obi03.png
4. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SRNOjtKtjkI/AAAAAAAAA5U/bL2kWgUTqnQ/s1600-h/obi04.png
5. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SRNOtsnM4fI/AAAAAAAAA5c/63VekwZJQiQ/s1600-h/obi05.png
6. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SRNPk_PJ8iI/AAAAAAAAA58/Hf2zXyoozy4/s1600-h/obi09.png
7. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SRNO_1-crrI/AAAAAAAAA5k/vFHNstIlvNc/s1600-h/obi06.png
8. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SRNPNWW-rCI/AAAAAAAAA5s/-W8Cm-HUU1U/s1600-h/obi07.png
9. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SRNPVHKJe8I/AAAAAAAAA50/GulLutX2QrI/s1600-h/obi08.png
10. http://knowledge.ciber.nl/weblog/?p=148

OBIEE nQSError (2008-11-08 19:53)

Sometime you get these strange error codes. For OBIEE there isn’t a ”real” error messages guide. But
there is still one for the ”old” Siebel:
[1]http://download.oracle.com/otndocs/products/bi/bi-ee/docs/784 /AnyMsg.pdf
Get your own copy while it’s still there.
Till Next Time
[2]

1. http://download.oracle.com/otndocs/products/bi/bi-ee/docs/784/AnyMsg.pdf
2. http://download.oracle.com/otndocs/products/bi/bi-ee/docs/784/AnyMsg.pdf

OBIEE Stop the beep (2008-11-08 20:05)

Do you want stop the annoying ”BEEP” which you get every time when delete something in the reposi-
tory?
Make a small .BAT file called ”NET STOP BEEP.BAT” Put this in the file

REM STOP THE BEEP!


NET STOP BEEP

Put in the scheduled tasks as a ”run at login”


Till Next Time

OBIEE Aggregate Persistence Wizard (2008-11-09 12:37)

If you are doing POC on OBIEE or have to do some RAD work, you usually don t have access to ETL
of the database to prep the aggregate tables. If you have access to an DB-schema with some create and
drop table rights you can use the OBIEE Aggregate Persistence Wizard to do it Q &D / RAP style.
(More info on using aggregate tables you can find here: [1]http://obiee101.blogspot.com/2008/11/obi-
ee-making-it-aggregat e-aware.html ) The examples in this article are based on this simplified business
model;
165
[2]
Prep the repository:

Open the repository in online mode.


In the physical layer of your repository create a new database, connection pool and schema.

[3]
From the tools > utilities menu select the aggregate persistence wizard:

[4]
Enter a location for the script:

[5]
Select the fact(s) you want to aggregate:
166
[6] Select the logical levels for the ag-
gregate:

[7]
Checking the ”Use Surrogate Key ?” will later on map the aggregates using a surrogate key, this can
improve performance if you have (complex) keys, consisting of multiple columns.

Select the database, schema and connection pool the script has to use. Be sure to have create and drop
table rights in that schema.

167
[8]
Check the ”I am done”

[9]
Close the online repository .
Open the file, it should look something like this:

create aggregates
”ag F FACTS” for ”BM AGG WIZ”.”F FACTS”(”F FACT VAL”) at
levels (”BM AGG WIZ”.”DIM LEVELDim”.”LEVEL 01” using surrogate key ,
”BM AGG WIZ”.”DIM DATEDim”.”D YEAR” using surrogate key ) using connection
pool
”AGGR”.”CP AGGR” in ”AGGR”..”AGGR”;

Before the ”create aggregates” add ”delete aggregates;” (don t forget the semicolon!)

168
delete aggregates;
create aggregates
”ag F FACTS” for
”BM AGG WIZ”.”F FACTS”(”F FACT VAL”) at levels
(”BM AGG WIZ”.”DIM LEVELDim”.”LEVEL 01” using surrogate key ,
”BM AGG WIZ”.”DIM DATEDim”.”D YEAR” using surrogate key ) using connection
pool
”AGGR”.”CP AGGR” in ”AGGR”..”AGGR”;

Run the script using nqcmd:

{OracleBI }\server\Bin>nqcmd -u Administrator -p Administrator -d AnalyticsWeb


-s c:\agg wizz.sql

Open the repository again and have a look at the AGGR database in the physical layer:

[10]
If you have a close look at the joins you will see that they are using the surrogate key:

[11]
Now check your business model:
169
[12]
If you open one of the aggregates in the Sources you will see that OBIEE already did the level mapping:

[13]
In the log file you can find the SQL issued to the database:

CREATE TABLE ag F FACTS ( LEVEL 0 000000C6SK DOUBLE PRECISION, D


YEAR 000000D6SK
DOUBLE PRECISION, F FACT VAL00000086 DOUBLE PRECISION )

Now check with a simple request if OBIEE is actually ”picking up” the aggregate:

[14]
170
From the log:

select distinct T1047.LEVEL 0100000074 as c1, T1052.D YEAR0000007E as c2,


T1059.F FACT VAL00000086 as c3 from SA LEVEL 0000000C6 T1047, SA D
YEAR000000D6
T1052, ag F FACTS T1059 where ( T1047.LEVEL 0 000000C6SK =
T1059.LEVEL 0 000000C6SK and T1052.D YEAR 000000D6SK = T1059.D YEAR
000000D6SK )
order by c1, c2

The next step

Based on the basic script we have now with some clever copy and paste actions it s easy to extend to
other aggregates.

delete aggregates;
create aggregates
”ag F FACTS01 YEAR” for
”BM AGG WIZ”.”F FACTS”(”F FACT VAL”) at levels
(”BM AGG WIZ”.”DIM LEVELDim”.”LEVEL 01” using surrogate key ,
”BM AGG WIZ”.”DIM DATEDim”.”D YEAR” using surrogate key ) using connection
pool
”AGGR”.”CP AGGR” in ”AGGR”..”AGGR”,
”ag F FACTS02 YEAR” for
”BM AGG WIZ”.”F FACTS”(”F FACT VAL”) at levels
(”BM AGG WIZ”.”DIM LEVELDim”.”LEVEL 02” using surrogate key ,
”BM AGG WIZ”.”DIM DATEDim”.”D YEAR” using surrogate key ) using connection
pool
”AGGR”.”CP AGGR” in ”AGGR”..”AGGR”,
”ag F FACTS03 YEAR” for
”BM AGG WIZ”.”F FACTS”(”F FACT VAL”) at levels
(”BM AGG WIZ”.”DIM LEVELDim”.”LEVEL 03” using surrogate key ,
”BM AGG WIZ”.”DIM DATEDim”.”D YEAR” using surrogate key ) using connection
pool
”AGGR”.”CP AGGR” in ”AGGR”..”AGGR”,
”ag F FACTS04 YEAR” for
”BM AGG WIZ”.”F FACTS”(”F FACT VAL”) at levels
(”BM AGG WIZ”.”DIM LEVELDim”.”LEVEL 04” using surrogate key ,
”BM AGG WIZ”.”DIM DATEDim”.”D YEAR” using surrogate key ) using connection
pool
”AGGR”.”CP AGGR” in ”AGGR”..”AGGR”;

Before you run the script check your ”,” and ””;” and be sure that each aggregate has a unique name .
When (not) to use this feature:

• This is perfect in a Proof of Concept (POC) or if your have to do some rapid application development
(RAP)

• This feature work very crude: A delete aggregates is a ”DROP TABLE”


171
• This feature doesn t create any indexes, you have to create them yourself!

• This works perfect if you have to do some cross database aggregates, it can really boost the perfor-
mance there.

Till next time


This article was orginally written for the Ciber knowledge blog:
[15]http://knowledge.ciber.nl/weblog/?p=149
1. http://obiee101.blogspot.com/2008/11/obiee-making-it-aggregate-aware.html
2. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SRbMsGD6pOI/AAAAAAAAA6E/Xa_LigkEhZk/s1600-h/OBIAGG01.png
3. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SRbM_LAyHsI/AAAAAAAAA6M/2riSJ4zjoik/s1600-h/OBIAGG02.png
4. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SRbNKMBbbNI/AAAAAAAAA6U/T9uW-UuMCyE/s1600-h/OBIAGG03.png
5. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SRbNTl51O5I/AAAAAAAAA6c/wct2hZAI4vE/s1600-h/OBIAGG04.png
6. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SRbNqvEL92I/AAAAAAAAA6k/e_q6H9Iliyc/s1600-h/OBIAGG05.png
7. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SRbNzxq3-NI/AAAAAAAAA6s/xvzjOQ7Q5ws/s1600-h/OBIAGG06.png
8. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SRbN-85f3iI/AAAAAAAAA60/donx9OBV9to/s1600-h/OBIAGG07.png
9. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SRbOIK3vAZI/AAAAAAAAA68/5gJZ6ri45dA/s1600-h/OBIAGG08.png
10. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SRbOWsRlYtI/AAAAAAAAA7E/yzEcDAkIH2I/s1600-h/OBIAGG09.png
11. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SRbOfqMzXNI/AAAAAAAAA7M/ORVSity3ua0/s1600-h/OBIAGG10.png
12. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SRbOrerNNvI/AAAAAAAAA7U/C8ZrWYQDHf8/s1600-h/OBIAGG11.png
13. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SRbO1maoEaI/AAAAAAAAA7c/mOjKzBBQe6o/s1600-h/OBIAGG12.png
14. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SRbPB9hZ1YI/AAAAAAAAA7k/E23QxGegags/s1600-h/OBIAGG13.png
15. http://knowledge.ciber.nl/weblog/?p=149

OBIEE Creating indexes Q&D Style (2008-11-09 14:30)

If you are the Aggregate Persistence Wizard to create your aggregate tables, you don’t get any indexes.
Here is a small (ORACLE) script to create them on the fly Q &D style:

BEGIN
FOR i IN (SELECT ’CREATE INDEX IDX AGGR’ SUBSTR (’0000’
TO CHAR (ROWNUM), -5) ’ ON AGGR.’ table name ’ (’ column name ’) NOLOGGING
NOPARALLEL’ AS sql str
FROM all tab cols
WHERE owner = ’AGGR’
AND (table name LIKE ’AG %’ OR table name LIKE ’SA %’))
LOOP
execute immediate (i.sql str);
END LOOP;
END;

Till Next Time

OBIEE OBI - Forum Live (2008-11-10 12:45)

Ze Bloggen en Loggen... Ontmoet ze nu op OBI FORUM LIVE


CIBER, InCore Solutions en Scamander zijn toonaangevende bedrijven op het gebied van Oracle s BI
Suite. John Minkjan (CIBER), Remco van Dam (InCore Solutions), Daan Bakboord (Scamander) en
Gerard Braat (Oracle) zijn Nederland s bekendste en beste (b)loggers op dit vlak. Op de nationale en
internationale fora zijn ze bekende personen en leveren ze een zeer belangrijke bijdrage aan de kennisdeling.
Nú heeft u de mogelijkheid om deze 4 belangrijkste spelers persoonlijk te ontmoeten en met ze te sparren .
172
Neem gewoon uw eigen vragen mee en ontdek de geheimen van OBI!
Op 14 januari 2009 is de eerste editie van OBI Forum Live. Een initiatief van CIBER, InCore Solutions
en Scamander, in samenwerking met Oracle Nederland. OBI Forum Live zal plaatsvinden bij Oracle
Nederland in De Meern.
Schrijf je nu in op [1]http://www.obi-forumlive.nl/
1. http://www.obi-forumlive.nl/

OBIEE Default colour Title border (2008-11-12 10:28)

Good a quick question on how to set the default Titleborder colour in OBIEE to red.

[1]
Go to your view.css directory in ..s MyCompagny\b mozilla 4
Locate this part and change the colour:

/* ***** */
/* Title */
/* ***** */
.TitleTable {
font-family: arial, helvetica, sans-serif;
border-width: 0 0 4px 0;
border-style: solid;
border-color: #FF0000;
}

If you are on OC4J don’t forget it to copy to applications directory: ...oc4j bi\j2ee\home\applicatio
ns\analytics\analytics\ res\s MyCompagny\b mozilla 4
Till Next Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/SRqiPIAn1SI/AAAAAAAAA8Q/Bs4w5UnWFPA/s1600-h/image%5B2%5D.png

OBIEE Presentation Services Cache Settings (2008-11-12 16:52)

The cache is accessed when users make requests in Answers. This is not the same cache that is accessed
by the Oracle BI Server. You can change the internal defaults by modifying the Oracle BI Presentation
Services configuration file (instanceconfig.xml) to add the cache entries.
First of all try to have your presentation Cache on the fastest disk available (consider a ”RAM drive”).
Specifying the Maximum Number of Oracle BI Presentation Services Open Record Sets

From the guide:


You can override the maximum number of open record sets that Oracle BI Presentation
Services keeps open at any one time. The internal default is 10. The minimum value is 3. For
systems under
significant loads, you can increase this value to 500 or 1000.
The following entry is an example:
<CacheMaxEntries>100</CacheMaxEntries>
173
Rule of thumb: Number of concurrent users * 5.
There are a couple of more setting, but unless you have a lot of concurrent users (1000+) the ”gain” of
these settings is minimal.
Specifying the Maximum Amount of Time an Entry Can Exist in the Oracle BI Presentation Services
Cache
From the guide:

You can override the maximum amount of time, in minutes, that an entry in the cache can
exist before it is removed. The internal default is 60 (one hour). Depending on (the number
of requests being run, an entry may be removed before the time limit expires.
The following entry is an example:
<CacheMaxExpireMinutes>60</CacheMaxExpireMinutes>

Rule of thumb: Don’t make this any longer then 10 % of your ETL refresh rate to avoid the risk of user
seeing ”old” data inadvertently. Be aware that CacheMaxExpireMinutes also influenced by CacheMi-
nUserExpireMinutes. This means that in a 24Hour ETL cycle this shouldn’t be any longer then 150
minutes.
Specifying the Least Amount of Time an Entry Can Exist in the Oracle BI Presentation Services Cache
From the guide:

You can override the minimum amount of time, in minutes, that an entry in the cache can
exist before it is removed. The internal default is 10.
The following entry is an example:
<CacheMinExpireMinutes>10</CacheMinExpireMinutes>

Rule of thumb: 20 % of CacheMaxExpireMinutes


Specifying the Least Amount of Time an Entry Can Exist in the Oracle BI Presentation Services Cache
After Use
From the Guide:

You can override the minimum amount of time, in minutes, that an entry in the cache can
exist after it has been viewed by a user. The internal default is 10.
For example, if CacheMaxExpireMinutes is set to 60 minutes and a user views the entry
during the 59th minute, the entry exists for that user for an additional 10 minutes. The user
can continue paging through the data without requiring a new request to be run.
The following entry is an example:
<CacheMinUserExpireMinutes>10</CacheMinUserExpireMinutes>

Rule of thumb: same as CacheMinExpireMinutes


Till Next Time
This article was orginally written for the Ciber knowledge blog:
[1]http://knowledge.ciber.nl/weblog/?p=150
1. http://knowledge.ciber.nl/weblog/?p=150

OBIEE Outerjoin workaround? (2008-11-12 21:36)

(Direct answer: No :-( )


Have a look at this table:
174
[1]
What I’m looking for is this:

[2]
But I don’t want to use outerjoins, since obiee messes them up anyway when you try do filtering later
on.
Here is a small Q &D trick
Add an extra fact column and multiply it with a random number:

[3]
Next hide the column:

[4]
What is happening?
If we look in the log we see that OBIEE isn’t executing the RAND() function on the Database side but
internally. For that it first gets only the dimension columns from the database:
175
select T26.D YEAR as c2,
T26.D YEAR MONTH as c3
from
DIM YEAR MONTH DAY T26
where ( T26.D YEAR = ’2013’ )

Next it will get the facts:

select D2.c2 as c1,


D2.c3 as c2,
D2.c1 as c3
from
(select D1.c1 as c1,
D1.c2 as c2,
D1.c3 as c3
from
(select sum(T31.F FACT VAL) as c1,
T26.D YEAR as c2,
T26.D YEAR MONTH as c3,
ROW NUMBER() OVER (PARTITION BY T26.D YEAR MONTH ORDER BY T26.D
YEAR MONTH ASC) as c4
from
DIM YEAR MONTH DAY T26,
F FACTS T31
where ( T26.D YEAR = ’2013’ and T26.D YEAR MONTH DAY = T31.D DATE )
group by T26.D YEAR, T26.D YEAR MONTH
) D1
where ( D1.c4 = 1 )
) D2
order by c2

After that it stitches the query’s together.


Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SRqUbnVYI0I/AAAAAAAAA7w/b_tZxnF-wDU/s1600-h/image%5B2%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SRqUcdIQbYI/AAAAAAAAA74/ZnRuIvRvZIc/s1600-h/image%5B5%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/SRqUdFz8OGI/AAAAAAAAA8A/0PaKqioqJlY/s1600-h/image%5B9%5D.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/SRqUeYuVTkI/AAAAAAAAA8I/izjHtzMTQek/s1600-h/image%5B13%5D.png

OBIEE How To Replace Multiple Go Button By One Go Button In Prompts


(2008-11-14 17:58)

Sunil wrote a good one:


[1]http://sranka.wordpress.com/2008/11/09/how-to-replace-multi-g o-button-prompt-by-one/
Till Next Time
1. http://sranka.wordpress.com/2008/11/09/how-to-replace-multi-go-button-prompt-by-one/

OBIEE Understanding Outerjoins Part 1 (2008-11-15 22:46)

First of all in an ”ideal” DWH you wouldn’t have a need for outerjoins, but sometimes you need to make
data visible which you don’t have.
176
Outerjoins in OBIEE can be a bit tricky and don’t always give you the result you would expect. In this
article I will get trough the basics, in a next trough some pittfalls....

Creating an outerjoin

In OBIEE outerjoins are created in the Business Model Layer:

Open the properties screen of the logical join:

[1]

In the type dropdown box you can choose between ”Inner”,”Left Outer”, ”Right Outer” and ”Full outer”.

Left outer join

[2]

A ”Left Outer” join is interpreted by OBIEE as show me all data form the left table {DIM YEAR
MONTH DAY } and any matches with the right table {F FACTS }. If we look in the log we can see
the following physical query:

select T26.D YEAR as c1,


sum(T31.F FACT VAL) as c2
from
DIM YEAR MONTH DAY T26 left outer join
F FACTS T31 On T26.D YEAR MONTH DAY = T31.D DATE
group by T26.D YEAR
order by c1, c2
177
[3]
Right Outer Join

[4]
A ”Right Outer” is interpreted by OBIEE as show me all data form the right table {F FACTS } and
any matches with the left table {DIM YEAR MONTH DAY }. If we look in the log we can see the
following physical query:

select T26.D YEAR as c1,


sum(T31.F FACT VAL) as c2
from
F FACTS T31 left outer join
DIM YEAR MONTH DAY T26 On T26.D YEAR MONTH DAY = T31.D DATE
group by T26.D YEAR
order by c1, c2

If you have a closer look at the log you will see that OBIEE has translated the join to a ”left outer join”by
switching the tables.

[5]
178
Full Outer Join

[6]
A ”Full Outer Join” is interpreted by OBIEE as show me all data form the left table {DIM YEAR
MONTH DAY } and all the data from the the right table {F FACTS } regardless of any matches. If
we look in the log we can see the following physical query:

select T26.D YEAR as c1,


sum(T31.F FACT VAL) as c2
from
DIM YEAR MONTH DAY T26 full outer join
F FACTS T31 On T26.D YEAR MONTH DAY = T31.D DATE
group by T26.D YEAR
order by c1, c2

[7]
..

[8]
Till Next Time
This article is orignally written for the ciber knowledge blog:
[9]http://knowledge.ciber.nl/weblog/?p=152
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SR9DLK4JkHI/AAAAAAAAA8Y/2XzRhkZrH4w/s1600-h/image9.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SR9DMbb7GAI/AAAAAAAAA8g/fLnSU-GNM1E/s1600-h/image13%5B1%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/SR9DN_uUSII/AAAAAAAAA8o/4U9BOLTar5I/s1600-h/image12.png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/SR9DO66QvgI/AAAAAAAAA8w/508Lmc0ksrY/s1600-h/image21%5B1%5D.png
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/SR9DP2lqk-I/AAAAAAAAA84/M1JlhPOb_sc/s1600-h/image28.png
6. http://lh5.ggpht.com/_qd3TDEvIh4Y/SR9DRMd9XpI/AAAAAAAAA9A/imRjvT79h6s/s1600-h/image29%5B1%5D.png
7. http://lh3.ggpht.com/_qd3TDEvIh4Y/SR9DSFuLWwI/AAAAAAAAA9I/PRC9THUcjtY/s1600-h/image35.png
8. http://lh4.ggpht.com/_qd3TDEvIh4Y/SR9DSr0ew1I/AAAAAAAAA9Q/KqlX9sPJibU/s1600-h/image38.png
9. http://knowledge.ciber.nl/weblog/?p=152

OBIEE Understanding Outerjoins Part 2 (2008-11-20 20:56)

In a previous article I showed the basics of working with OBIEE Outerjoins:


([1]http://obiee101.blogspot.com/2008/11/obiee-understanding-o uterjoins-part-1.html).
179
[2]

This works fine until you add a filter :

[3]

[4]

From the log:

select T26.D YEAR as c1,


sum(T31.F FACT VAL) as c2
from
DIM YEAR MONTH DAY T26 left outer join
F FACTS T31 On T26.D YEAR MONTH DAY = T31.D DATE
group by T26.D YEAR
having 440000 < sum(T31.F FACT VAL)
order by c1

This ”kills” the outerjoin.... I hear think why not add ”OR IS NULL”. Let’s do that:

[5]
180
[6]

From the log:

select T26.D YEAR as c1,


sum(T31.F FACT VAL) as c2
from
DIM YEAR MONTH DAY T26 left outer join
F FACTS T31 On T26.D YEAR MONTH DAY = T31.D DATE
group by T26.D YEAR
having 440000 < sum(T31.F FACT VAL) or sum(T31.F FACT VAL) is null
order by c1

We still are missing a couple off years.

Let try an in view filter: change F FACT VAL to:

CASE WHEN SUM(F FACTS.F FACT VAL by DIM YEAR MONTH DAY.D
YEAR )> 440000 then SUM(F FACTS.F FACT VAL by DIM YEAR MONTH DAY.D
YEAR ) else NULL end

[7]

This give us all the years back:


181
[8]
From the log:

SET VARIABLE QUERY SRC CD=’Report’;SELECT DIM YEAR MONTH DAY.D


YEAR saw 0, CASE WHEN SUM(F FACTS.F FACT VAL by DIM YEAR MONTH
DAY.D YEAR )> 440000 then SUM(F FACTS.F FACT VAL by DIM YEAR MONTH
DAY.D YEAR ) else NULL end saw 1 FROM BM OUTER JOIN ORDER BY saw 0
select T26.D YEAR as c1,
sum(T31.F FACT VAL) as c4
from
DIM YEAR MONTH DAY T26 left outer join
F FACTS T31 On T26.D YEAR MONTH DAY = T31.D DATE
group by T26.D YEAR
order by c1

As you can see OBIEE did the case when logic internally.
Till Next Time
This article is orignally written for the ciber knowledge blog:
1. http://obiee101.blogspot.com/2008/11/obiee-understanding-outerjoins-part-1.html
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/SSVcfTEXH4I/AAAAAAAAA9Y/0RfODY8xq0s/s1600-h/image2.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/SSVcgp35QXI/AAAAAAAAA9g/cc2wfRabnhk/s1600-h/image5.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/SSVciJ3iL7I/AAAAAAAAA9o/cj8iM-2ss_8/s1600-h/image8.png
5. http://lh3.ggpht.com/_qd3TDEvIh4Y/SSVcjVBwexI/AAAAAAAAA9w/EBAQw8Yemqk/s1600-h/image14.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/SSVckjYY0GI/AAAAAAAAA94/lkvscV3cW7c/s1600-h/image11.png
7. http://lh6.ggpht.com/_qd3TDEvIh4Y/SSVcl-DtxLI/AAAAAAAAA-A/Bkb3Pj1LDhY/s1600-h/image15%5B2%5D.png
8. http://lh4.ggpht.com/_qd3TDEvIh4Y/SSVcnNluWPI/AAAAAAAAA-I/8nfUtoNqcSg/s1600-h/image31.png

OBIEE Federated Query’s / Fragmented Query’s (2008-11-21 23:33)

One of the power features of OBIEE is the usage of federated or fragmented query’s. Being able to source
different database at the same time can save you a lot of time because you don’t have to reengineer your
whole ETL every time a new system gets introduced.
182
Still it wise to put some effort in the way you map the tables in the repository, especially if you want to
minimize the query response time.

Let’s go back to out basic model:

[1]

[2]

As you can see this table only contains data after 2008. The data before 2008 is in the ”old” database.

Making a federated / fragmented logical table

Step 1 import the ”old” fact table into physical layer of the repository:

[3]

Step 2 make the correct joins in the Physical Layer


183
[4]

Step 3 Add the ”old” table to the datasource of the logical table

[5]

[6]

Step 4 Fragment the data from the two sources:


184
[7]

[8]
Don’t forget to set levels:

[9]
And even more important to enable the fragmentation:

[10]
It’s good practice to also set the where clause(s):
185
[11]

[12]
Why?
During transaction from the ”old” to a ”new” system there is usually a grace period where both systems
are kept up to date, if we don’t ”restrict” this ”grace period” the numbers might not add up correctly.
Let’s have a look at the result:

[13]
Optimizing the fragmentation
If we take a look at log of the previous query:

——————– Sending query to database named ORCL (id: 8216 ):


186
select T46.LEVEL 01 as c1,
T46.LEVEL 05 as c2
from
DIM LEVEL 05 T46
order by c2
+++Administrator:2d0000:2d0001
———-———- Sending query to database named ORCL (id: 8233 ):
select T26.D YEAR as c1,
T26.D YEAR MONTH DAY as c2
from
DIM YEAR MONTH DAY T26
order by c2
+++Administrator:2d0000:2d0001
———-———- Sending query to database named ORCL OLD (id: 8250 ):
select T1220.F FACT VAL as c1,
T1220.D DATE as c2,
T1220.LEVEL 5 as c3
from
F FACTS T1220
where ( T1220.D DATE < ’20080101’ )
order by c2
+++Administrator:2d0000:2d0001
———-———- Sending query to database named ORCL (id: 8165 ):
select D0.c3 as c2,
D0.c2 as c3,
sum(D0.c1) as c6
from
(select T31.F FACT VAL as c1,
T26.D YEAR as c2,
T46.LEVEL 01 as c3
from
DIM LEVEL 05 T46,
DIM YEAR MONTH DAY T26,
F FACTS T31
where ( T26.D YEAR MONTH DAY = T31.D DATE and T31.LEVEL 5 = T46.LEVEL
05 and T31.D DATE >= ’20080101’ )
) D0
group by D0.c2, D0.c3

You will see that the ”old” data isn’t picked up very efficiently. OBIEE fires three separated query’s to
the database and ”stitches and summarizes” the data locally, while the ”new” data is summarized at the
database.

Use the database potential

OBIEE is NOT a database!

So all data manipulation / aggregation we can do at the database side is usually faster then bringing the
data over to the BI-server. If the fact are in the ”old” system then there is a big changes that it also
contains the dimensions. If not ask your DBA to make a copy to that database either physical or as a
view based on a database link.

We can import and map the ”old” dimensions the same way as the ”old” fact table.
187
[14]

[15]
Don’t forget to set the levels:

[16]
Let’s try a ”border” line query:

[17]

[18]
From the log:

+++Administrator:2d0000:2d0003
——————– Sending query to database named ORCL OLD (id: 9994 ):
select T1220.F FACT VAL as c1,
T2134.LEVEL 01 as c2,
T1220.D DATE as c3
from
188
DIM LEVEL 05 T2134,
F FACTS T1220
where ( T1220.LEVEL 5 = T2134.LEVEL 05 and T1220.D DATE < ’20080101’ )
order by c3
+++Administrator:2d0000:2d0003
———-———- Sending query to database named ORCL OLD (id: 9868 ):
select T2140.D YEAR as c1,
T2134.LEVEL 01 as c3,
sum(T1220.F FACT VAL) as c5
from
DIM LEVEL 05 T2134,
DIM YEAR MONTH DAY T2140,
F FACTS T1220
where ( T1220.D DATE = T2140.D YEAR MONTH DAY and T1220.LEVEL 5 =
T2134.LEVEL 05 and T1220.D DATE < ’20080101’ and (T2140.D YEAR in (’2007’,
’2008’)) )
group by T2134.LEVEL 01, T2140.D YEAR

Nicely split into two non overlapping query’s.

Till Next Time

This article is originally written for the Ciber knowledge blog.

1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SScAYQNYvoI/AAAAAAAAA-Q/aJNHosH0Ai8/s1600-h/image%5B92%5D.png
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/SScAZGKir4I/AAAAAAAAA-Y/uMzq_S5FB6Y/s1600-h/image%5B6%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/SScAaFB6BwI/AAAAAAAAA-g/EHGQByl1w4k/s1600-h/image%5B10%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SScAbHIegqI/AAAAAAAAA-o/GG4K4Clb594/s1600-h/image%5B53%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/SScAcLd-xHI/AAAAAAAAA-w/pMgQLcTGiCI/s1600-h/image%5B14%5D.png
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/SScAdH0nfRI/AAAAAAAAA-4/_wLnFkCLNUE/s1600-h/image%5B19%5D.png
7. http://lh6.ggpht.com/_qd3TDEvIh4Y/SScAeVRBlvI/AAAAAAAAA_A/Q1GeIstjvOQ/s1600-h/image%5B93%5D.png
8. http://lh4.ggpht.com/_qd3TDEvIh4Y/SScAfLXYJ0I/AAAAAAAAA_I/2QU7deJJCW0/s1600-h/image%5B94%5D.png
9. http://lh4.ggpht.com/_qd3TDEvIh4Y/SScAgYSrxpI/AAAAAAAAA_Q/-VRB4YnpEpg/s1600-h/image%5B95%5D.png
10. http://lh3.ggpht.com/_qd3TDEvIh4Y/SScAhqXBH3I/AAAAAAAAA_Y/8tYKaUP8hNE/s1600-h/image%5B96%5D.png
11. http://lh6.ggpht.com/_qd3TDEvIh4Y/SScAjFhKlaI/AAAAAAAAA_g/h54xQQcVKPw/s1600-h/image%5B44%5D.png
12. http://lh5.ggpht.com/_qd3TDEvIh4Y/SScAkwkiroI/AAAAAAAAA_o/A51YHdZT1kA/s1600-h/image%5B97%5D.png
13. http://lh4.ggpht.com/_qd3TDEvIh4Y/SScAlmmycsI/AAAAAAAAA_w/v2QtxRIhF90/s1600-h/image%5B57%5D.png
14. http://lh6.ggpht.com/_qd3TDEvIh4Y/SScAmnNIycI/AAAAAAAAA_4/ZHn83auPVzs/s1600-h/image%5B87%5D.png
15. http://lh6.ggpht.com/_qd3TDEvIh4Y/SScAnllI39I/AAAAAAAABAA/CN0KnZ-qX88/s1600-h/image%5B89%5D.png
16. http://lh3.ggpht.com/_qd3TDEvIh4Y/SScAoYUqcuI/AAAAAAAABAI/nm0JdKZQPV8/s1600-h/image%5B98%5D.png
17. http://lh5.ggpht.com/_qd3TDEvIh4Y/SScAqGQFj5I/AAAAAAAABAQ/_Vu8RP6ad-Q/s1600-h/image%5B90%5D.png
18. http://lh3.ggpht.com/_qd3TDEvIh4Y/SScArIQvPAI/AAAAAAAABAY/psPQZqLgzGE/s1600-h/image%5B91%5D.png

OBIEE Excel count distinct error (2008-11-22 11:21)

I have a simple Excel sheet imported into OBIEE:


189
[1]

If I do a count it works fine:

[2]

But if I do a count distinct I get an error:

[3]

Error Codes: OPR4ONWY:U9IM8TAC:OI2DL65P


State: HY000. Code: 10058. [NQODBC] [SQL STATE: HY000] [nQSError: 10058] A
general error has occurred. [nQSError: 16001] ODBC error state: 37000 code: -3100 mes-
sage: [Microsoft][ODBC Excel Driver] Syntax error (missing operator) in query expression
’count(distinct T2207.[F LETTER])’.. [nQSError: 16014] SQL statement preparation failed.
(HY000)

This is causes by the fact that Microsoft Excel doesn’t know the ”COUNT DISTINCT” command.

You can fix this by deselecting the count distinct feature in the database properties:
190
[4]

Now it works perfect:

[5]

Till next time

1. http://lh4.ggpht.com/_qd3TDEvIh4Y/SSfdJUWzWkI/AAAAAAAABAg/RZGPmfm77ro/s1600-h/image%5B2%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/SSfdJ6Jcd_I/AAAAAAAABAo/awidkT1mSw4/s1600-h/image%5B5%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/SSfdK5vldsI/AAAAAAAABAw/uV-dLjcawSs/s1600-h/image%5B8%5D.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/SSfdLlgKRlI/AAAAAAAABA4/7ZgslkhDwKQ/s1600-h/image%5B16%5D.png
5. http://lh3.ggpht.com/_qd3TDEvIh4Y/SSfdOg_Rv-I/AAAAAAAABBA/L5jtws_S7yQ/s1600-h/image%5B19%5D.png

OBIEE Presentation server on IIS (2008-11-24 02:04)

Instead of using OC4J or the Oracle Application Server the OBIEE presentation server can also run
on Microsoft’s Internet Information Services (IIS). If your not running IIS and the OBIEE Presentation
server on the same box, or didn’t install IIS before the you installed OBIEE, here is a way to configure
it:

Open the IIS Manager


191
[1]

Create a Web Site configuration on the IIS:

[2]

[3]

Click next
192
[4]

Enter a name for your web site configuration. Click next.

[5]

Leave to default values. Click next.


193
[6]

Enter the web site home directory, usually ..\Inetpub\wwwroot. Click next.

[7]

Leave to default. Click Next.


194
[8]

Click Finish.

Add the virtual directory’s:

[9]

analytics => ..\OracleBI\web\app


195
[10]

[11]

Leave to default. Click next.


196
[12]

Click Finish

analytics => ..\OracleBIData\web\res

[13]
197
[14]

Leave to default. Click next.

[15]

Click Finish

Setting permissions ”analytics”


198
[16]
Set execute permissions to ”Scripts and Executables”.

[17]
Check the Web Service Extension permissions for the saw.dll
Till Next Time
Edit: Jeff gives some info on using this on a 64 bit pltafrom:
199
[18]http://it.toolbox.com/blogs/achieving-great-bi/obiee-on-vist a-64bit-with-iis-70-29882
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/SSmbYJmxhhI/AAAAAAAABBI/1wnH5qTEXj0/s1600-h/image3.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SSmbZW1KFcI/AAAAAAAABBQ/CiRsM-apv8Q/s1600-h/image8.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/SSmba1G31yI/AAAAAAAABBY/3DTkOMS0uQU/s1600-h/image9%5B1%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SSmbb3a1nxI/AAAAAAAABBg/3hhtr4Mlq6c/s1600-h/image12%5B2%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/SSmbcnJ2lJI/AAAAAAAABBo/z1bTEQMe29g/s1600-h/image15%5B2%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/SSmbd6DHEwI/AAAAAAAABBw/ZmI5_w7csRY/s1600-h/image30%5B2%5D.png
7. http://lh3.ggpht.com/_qd3TDEvIh4Y/SSmbez7OCGI/AAAAAAAABB4/srh-cCTOSFc/s1600-h/image24%5B2%5D.png
8. http://lh5.ggpht.com/_qd3TDEvIh4Y/SSmbgOIvhsI/AAAAAAAABCA/qvcqosCsnzU/s1600-h/image33%5B2%5D.png
9. http://lh5.ggpht.com/_qd3TDEvIh4Y/SSmbhA1_-4I/AAAAAAAABCI/7VT5yIBKaDA/s1600-h/image36%5B2%5D.png
10. http://lh6.ggpht.com/_qd3TDEvIh4Y/SSmbiItoTnI/AAAAAAAABCQ/yRun-CRi6ZA/s1600-h/image39%5B2%5D.png
11. http://lh3.ggpht.com/_qd3TDEvIh4Y/SSmbjs63yZI/AAAAAAAABCY/F0DZyPHxtVY/s1600-h/image%5B13%5D.png
12. http://lh5.ggpht.com/_qd3TDEvIh4Y/SSmbk9sIRcI/AAAAAAAABC4/zxttM-Wfg88/s1600-h/image45%5B2%5D.png
13. http://lh5.ggpht.com/_qd3TDEvIh4Y/SSmbmIfbNiI/AAAAAAAABCo/zYZGsSwVBq8/s1600-h/image48%5B2%5D.png
14. http://lh4.ggpht.com/_qd3TDEvIh4Y/SSmbnf6RQeI/AAAAAAAABCw/v7pb7Lu89S4/s1600-h/image%5B14%5D.png
15. http://lh5.ggpht.com/_qd3TDEvIh4Y/SSmbk9sIRcI/AAAAAAAABC4/zxttM-Wfg88/s1600-h/image45%5B2%5D.png
16. http://lh4.ggpht.com/_qd3TDEvIh4Y/SSmbpG8ak8I/AAAAAAAABDA/AIkaj8GIrgo/s1600-h/image%5B12%5D.png
17. http://lh3.ggpht.com/_qd3TDEvIh4Y/SSmbqNxhPII/AAAAAAAABDI/aSWb6NRlKSE/s1600-h/image57%5B3%5D.png
18. http://it.toolbox.com/blogs/achieving-great-bi/obiee-on-vista-64bit-with-iis-70-29882

OBIEE Let’s Get Professional (2008-11-27 03:27)

Recently I was asked to have a look a some development work from some off-shore companies as part of
a vendor selection. This triggered me to make a small random order check list of does and don’ts before
your send your material to your customer. If you know any more, let me know and I will add them to
the list.

• Don’t do your development as an extension of the PAINT or SALES rpd. Start with a clean one.

• Replacing the Oracle logo with your own Company logo, sending in the SALES webcat as a Proof
Of Concept, claiming 10k as costs, is not only very stupid, it’s illegal / criminal!

• Do a consistency check before you send it to the customer.

• Don’t do any customizations in S(K) ORACLE10 directory, create a new one.

• Check which version of OBIEE your customer is using.

• Clean the RPD of test users.

• Remove any test material from the RPD.

• Start with a clean WEBCAT.

• Develop shared filters directly as shared filters, do not copy them.

• DO NOT USE other customers data in a Proof Of Concept for a new lead.

• If the customer gives you test data in separated XLS sheets, try merging them into one sheet, this
will save a lot of time configuring ODBC connections.

• Don’t go overboard with the aggregate persistence wizard. 400 aggregate tables on one fact table
is plain stupid. If a customer really needs that, try selling them a product like ESSBASE.

• Install a version control system. (Don’t forget to check in/out !)


200
• Develop your reports based on the customers screen size, most will still be on 17” (1024 x 768).

• Check your calculations against common sense: a ¬50,– per year / per employee turnover should
might be a good indicator that the calculation is wrong.

• Check your calculations against common sense: a .0004 % annual growth 5 years in a row is very
very strange.......

• Have one standard for graphs; 2D graphs are better ”readable” then 3D.

• Keep your reports to one colour schema.

• Document your work!

• Try to avoid case 1=0 constructions in your prompts, use a proper LOV table.

• 27/11/08: Adrian Ward: When doing a presentation to the client, run through it first to cache the
results. It will be far more impressive.

• 28/11/08: Bytus: Never try to recreate the Excel ”requirements specifications”, screenshots of old
systems or Powerpoint mock-ups 1:1 at all costs. Work towards the best approximation which
satisfies the actual clients needs (not his wishes) while bringing forward the strong points of OBI
EE. (It can never be an Excel!)

• 03/05/08: Sunil: Above all be truthful and claim only what you know.

• 19/01/09: John Minkjan: Create different connection pools for different user groups

• 19/04/09: John Minkjan: Read Stephen Few: Information Dashboard Design: The Effective Visual
Communication of Data

• 06/05/10: John Minkjan: Use display folders to organize your work.

• 28/06/10: John Minkjan: Don’t use SYSTEM accounts in your connection pool

Till Next Time

OBIEE Sort Order Column property (2008-11-28 02:06)

A customer had the following problem with his dates dimension:


201
[1]
The month year part of the date dimension wasn’t sorted in the right way. He forgot to assign a sort
column (format (’YYYYMM’)):

[2]
The preferred result:

[3]
202
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/SS-mfZaviOI/AAAAAAAABDU/Ewfi-5UAugg/s1600-h/image%5B9%5D.png
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/SS-mgZgJUWI/AAAAAAAABDc/y6i-1v2nzAI/s1600-h/image%5B5%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/SS-mhkb_rZI/AAAAAAAABDk/q7nG7QPbvac/s1600-h/image%5B13%5D.png

OBIEE AGO and TODATE Series (2008-11-29 02:34)

Have a look a these two tables:

[1] [2]
Let’s create a MONTH YEAR AGO Column:

[3]
Have a look at the result:

[4]
203
....some thing is not right here....

Let’s investigated the date dimension:

[5]

Looks alright? Have a look again without year and month:


204
[6]

We have a sorting issue here, so let’s add a sorting column:

[7]

[8]

OK that’s fixed, let’s go back to our report:


205
[9]
Still a problem there, let’s sort the chronological key:

[10]

[11]
That really fixed the problem!
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/SS-tWxX4BZI/AAAAAAAABDs/Jg7RgXkaj-U/s1600-h/image%5B2%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SS-tX8LFQwI/AAAAAAAABD0/1VML0Pi8YPw/s1600-h/image%5B5%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/SS-tY9lZRdI/AAAAAAAABD8/iU706m9ziVM/s1600-h/image%5B17%5D.png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/SS-taPxjQZI/AAAAAAAABEE/KHuzPDOLj4E/s1600-h/image%5B19%5D.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/SS-tbck_cxI/AAAAAAAABEM/NyhwQOKkuhI/s1600-h/image%5B42%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/SS-tdIogPDI/AAAAAAAABEU/nmlvFxUeRRY/s1600-h/image%5B43%5D.png
7. http://lh4.ggpht.com/_qd3TDEvIh4Y/SS-teE0o31I/AAAAAAAABEc/asLQsypRGco/s1600-h/image%5B28%5D.png
8. http://lh6.ggpht.com/_qd3TDEvIh4Y/SS-te0Vbm9I/AAAAAAAABEk/tnueS-6-vl8/s1600-h/image%5B44%5D.png
9. http://lh3.ggpht.com/_qd3TDEvIh4Y/SS-tglzB0AI/AAAAAAAABEs/93sJTwaFXE8/s1600-h/image%5B45%5D.png

206
10. http://lh5.ggpht.com/_qd3TDEvIh4Y/SS-tiPh9W5I/AAAAAAAABE0/K1yIoyg4osA/s1600-h/image%5B38%5D.png
11. http://lh4.ggpht.com/_qd3TDEvIh4Y/SS-tiz4pKKI/AAAAAAAABE8/w7t-SX6gQHM/s1600-h/image%5B46%5D.png

2.12 December

OBIEE Handling SCF data / PIT Reporting (2008-12-03 23:35)

Due to more and more compliance rules a lot of DWH’s these days have there data stored based on the
SCF principal (Slowly Chancing Fact). A typical example of SCF data is the state of an order:

[1]
If you want to do PIT reporting (Point In Time) you need to use the SCF columns:

[2]
One possible solution track is using creating a SCF IS PIT column in the repository based on a repository
variable.
First let’s create a PIT DATE session variable:

[3]
Next create the column:
207
[4]
Our data will now look like this (Current date = 03-DEC-2008”):

[5]
If we add a filter to our report :

[6]
we only get ”CURRENT” data:

[7]
For most users this is the information they are looking for. For those who need to go ”back in time” with
the same report, you simple add a prompt to the dashboard allowing them to set the PIT date:

[8]
Till Next Time
208
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/STZvNuNq0fI/AAAAAAAABFk/k25HoSDcrnY/s1600-h/image%5B25%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/STZvQEY4JuI/AAAAAAAABFs/DV2tDPPB1p8/s1600-h/image%5B5%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/STZvSkoOFsI/AAAAAAAABF0/IFNiYd5AjMw/s1600-h/image%5B9%5D.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/STZvUeP0H-I/AAAAAAAABF8/gdZJgSJlon8/s1600-h/image%5B16%5D.png
5. http://lh3.ggpht.com/_qd3TDEvIh4Y/STZvXlXGe7I/AAAAAAAABGE/ND8gSNV5siQ/s1600-h/image%5B17%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/STZvZvk7YYI/AAAAAAAABGM/jTn7jYOdbv8/s1600-h/image%5B20%5D.png
7. http://lh5.ggpht.com/_qd3TDEvIh4Y/STZva2QjFcI/AAAAAAAABGU/guimFuM1vpY/s1600-h/image%5B24%5D.png
8. http://lh4.ggpht.com/_qd3TDEvIh4Y/STZvcUOYwZI/AAAAAAAABGc/N3ayfXV98Kk/s1600-h/image%5B29%5D.png

OBIEE101 First Birthday (2008-12-04 00:00)

Yes, OBIEE101 has become 1 today! Thanks everybody for the On- and Off-line input!

[1]
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/SS-w-XkKTPI/AAAAAAAABFE/eArUueDtRcA/s1600-h/Birthday_candles_
OBIEE101%5B3%5D.jpg

OBIEE 1K Status (2008-12-04 08:10)

Not only is it our first birthday today, but we also passed the 1K pageview per day border for the first
time. Another proof that OBIEE is alive and kicking!
:-) Till Next Time

OBIEE BI-Publisher Templates (2008-12-04 20:24)

Found this one on the NET:


[1]http://www.oracle.com/technology/products/xml-publisher/demos helf/Shelf.html
Till Next Time
1. http://www.oracle.com/technology/products/xml-publisher/demoshelf/Shelf.html

OBIEE Missing BI-Office add - in (2008-12-05 21:08)

Erik did a good one: [1]http://bidwcz.blogspot.com/2008/12/chybj c-bi-office-add-in-me-se-to-stt-i.html


But since most of you (including me :) ) don’t speak or read Czech here is a translated summery:
If you a ”missing” the OBIEE office plug in after you did an install and think it should be there, try this:
In your MS Office application grotto Help> About MS Office> Disabled Items >

[2]
209
Press Disabled Items and check if the OBIEE Office add in is the list.

Till Next Time

1. http://bidwcz.blogspot.com/2008/12/chybjc-bi-office-add-in-me-se-to-stt-i.html
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/STZ2o-d3oCI/AAAAAAAABGk/X-F2RMOG5j0/s1600-h/image%5B4%5D.png

OBIEE using timeline graphs in pivot views (2008-12-06 22:39)

Consider the following data:

[1]

If we put this in a timeline graph we get:

[2]

One of our customers wanted to use the graph from a pivot view to create an individual graph for each
machine.

One problem.... Oracle forgot to make it available for the pivot view, it’s not in the graph select dropdown
list:
210
[3]
My colleague Rob van Beek found a workaround. Go to the advanced tab of the report:

[4]
In the Request XML look for the ”pivotTableView” part.

[5]
Change the saw:template tid to :
<saw:template tid=”charts/linetime.cxml”

Press the set XML button:[6] , go to the pivot view:


You will get a warning like this:

[7]
This is because the pivot view template doesn’t know timeline graphs. If you really want you can probably
hack OBIEE to suppress the warning, but I would just leave it like this.
Press OK to ignore the warning.
In your Compound lay-out you can see the results:
211
[8]

Till Next Time

This article was originally written for the Ciber knowledge blog:
[9]http://knowledge.ciber.nl/weblog/?p=157

1. http://lh3.ggpht.com/_qd3TDEvIh4Y/STrwrqOCdfI/AAAAAAAABG0/kEyGDTWigOM/s1600-h/image%5B6%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/STrwsmyvY4I/AAAAAAAABG8/DdGH9G74pfo/s1600-h/image%5B11%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/STrwt1vW2FI/AAAAAAAABHE/VTx4z_DfelM/s1600-h/image%5B15%5D.png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/STrwvIAUzdI/AAAAAAAABHM/jJamfzATns4/s1600-h/image%5B19%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/STrxDNUXClI/AAAAAAAABHU/mWdn2ETg-2E/s1600-h/image%5B23%5D.png
6. http://lh5.ggpht.com/_qd3TDEvIh4Y/STrxDyIjbWI/AAAAAAAABHc/qXH0U5SqkKU/s1600-h/image%5B26%5D.png
7. http://lh5.ggpht.com/_qd3TDEvIh4Y/STrxEin40mI/AAAAAAAABHk/CNjEQpdVF_Q/s1600-h/image%5B44%5D.png
8. http://lh3.ggpht.com/_qd3TDEvIh4Y/STrxH3FFMbI/AAAAAAAABHs/iYkFJhPoS_c/s1600-h/image%5B45%5D.png
9. http://knowledge.ciber.nl/weblog/?p=157

OBIEE BI Publisher Login Errors (2008-12-06 22:45)

Good tip from Kevin:


[1]http://oraclebi.soundvoid.net/2008/12/bi-publisher-login-erro rs/
Till Next Time

1. http://oraclebi.soundvoid.net/2008/12/bi-publisher-login-errors/

OBIEE Breadcrum trail (2008-12-07 20:07)

Sunil did another great one!


[1]http://sranka.wordpress.com/2008/12/07/how-to-implement-bread crumb-in-obiee/
Till Next Time

1. http://sranka.wordpress.com/2008/12/07/how-to-implement-breadcrumb-in-obiee/

212
OBIEE Hidding a section (2008-12-08 13:40)

Sometime you need to hide a section on a dashboard (temporarily)


Go to the ”Format Section” part of your dashboard section:

[1]
Open the ”Custom CSS Style Options

[2] ”
Enable the ”Use Custom CSS Style ” enter display:none
Till Next Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/ST0VsEr8WyI/AAAAAAAABH0/c7spQMnU-9U/s1600-h/image%5B5%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/ST0Vsw3WN-I/AAAAAAAABH8/5FAI7Lw6FkY/s1600-h/image%5B2%5D.png

OBIEE First / Last of month (2008-12-08 20:25)

OBIEE doesn’t have a built in function for the first and or last of a month. This can be easily achieved
by the follwing functions:
First of month:

TIMESTAMPADD(SQL TSI DAY, ( DAYOFMONTH(CURRENT DATE) * -1) + 1,


CURRENT DATE)

Last of month:

TIMESTAMPADD(SQL TSI DAY,DAYOFMONTH(CURRENT DATE) * -1 , TIMES-


TAMPADD(SQL TSI MONTH, 1, CURRENT DATE))

Till Next Time


213
OBIEE First / Last day previous week (2008-12-09 02:04)

First day of the previous week:

TIMESTAMPADD(SQL TSI DAY,-6, (TIMESTAMPADD(SQL TSI DAY, DAY-


OFWEEK(CURRENT DATE) *-1,CURRENT DATE)))

Last day of the previous week:

TIMESTAMPADD(SQL TSI DAY, DAYOFWEEK(CURRENT DATE) *-1,CURRENT


DATE)

Till Next Time

OBI Forum Live Vergeet je niet in te schrijven (2008-12-09 09:05)

Ze Bloggen en Loggen... Ontmoet ze nu op OBI FORUM LIVE


CIBER, InCore Solutions en Scamander zijn toonaangevende bedrijven op het gebied van Oracle s BI
Suite. John Minkjan (CIBER), Remco van Dam (InCore Solutions), Daan Bakboord (Scamander) en
Gerard Braat (Oracle) zijn Nederland s bekendste en beste (b)loggers op dit vlak. Op de nationale en
internationale fora zijn ze bekende personen en leveren ze een zeer belangrijke bijdrage aan de kennisdeling.
Nú heeft u de mogelijkheid om deze 4 belangrijkste spelers persoonlijk te ontmoeten en met ze te sparren .
Neem gewoon uw eigen vragen mee en ontdek de geheimen van OBI!
Op 14 januari 2009 is de eerste editie van OBI Forum Live. Een initiatief van CIBER, InCore Solutions
en Scamander, in samenwerking met Oracle Nederland. OBI Forum Live zal plaatsvinden bij Oracle
Nederland in De Meern.
Schrijf je nu in op [1]http://www.obi-forumlive.nl/
1. http://www.obi-forumlive.nl/

OBIEE bypassing the presentation / web cache (2008-12-09 17:54)

In addition to settings mentioned in this article: [1]http://obiee101.blogspot.com/2008/11/obiee-


presentation-servi ces-cache.html. You sometimes you want to bypass the presentation / cache for devel-
opment purposes. Or more often when you get weird write back behaviour. Add this to the instanceconfig
file:

<CacheMaxExpireMinutes>-1</CacheMaxExpireMinutes>
<CacheMinExpireMinutes>-1</CacheMinExpireMinutes>
<CacheMinUserExpireMinutes>-1</CacheMinUserExpireMinutes>

Till Next Time


1. http://obiee101.blogspot.com/2008/11/obiee-presentation-services-cache.html

OBIEE LOV prompts (2008-12-11 20:16)

The classical way of making a LOV prompt is creating SQL in the form:

SELECT case 1=0 then TABLE.COLUMN else ”YES” end from BM NAME union all
SELECT case 1=0 then TABLE.COLUMN else ”NO” end from BM NAME
214
This always produces costly SQL since OBIEE will execute this as a SELECT DISTINT against the
reference table.
Much better is to add a small LOV table to repository with it’s own business model. I created a small
XLS spreadsheet with a couple of LOV’s:

[1]
Next I imported it into the repository and create the dim version of the LOV:

[2]
Made a very simple business model for it:

[3]
And of course a presentation layer:

[4]
Now you can create each LOV prompt as a direct SQL request:

[5]
215
SELECT LOV.LOV VALUE FROM BM LOV WHERE LOV.LOV TYPE =
’BOOLEAN’ ORDER BY LOV.LOV SORT

The result can be stored in a presentation or a repository variable for late processing:

[6]
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/ST0tXIoay7I/AAAAAAAABIE/FI72hubny2s/s1600-h/image%5B3%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/ST0tY8U_0fI/AAAAAAAABIM/5fKyhrbOdks/s1600-h/image%5B6%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/ST0tZyvD0RI/AAAAAAAABIU/yYw6QwChskM/s1600-h/image%5B9%5D.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/ST0tbNmWUmI/AAAAAAAABIc/UpklTVRt_6k/s1600-h/image%5B12%5D.png
5. http://lh3.ggpht.com/_qd3TDEvIh4Y/ST0tchATQkI/AAAAAAAABIk/hqIVu8ye_vk/s1600-h/image%5B15%5D.png
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/ST0tdif_TLI/AAAAAAAABIs/P2FY2O8uvPE/s1600-h/image%5B18%5D.png

OBIEE MetaData Dictionary (2008-12-12 23:59)

The metadata dictionary is a very powerful support package within OBIEE. Sadly it is not commonly
used at this moment. This is mainly caused by the fact that the functionality is very poorly
documented by Oracle.

This article describes the configuration and implementation of the OBIEE metadata dictionary both on
an OC4J and an IIS web services. (Other web services can be easily configured based on of these
systems)

[1][2][3][4]
Prerequisites

The account used for implementing this functionality must have full access to:

• The source repositories

• The Presentation server.

• The Web server.

Generating the metadata dictionary

Open the repository in Offline mode:

[5]

Go to tools utilities:
216
[6]
Select Generate Metadata Dictionary:

[7]
Select a destination directory:

[8]
On successful finish you will get:

[9]
If you are replacing you might get this:

[10]
217
Navigate to your {OBIEE MetaData Dictionary }\ {repository name }

[11]
Open NameIndex in a browser to check the readability.

[12]
Open TreeIndex in a browser to check the readability.

[13]
218
OC4J Prerequisites
First we have to tell the presentation server where to find the dictionary. This is configured in the
INSTANCECONFIG.XML file. Usually this file is found in {OracleBIDate }\web\config.
Open the file and add:

<SubjectAreaMetadata>
<DictionaryURLPrefix>/analytics/dictionary/</DictionaryURLPrefix>
</SubjectAreaMetadata>
between the <WebConfig> tags.

[14]
WOW: Some OBIEE config tags and the contents are CaSe SeNsItIvE!
OC4J web server
Create the dictionary directory in the analytics application folder:

[15]
Usually {OracleBI }\oc4j bi\j2ee\home\applicatio n\analytics\analytic. (it s the folder where your
SAW.DLL is located).
Copy the content of your dictionary export folder to this folder:

[16]
Restart the presentation server

[17]
219
Log in as administrator in answer, select the subject area:

[18]

Click on the dictionary symbol:

[19]

ISS Prerequisites

Create a new virtual directory in your IIS manager

[20]

Add the virtual directory to your INSTANCECONFIG.XML. Usually this file is found in
{OracleBIDate }\web\config.

<SubjectAreaMetadata>
220
<DictionaryURLPrefix>/analyticsDictionary/</DictionaryURLPrefix>

</SubjectAreaMetadata>

[21]

WOW: Some OBIEE config tags and the contents are CaSe SeNsItIvE!

Restart the presentation server

[22]

Log in as administrator in answer, select the subject area:

[23]

Click on the dictionary symbol:

[24]

[25]Granting access to the metadata dictionary

Log in as administrator

Go Settings > Administration


221
[26]

Select manage privileges:

[27]

Select access to Metadata Dictionary

[28]

By default this is set to everyone.

Till Next Time

This article was orignally written for the Ciber knowledge blog: [29]http://knowledge.ciber.nl/weblog/

EDIT: This Feature is availible from 10.3.4

1. file://localhost/mnt/ext/blogbooker/tmp/sm6j0byg/sm6j0byg-body.tex.lynx.html
2. file://localhost/mnt/ext/blogbooker/tmp/sm6j0byg/sm6j0byg-body.tex.lynx.html
3. file://localhost/mnt/ext/blogbooker/tmp/sm6j0byg/sm6j0byg-body.tex.lynx.html
4. file://localhost/mnt/ext/blogbooker/tmp/sm6j0byg/sm6j0byg-body.tex.lynx.html
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/SUEQ0L5mjsI/AAAAAAAABI0/eOGowjRgvy8/s1600-h/clip_image0026.jpg
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/SUEQ2JIF1qI/AAAAAAAABI8/B7VWtyp8Hpw/s1600-h/clip_image0045.jpg
7. http://lh4.ggpht.com/_qd3TDEvIh4Y/SUEQ4JAOo6I/AAAAAAAABJE/LaGD487aGOU/s1600-h/clip_image006%5B1%5D.jpg
8. http://lh4.ggpht.com/_qd3TDEvIh4Y/SUEQ6PoCQuI/AAAAAAAABJM/sohVstGBTWw/s1600-h/clip_image0085.jpg
9. http://lh6.ggpht.com/_qd3TDEvIh4Y/SUEQ7iRqCAI/AAAAAAAABJU/9Np85RMdosg/s1600-h/clip_image0104.jpg
10. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUEQ89AUefI/AAAAAAAABJc/60v6LQ2Nffg/s1600-h/clip_image0124.jpg
11. http://lh4.ggpht.com/_qd3TDEvIh4Y/SUEQ_DEKFCI/AAAAAAAABJk/_O882iqeqlY/s1600-h/clip_image0144.jpg
12. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUERBS4-7YI/AAAAAAAABJs/zZgIqlc5U0M/s1600-h/clip_image0164.jpg
13. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUERDMTXmbI/AAAAAAAABJ0/NIOEwCPnaIA/s1600-h/clip_image0184.jpg
14. http://lh4.ggpht.com/_qd3TDEvIh4Y/SUERFWLhNEI/AAAAAAAABJ8/D6qJAuJ5euY/s1600-h/clip_image020%5B1%5D.jpg
15. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUERHFXfePI/AAAAAAAABKE/E5gYKOV4FOw/s1600-h/clip_image022%5B1%5D.jpg
16. http://lh4.ggpht.com/_qd3TDEvIh4Y/SUERI54zFJI/AAAAAAAABKM/nbhOQbaBYr8/s1600-h/clip_image024%5B1%5D.jpg
17. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUERLKXnimI/AAAAAAAABKU/v3BTlHGP1mY/s1600-h/clip_image026%5B1%5D.jpg
18. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUERMzpE7lI/AAAAAAAABKc/TiJ-M7j2XHE/s1600-h/clip_image0297.jpg
19. http://lh6.ggpht.com/_qd3TDEvIh4Y/SUERN8S57LI/AAAAAAAABKk/bRlDD845cLc/s1600-h/clip_image031%5B1%5D.jpg
20. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUERPWAC0qI/AAAAAAAABKs/AmLYVMT7vOY/s1600-h/clip_image0334.jpg
21. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUERQuKB6kI/AAAAAAAABK0/0OH3Zs3AwGQ/s1600-h/clip_image035%5B1%5D.jpg
22. http://lh6.ggpht.com/_qd3TDEvIh4Y/SUERSCBI39I/AAAAAAAABK8/1hOyit03L-A/s1600-h/clip_image0261%5B1%5D.
jpg
23. http://lh4.ggpht.com/_qd3TDEvIh4Y/SUERTQk5CSI/AAAAAAAABLE/NXeShz4dc84/s1600-h/clip_image02914.jpg
24. http://lh4.ggpht.com/_qd3TDEvIh4Y/SUERUZz1tMI/AAAAAAAABLM/NZjsod-qnRc/s1600-h/clip_image0311%5B1%5D.
jpg
25. file://localhost/mnt/ext/blogbooker/tmp/sm6j0byg/sm6j0byg-body.tex.lynx.html

222
26. http://lh6.ggpht.com/_qd3TDEvIh4Y/SUERWBgoVEI/AAAAAAAABLU/H78LsvxJmfQ/s1600-h/clip_image0375.jpg
27. http://lh4.ggpht.com/_qd3TDEvIh4Y/SUERXsBUqoI/AAAAAAAABLc/4d0R8anm_DQ/s1600-h/clip_image039%5B1%5D.jpg
28. http://lh6.ggpht.com/_qd3TDEvIh4Y/SUERYrwCJtI/AAAAAAAABLk/wf0bs9vi5rE/s1600-h/clip_image041%5B1%5D.jpg
29. http://knowledge.ciber.nl/weblog/

OBIEE Automating the Metadata dictionary repository updates (2008-12-17 21:12)

In a previous article: ([1]http://obiee101.blogspot.com/2008/12/obiee-metadata-dictio nary.html) I


showed you how to setup the OBIEE Metadata dictionary. In practice people tend to forget to up-
date this dictionary when the repository is brought to production and it tens to get outdated over a
period of time.
This can be easily solved by automating the creation of the metadata dictionary.
step 1: Create a command file
Create a small command file called: nQMetaDataExport.txt (or which ever name you like)

Add the following text:


Open samplesales.rpd Administrator AdministratorPassword
Hide
GenerateMetadataDictionary {\MetadataDictionaryFolder }
Close
Exit

[2]
step 2: Create a scheduler command
Kick of:
{OracleBI }\server\Bin>admintool /command {YournQCommandDirectory }:/nQMetaDataExport.txt
every day/week/month
WOW: The command line switch of the admintool is not supported by Oracle.
Till Next Time
1. http://obiee101.blogspot.com/2008/12/obiee-metadata-dictionary.html
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/SUYgCuBtEWI/AAAAAAAABME/UwLFPBGkBzw/s1600-h/clip_image002%5B5%5D.jpg

OBIEE Google Chrome redux (2008-12-19 12:47)

Google released there first non-beta version of Chrome. Tried it again, it now works fine with OBIEE
Dashboards, didn’t have any freezes. Still doesn’t work right in answer if you have a metadatadictionary
configured.
IExplorer:
223
[1]

Google Chrome:

[2]

Decided to unistall it for the time being.........

This is an reaction for this article: [3]http://obiee101.blogspot.com/2008/09/obiee-google-chrome.html

Till Next Time

1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUuJuNoZ57I/AAAAAAAABMk/JrQMqzr2970/s1600-h/image%5B2%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUuJvfkAOXI/AAAAAAAABMs/IMfCq2ykJIw/s1600-h/image%5B5%5D.png
3. http://obiee101.blogspot.com/2008/09/obiee-google-chrome.html

OBIEE Creating Bookmark and or Prompted URL (2008-12-21 15:11)

By default the Create Bookmark Link is enabled in the dashboard page options menu:

[1]

This can be control in the instanceconfig.xml file:

<Dashboard>
<EnableBookmarkURL>True</EnableBookmarkURL>
</Dashboard>

Setting this to false gives:


224
[2]
When selecting Create Bookmark Link you get an URL giving back the same prompt settings.
An other option is creating a Prompted URL. This stores the value of the used prompts in the URL (Like
goUrl) and allows you to edit the values.
This functionality is enabled in the instanceconfig.xml file:

<Dashboard>
<EnablePromptedURL>True</EnablePromptedURL>
</Dashboard>

[3]
The URL will look something like:

[4]http://vmobiee:9704/analytics/saw.dll?Dashboard & scid=sccbLaQP0rs &Portal-


Path= %2Fshared %2FSample %20Sales %2F portal %2F01 %20Ranks %20 %26 %20Top-
pers &Page=11 %20Multi %20Dim %20TopNs &Action=Navigate &col1=1 &val1=”7”
&col2= %22D0 %20Time %22. %22T05 %20Per %20Name %20Year %22 &val2=”2007”
&col3= %22D4 %20Product %22. %22P04 %20 %20Brand %22 &val3=”Brand %203”

Before sending the URL to somebody you can ”edit” the prompt values somewhat. If you want to this
programmatically use the goUrl functionality.
You can set the ”lifespan” of the bookmark with the <BookmarkExpirationDays> tags:

<Dashboard>
<EnableBookmarkURL>True</EnableBookmarkURL>
<EnablePromptedURL>True</EnablePromptedURL>
<BookmarkExpirationDays>30</BookmarkExpirationDays>
</Dashboard>

Till Next Time


1. http://lh3.ggpht.com/_qd3TDEvIh4Y/SUZmKlzmyiI/AAAAAAAABMM/2qoNr15FzBE/s1600-h/image2.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUZmL96b8dI/AAAAAAAABMU/7Tmi38cvBvE/s1600-h/image5.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUZmM8Nr7QI/AAAAAAAABMc/eJpWpXJ3YDY/s1600-h/image8.png
4. http://vmobiee:9704/analytics/saw.dll?Dashboard&_scid=sccbLaQP0rs&PortalPath=%2Fshared%2FSample%
20Sales%2F_portal%2F01%20Ranks%20%26%20Toppers&Page=11%20Multi%20Dim%20TopNs&Action=Navigate&col1=1&val1=

225
OBIEE Keep a clean desk (2008-12-24 14:58)

When developing a repository the screen can be pretty crowded:

[1]
Since you are usually only working in one area at a time, why don’t ”switch off” the others to get more
working space:

[2]

[3]
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/SUuoxV1PHPI/AAAAAAAABM0/PzNVlNjttjI/s1600-h/image%5B3%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUuozg7_3gI/AAAAAAAABM8/4Yy5oANIIrI/s1600-h/image%5B6%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/SUuo9cUcuCI/AAAAAAAABNE/wT0Dx9DMknk/s1600-h/image%5B11%5D.png

BI Consultant van 2008 (2008-12-29 22:54)

Altijd goed voor je ego, genomineerd worden voor BI consultant 2008 voor Nederlandstallige BI gemeen-
schap. zie [1]http://www.bidutch.nl/. Omringt door grote OBIEE namen als Stijn Gabriels en Daan
Bakboord. Dus als je BI nieuws volgt in het Nederlands, breng je stem uit!
Always great for the ego, being nominated for BI consultant 2008 by the Dutchspeaking BI commu-
nity. see: [2]http://www.bidutch.nl/. Surrounded by great OBIEE names like Stijn Gabriels and Daan
Bakboord. So if you follow BI news in Dutch, cast your vote!
Till Next Time
1. http://www.bidutch.nl/
2. http://www.bidutch.nl/

226
Chapter 3

2009

3.1 January

Have a great Year! (2009-01-01 00:00)

Till Next Time

OBIEE Cache and VPD (2009-01-01 15:50)

Kumar did a great article on the behaouvior of the OBIEE cache with an virtual private database.
[1]http://obieeblog.wordpress.com/2008/12/29/obiee-and-virtual-p rivate-database-vpd/
Till Next Time
1. http://obieeblog.wordpress.com/2008/12/29/obiee-and-virtual-private-database-vpd/

227
OBIEE and Wiki (2009-01-01 21:04)

One of the recent trends is to create a project wiki when a project starts and keep all documentation, tips
and tricks in there from day one. For our projects we always use XWIKI ([1]http://enterprise.xwiki.org/).
It’s simple to set up, you can use it within an OAS or OC4J but also standalone.
But with all Wiki’s, Blogs or any other form of documentation, if it’s not maintained / up to date people
won’t use it .....
Till Next Time
1. http://enterprise.xwiki.org/

OBI Forum Live Vergeet je niet in te schrijven !LAATSTE KANS! (2009-01-05 09:18)

Ze Bloggen en Loggen... Ontmoet ze nu op OBI FORUM LIVE


CIBER, InCore Solutions en Scamander zijn toonaangevende bedrijven op het gebied van Oracle s BI
Suite. John Minkjan (CIBER), Remco van Dam (InCore Solutions), Daan Bakboord (Scamander) en
Gerard Braat (Oracle) zijn Nederland s bekendste en beste (b)loggers op dit vlak. Op de nationale en
internationale fora zijn ze bekende personen en leveren ze een zeer belangrijke bijdrage aan de kennisdeling.
Nú heeft u de mogelijkheid om deze 4 belangrijkste spelers persoonlijk te ontmoeten en met ze te sparren .
Neem gewoon uw eigen vragen mee en ontdek de geheimen van OBI!
Op 14 januari 2009 is de eerste editie van OBI Forum Live. Een initiatief van CIBER, InCore Solutions
en Scamander, in samenwerking met Oracle Nederland. OBI Forum Live zal plaatsvinden bij Oracle
Nederland in De Meern.
Schrijf je nu in op [1]http://www.obi-forumlive.nl/
1. http://www.obi-forumlive.nl/

OBIEE Selecting SKIN and STYLE from URL (2009-01-07 19:02)

Sometimes you want to redirect a user to a different SKIN and or STYLE. One method is giving the
SKIN/STYLE name in the login URL.
To enable this feature you first you have to define a parameterlist in Auth\UserIdPassword part of the
instanceconfig.xml:

<Auth>
<UserIdPassword enabled=”true”>
<ParamList>
<Param name=”NQ SESSION.STYLE” source=”URL” nameInSource=”STL”/>
<Param name=”NQ SESSION.SKIN” source=”URL” nameInSource=”SKN”/>
</ParamList>
</UserIdPassword>
</Auth>

Restart the presentation server. Now add the


SKIN and STYLE to the URL: [1]http://vmobiee:9704/analytics/saw.dll?Dashboard &SKN=siebel77
&STL=siebel77
{Remember to clear your browser cache first! }
Till Next Time
1. http://vmobiee:9704/analytics/saw.dll?Dashboard&SKN=siebel77&STL=siebel77

228
OBIEE Sample Sales (2009-01-08 17:01)

Found some good documentation from Oracle on the new Sample Sales repository in OBIEE:

[1]http://www.oracle.com/technology/products/bi/files/oracle bi sample app content


guide ext part1.zip
[2]http://www.oracle.com/technology/products/bi/files/oracle bi sample app content
guide ext part2.zip

Be aware that it is referencing the extended samples sales (not in the normal OBIEE download) which
can be found here:

[3]http://www.oracle.com/technology/products/bi/files/oracle bi sample analysis


setup files.zip

Till Next Time

1. http://www.oracle.com/technology/products/bi/files/oracle_bi_sample_app_content_guide_ext_part1.zip
2. http://www.oracle.com/technology/products/bi/files/oracle_bi_sample_app_content_guide_ext_part2.zip
3. http://www.oracle.com/technology/products/bi/files/oracle_bi_sample_analysis_setup_files.zip

OBIEE creating large / huge PDF documents (2009-01-09 01:30)

When you try to create big PDF files in OBIEE after a certain size you will get an error like:

A fatal error occurred while processing the request. The server responded with: Error
while exe-
cuting PDFRpcCall.processMessage com.siebel.analytics.utils.InputStreamWithLimit $Read-
OverTheLimitException at com.siebel.analytics.utils.InputStreamWithLimit.incTotalBytes(I
nputStreamWithLimit.java:58) at ...............

Basicly it means that the FOP processor is running out of workspace. The workspace is controlled from
the instanceconfig.xml JavaHost part. Instead of enlarging the default value of 1024 kb you could also
consider setting this to unlimited.

<JavaHost>
<PDF>
<InputStreamLimitInKB>0</InputStreamLimitInKB>
</PDF>
</JavaHost>

Till next Time

OBIEE Leap Year Challenge (2009-01-11 22:21)

Have a look at these tables of February 2008 and 2009: (remember 2008 was a ”leap” year)
229
[1] [2]

If in February 2009 we use the ago function of OBIEE:

AGO(BM AGO TEST.F FACTS.F FACT VAL, BM AGO TEST.DIM DATE


TESTDim.”YEAR”, 1)

On a month level we get:

which is correct. But if we do it on a day by day level we get:[3]


230
Which is not quite correct since it is missing the ”AGO” data for FEB 29 2008 (1232). Now you could
argue that this is correct since there is no FEB 29 2009. Most accounting systems agree that in such a
case the data for FEB 29 should be added to the data of FEB 28. One way of solving this is adding a
Year Ago DATE ID to your date dimensions with a double entry for FEB 28 2009:

[4]

If connect an alias of our fact table to the DT ID YAGO we get:


231
[5] [6]
We see that the data for FEB 28 and FEB 29 2008 is now summarized for FEB 28 2009.
An other advance for working with fixed ago column is your time dimension is that the query costs are
about 80 % percent lower then using the OBIEE AGO function. Is this example 187 versus 853 on as
Oracle 10Gr2 database.
Till Next Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/SWpiqjRRbkI/AAAAAAAABOs/VGdu9R6anuo/s1600-h/image%5B6%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/SWpir2RphMI/AAAAAAAABO0/kqtYJdFoGus/s1600-h/image%5B7%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/SWpit6TxI3I/AAAAAAAABPA/oiD3IYiCR0k/s1600-h/image%5B21%5D.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/SWpiuzUT0nI/AAAAAAAABPI/0PY6kX9QXk8/s1600-h/image%5B28%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/SWpivwzIkCI/AAAAAAAABPQ/XdUPRxBfhb8/s1600-h/image%5B26%5D.png
6. http://lh5.ggpht.com/_qd3TDEvIh4Y/SWpixPX6OvI/AAAAAAAABPY/67KW5xqVZeE/s1600-h/image%5B27%5D.png

OBIEE Cache persistence (2009-01-13 21:54)

Some good investigation done on Cache persistence (by wildmight? couldn’t find the author):
http://obiee-blog.info/metrics/cache-persistence/
extract:

...When a dynamic repository variable is updated, cache is automatically purged. This is


designed behavior. Cache will be invalidated (i.e. purged) whenever the initialization block
that populates dynamic repository variable is refreshed. The reason that refreshing a variable
purges cache is that if a variable was used in a calculation, and the variable changed, then
cache would have invalid data. By purging cache when a variable changes, this problem is
eliminated.
Since this is the designed functionality, Change Request 12-EOHPZ3 titled Repository vari-
able refresh purges cache exists on our database to address a product enhancement request.
The workaround is to go through the dynamic repository variables and verify that the vari-
ables are being refreshed at the correct interval. If a variable needs to be refreshed daily, there
may be a need to set up a cache seeding .bat file that runs after the dynamic variable has
been updated. If the cache seeding .bat file runs prior to the refresh of the dynamic variable
refresh, then the cache will be lost.

Till Next Time


232
OBIEE PROJECT INACCESSIBLE COLUMN (2009-01-15 18:42)

Kumar gave a great alternative for the choose statement by using the PROJECT INACCESSIBLE
COLUMN AS NULL parameter
http://obieeblog.wordpress.com/2009/01/15/obiee-data-security-column -level-security/
Till Next Time

OBIEE Multiple connection pools (2009-01-18 19:33)

In an ideal world the OBIEE development team has his own unlimited hardware, a DBA, an ETL guy/girl,
a data architect / repository builder, some reportbuilders who really know the tool, a dashboard designer
with a good feeling for DTP and off course a project leader. All these functions should be full time
available or at least in the same room and all the noses should be pointing in the same direction.
In the real world the hardware is ”very” limited. The DBA lives on a other continent. The ETL people
have different office hours. The reportbuilders work from there home offices. The dashboard designer
only has a budget of two hours a week and the project manager has twelve projects at the same time.
In this article I want to show you how you as a data architect / repository builder can help the DBA.
Why ? The DBA (if he is any good) controls something very important: Resources. Stuff like CPU
allotment, sorting memory size, cache settings on the DB etcetera. Since resource cost money he will
limit them.
Most BI-Server setups use shared connections to the database. But if we ”generalize” the connection
users we can see several groups:

• Reportbuilders; needs access to all tables, can transport a lot of data during development, are in
the habit of ”killing” query’s when they ”take to long”

• Answers users: create there own ”new” request each time.

• Dashboard users: Only use predefined query’s

• BI-publisher: Can do a lot of query’s in succession.

• WriteBack users: need insert/update rights on the DB.

The help the DBA ask him for five users named: OBIEE R (Reportbuilders), OBIEE A (Answers
users), OBIEE D (Dashboard users), OBIEE B (BI-Publisher) , OBIEE W (WriteBack Users).
In your RPD create five connection pools:

[1]
Create five Groups:
233
[2]
Now set the permissions for the Connection Pool:

[3]
Don’t forget to disable ”Everyone”.
Assign the users to there groups and check in TOAD or SQL Developer if the right connections are made:

[4]
This way you can ask your DBA to assign the right resources to every group instead of an average setting
for every one.
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/SXN1_c1TsxI/AAAAAAAABPg/R4N_broAty0/s1600-h/image%5B3%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SXN2AfuHP9I/AAAAAAAABPo/Q1E3CybFCfY/s1600-h/image%5B7%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/SXN2BZSi_bI/AAAAAAAABPw/G6NpPJGLvM8/s1600-h/image%5B11%5D.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/SXN2FfJr4II/AAAAAAAABP4/mvsZXnsiBCw/s1600-h/image%5B15%5D.png

BI Consultant van 2008 ronde 2 (2009-01-21 21:20)

Samen met Niels de Ruiter ([1]http://www.linkedin.com/pub/2/583/66a) en ”de Anonieme Con-


sultant” ben ik genomineerd voor de tweede ronde voor BI Consultant van het jaar 2008
([2]http://nlbi.blogspot.com/2009/01/bi-consultant-van-2008-st emronde-2.html).
Allereerst wil ik iedereen bedanken die op mij gestemt heeft en ik ga met plezier de strijd aan voor de
volgende ronde.
Dus als je BI nieuws volgt in het Nederlands, breng dan nu je stem uit! Het hoeft niet op mij.........maar
mag wel ;-) .
Together with Niels de Ruiter ([3]http://www.linkedin.com/pub/2/583/66a) and ”de Anonieme Con-
sultant” (’The Anonymous Consultant) I am nominated for the second round of BI consultant
2008([4]http://nlbi.blogspot.com/2009/01/bi-consultant-van-200 8-stemronde-2.html).
234
First of all I would like to thank everybody who has voted for me in the first round and with great
pleasure I’ll accept the challenge for the next round.

So if you follow BI news in Dutch, cast your vote! Doesn’t have be on me..... but I don’t mind if you do
;-) .

Till Next Time

1. http://www.linkedin.com/pub/2/583/66a
2. http://nlbi.blogspot.com/2009/01/bi-consultant-van-2008-stemronde-2.html
3. http://www.linkedin.com/pub/2/583/66a
4. http://nlbi.blogspot.com/2009/01/bi-consultant-van-2008-stemronde-2.html

OBIEE Impersonate a user (2009-01-21 23:49)

If you want to check how a report or dashboard runs as a different user but you haven’t yet setup ”ACT
AS” functionality or you don’t know the password of the user, you can pass the &impersonate variable
trought the URL. (If you are logging in as Administrator)

Change this URL to the one shown below:

For dashboards: [1]http://vmobiee:9704/analytics/saw.dll?Dashboard &impersonate=OBIEE A

Directly in answers: [2]http://vmobiee:9704/analytics/saw.dll?An swers &impersonate=OBIEE A

where OBIEE A is the username of the person you want to impersonate.

Till Next Time

1. http://vmobiee:9704/analytics/saw.dll?Dashboard&impersonate=OBIEE_A
2. http://vmobiee:9704/analytics/saw.dll?Answers&impersonate=OBIEE_A

OBIEE rowbased calculations in a pivot table (2009-01-22 19:48)

One of the little known possibilities are the row based calculations in a pivot table. Let’s start with a
simple report based on the sales sample RPD:

[1]
235
[2]

From this base report we make a simple pivot table:

[3]

[4]

In the columns section click on the column properties and select ”New Calculated Item”
236
[5]
Now can create a rowbased calculation:

[6]
You can also play with the other functions:

[7]
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SXiHfasflQI/AAAAAAAABQA/arUSOFzkMJI/s1600-h/image%5B29%5D.png
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/SXiHhm-DmxI/AAAAAAAABQI/jgfziU73jVY/s1600-h/image%5B30%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/SXiHkJH835I/AAAAAAAABQQ/8872fA5g4Dk/s1600-h/image%5B31%5D.png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/SXiHmF76vKI/AAAAAAAABQY/fcmzeBeQki0/s1600-h/image%5B32%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/SXiHoYFEP5I/AAAAAAAABQg/CqF4HDA7wEk/s1600-h/image%5B33%5D.png
6. http://lh5.ggpht.com/_qd3TDEvIh4Y/SXiHq39JYwI/AAAAAAAABQo/zzQhOPO7IyE/s1600-h/image%5B34%5D.png
7. http://lh4.ggpht.com/_qd3TDEvIh4Y/SXiHtCfvhnI/AAAAAAAABQw/IsImg8c3kxQ/s1600-h/image%5B35%5D.png

OBIEE Brackets in the BMM (2009-01-26 20:35)

A colleague discovered this: If you are using brackets in the BMM and the column is part of a dimension
and the last character is a closing bracket ’)’.
237
[1]

Then when building a report the column appears ’strange’ in answers, it includes the folder prefix:

[2]

It doesn’t seem to influence the results, it appears to be just on of those things.....

[3]

Till next time

1. http://lh3.ggpht.com/_qd3TDEvIh4Y/SX3KVpDLYAI/AAAAAAAABTE/LORZQH-2jTg/s1600-h/image%5B2%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SX3KW9_fRtI/AAAAAAAABTM/SQnCDMtqcdE/s1600-h/image%5B6%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/SX3KYPk4ohI/AAAAAAAABTU/RwDHKStbdQw/s1600-h/image%5B10%5D.png

OBIEE Creating a Yamazumi Graph (2009-01-27 20:39)

A Yamazumi chart is a stacked bar chart that shows the balance of cycle time workloads between a
number of operators typically in an assembly line or work cell. The Yamazumi chart can be either for a
single product or multi product assembly line.
Yamazumi is a Japanese word that literally means to stack up.
Toyota uses Yamazumi work balance charts to visually present the work content of a series of tasks and
facilitate work balancing and the isolation and elimination of non value added work content.
238
[1]
1 Instructions
1.1 Minimum data

[2]
The minimum available data columns are:

• EMP NO: identifies the employee

• TASK START TIME: Task Start Time

• TASK ORDER: RCOUNT for the tasks of the employee during the period, based on the TASK
START TIME { RCOUNT(YamazumiTable.TASK START TIME by YamazumiTable.EMP
NO) }

• TASK: Identifies the task

• DURATION: TASK duration in minutes

[3]
239
1.2 Pivot Table
The base data has to be transformed into a pivot table:

[4]
Set the aggregation rule for duration to first:

[5]
1.3 Adding a graph
Select

[6]
Chart only, Horizontal Bar, 2D Stacked, Rectangle
Set legend to None

[7]
1.4 Colouring the Task:
Go to Format Chart Data > Conditional
240
[8]

Select add condition for TASK

[9]

Set the colour for each TASK

[10]

1.5 Creating a legend


241
[11]
Set the background colour for each task:

[12]
1.6 Organize the compound view:

[13]
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SX7WWwP7VRI/AAAAAAAABTs/ROFG-qAy268/s1600-h/clip_image002%5B7%5D.jpg
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SX7WYCvxmXI/AAAAAAAABT0/Wwle71Ii9_s/s1600-h/clip_image002%5B4%5D%5B3%
5D.jpg
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/SX7WZxCrlhI/AAAAAAAABT8/3M_v5F38VOc/s1600-h/clip_image004%5B4%5D.jpg

242
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SX7WbReuUTI/AAAAAAAABUE/CBXYOAJv2sU/s1600-h/clip_image006%5B4%5D.jpg
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/SX7WchYcEhI/AAAAAAAABUM/bJAaC7Cg07o/s1600-h/clip_image008%5B4%5D.jpg
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/SX7WdxnNzcI/AAAAAAAABUU/aDWVQ6_BfCo/s1600-h/clip_image010%5B4%5D.jpg
7. http://lh4.ggpht.com/_qd3TDEvIh4Y/SX7WegSvY-I/AAAAAAAABUc/cP03pcpjYPU/s1600-h/clip_image012%5B4%5D.jpg
8. http://lh6.ggpht.com/_qd3TDEvIh4Y/SX7Wf1nouFI/AAAAAAAABUk/zibGSvQnBs0/s1600-h/clip_image014%5B4%5D.jpg
9. http://lh4.ggpht.com/_qd3TDEvIh4Y/SX7WhONVukI/AAAAAAAABUs/smpkTyQEP2g/s1600-h/clip_image016%5B4%5D.jpg
10. http://lh4.ggpht.com/_qd3TDEvIh4Y/SX7WiOw1wYI/AAAAAAAABU0/ipsMzY3KgbI/s1600-h/clip_image018%5B4%5D.jpg
11. http://lh3.ggpht.com/_qd3TDEvIh4Y/SX7WjLq4vhI/AAAAAAAABU8/UDbRR6EX168/s1600-h/clip_image020%5B4%5D.jpg
12. http://lh5.ggpht.com/_qd3TDEvIh4Y/SX7WkZeB8iI/AAAAAAAABVE/0xyLzAfGfQs/s1600-h/clip_image022%5B4%5D.jpg
13. http://lh5.ggpht.com/_qd3TDEvIh4Y/SX7Wl0CzY_I/AAAAAAAABVM/6Kg-ziD8DNI/s1600-h/clip_image024%5B5%5D.jpg

OBIEE Autorefresh no prompts (2009-01-28 20:01)

Ok this trick only works if you don’t have any prompts on the dashboard page. They can live on other
pages if you want to keep them.

Add a text element to your dashboard

[1]

Enter :

<META HTTP-EQUIV = ”REFRESH” CONTENT = ”900”>

where 900 is the refresh time in seconds. Don’t forget to check the Contains HTML Markup box.

Till Next Time.

Edit: Stijn pointed me to adding:

<META HTTP-EQUIV=”CACHE-CONTROL” CONTENT=”NO-CACHE” >

To avoid caching of the browser.

1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SYBlYBRYG9I/AAAAAAAABVU/i2lIgjxrMt8/s1600-h/image%5B3%5D.png

OBIEE Column headings (2009-01-29 17:16)

This post on OTN ([1]http://forums.oracle.com/forums/thread.jspa?threadID=85275 8 &tstart=15) trig-


gered me to have closer look at the column headings possibilities

Lets start with a simple report (Sample Sales):


243
[2]
To alter the column heading go to Table View Properties:

[3]
In the Display Column & Table Headings you have five choices:

[4]
Only column headings:

[5]
244
As separate rows

[6]
This allows you to customize the column heading over two rows:

[7]

[8]
As Table.Column

[9]
As Table.Column (Where needed)
245
[10]

Doesn’t seem to change anything at first glance, but works fine when you have two columns with the
same name from different folders:

[11]

No column or table headings


246
[12]
Till Next Time
1. http://forums.oracle.com/forums/thread.jspa?threadID=852758&tstart=15
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SYFmMih4d6I/AAAAAAAABVc/BKsts1mY8rQ/s1600-h/image%5B16%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/SYFmNoxf0-I/AAAAAAAABVk/P9BfVVl4esY/s1600-h/image%5B7%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SYFmOon-KXI/AAAAAAAABVs/ok365-iwkW4/s1600-h/image%5B12%5D.png
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/SYFmPna9EkI/AAAAAAAABV0/R15ft4P0wvY/s1600-h/image%5B42%5D.png
6. http://lh6.ggpht.com/_qd3TDEvIh4Y/SYFmQifqABI/AAAAAAAABV8/YuxYNJoXESE/s1600-h/image%5B43%5D.png
7. http://lh6.ggpht.com/_qd3TDEvIh4Y/SYFmRyf1AsI/AAAAAAAABWI/vxozjUEV1I0/s1600-h/image%5B44%5D.png
8. http://lh6.ggpht.com/_qd3TDEvIh4Y/SYFmSoYWWVI/AAAAAAAABWQ/7Y7kv-nQtn0/s1600-h/image%5B45%5D.png
9. http://lh3.ggpht.com/_qd3TDEvIh4Y/SYFmTscj0fI/AAAAAAAABWY/2CdcLUZ1yGE/s1600-h/image%5B46%5D.png
10. http://lh6.ggpht.com/_qd3TDEvIh4Y/SYFmUrGKM1I/AAAAAAAABWg/ln4Y5DvXMNw/s1600-h/image%5B47%5D.png
11. http://lh5.ggpht.com/_qd3TDEvIh4Y/SYFmVaXaXuI/AAAAAAAABWo/j68rcdWchlc/s1600-h/image%5B53%5D.png
12. http://lh4.ggpht.com/_qd3TDEvIh4Y/SYFmWlwQisI/AAAAAAAABWw/ygOc0RbuSgA/s1600-h/image%5B49%5D.png

3.2 February

OBIEE Ago and and error ORA-00942: table or view does not exist (2009-02-11 09:51)

George did a good one:


[1]http://translate.google.com/translate?u=http://bidwcz.blogspo t.com/ &sl=cs &tl=en &hl=en
&ie=UTF-8
On how to use PERF PREFER INTERVAL STITCH JOIN here!
Till Next Time
1. http://translate.google.com/translate?u=http://bidwcz.blogspot.com/&sl=cs&tl=en&hl=en&ie=UTF-8

OBIEE ”Selling” federated query’s (2009-02-12 13:41)

One of the powerful features of OBIEE is the possibility of federated query’s. Sadly in most sales pitches
we tend to emphases the technical part instead of the practical part. Every now and then there is a
BI-manager in the audience who really knows his stuff and starts asking the wright/wrong questions. In
this article I want to show you some of the pitfalls when trying to ”sell” federated query’s.
The most common demo is we get all the data up to last night from our DWH and add today’s data from
the OLTP system.
247
Pitfall #1: Creating unstable reports.

Most managers tend to bring paper printouts of there reports to the meeting. This means that the
printout for manager 1 at 09:10 will different from the printout for manager 2 at 09:15. This leads to
useless discussing of the numbers on the report.

Pitfall #2: Wasted energy

A DWH generally contains data over a long period of time. For strategic or tactical discussions today’s
unstable data is not significant compared to the amount of historical data. A federated query would be
a unnecessary claim of recourses of the OLTP system.

Pitfall #3: Uncleansed data

The ETL process which loads the DWH often cleanses the data from the OLTP system. (FI: Don’t
count invoices from department ’999’). If these rules aren’t covered in the RPD it will lead to the wrong
numbers.

Does this mean you should use federated query’s against an OLTP system at all? Of course not! Just
think about the result your are trying to get. Try confining the federated query to a specific level. (FI:
Use in only when a day to day comparison is made.)

Till Next Time

OBIEE Switching between filters (2009-02-13 13:36)

Found this one on the OTN forum [1]http://forums.oracle.com/forums/thread.jspa?threadID=859458


&tstart=0

First create a Yes/No Prompt

[2]

Put the result in a presentation variable called YesNo

On your report create a filter like:

[3]

Pay close attention to the position of the singel quotes!

Put both the prompt and the report on a dashboard page:


248
[4]

[5]

Till Next Time

1. http://forums.oracle.com/forums/thread.jspa?threadID=859458&tstart=0
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/SZVpWLnpppI/AAAAAAAABW4/jWyrsy9LvQg/s1600-h/image%5B3%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/SZVpW4xGqlI/AAAAAAAABXA/esaWsdy4X34/s1600-h/image%5B6%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SZVpXl-GZlI/AAAAAAAABXI/nQuuEJpQbKI/s1600-h/image%5B9%5D.png
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/SZVpZRZaTcI/AAAAAAAABXQ/Y5SQ7aqTapc/s1600-h/image%5B12%5D.png

OBIEE Editing system wide defaults (2009-02-17 17:32)

Setting a system wide default can be very handy but also completely [1]F@ # $K up your system. For
instance changes to CSS files don’t seem to work. Most catalog administrators forget to retract this
privileges until it’s to late.

[2]

Anyway here is how you can undo the damage.

As always be careful when editing directly into the catalog XML.. Backup!

Open the catalog in a off line mode:


249
[3]

Navigate to /system/metadata

[4]

Press Edit XML

[5]

Press again Edit


250
[6]

Carefully Delete edit the XML !

[7]

Press save, close catalog manager, restart presentation service.

Till Next Time

1. mailto:F@#$K
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SZqufGTqBhI/AAAAAAAABXw/sLxszFRZXBA/s1600-h/image%5B3%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/SZqufzakQHI/AAAAAAAABX4/tiXBUSrf6Zo/s1600-h/image%5B8%5D.png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/SZquhfOjloI/AAAAAAAABYA/ovFY-dQoE_4/s1600-h/image%5B12%5D.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/SZquinzPKtI/AAAAAAAABYI/hOqQafL8-l4/s1600-h/image%5B16%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/SZqukUa8DEI/AAAAAAAABYQ/kb-_UWrMjP4/s1600-h/image%5B19%5D.png
7. http://lh5.ggpht.com/_qd3TDEvIh4Y/SZqul5mHVtI/AAAAAAAABYY/3MA7lPQtA8I/s1600-h/image%5B22%5D.png

OBIEE Making a distinct date prompt (2009-02-23 12:53)

One of the question I get asked on regurlar basis is: ”If have a timestamp column, how do I convert this
in a date only prompt”.
251
[1]

One of the possible solution is this:

First Create as truncated date column in your RPD:

[2]

using :

CAST( ”BM CP TEST”.”DIM DATE F FACTS”.”D DATE RANDOM” as DATE)

Next create a prompt:

[3]

on the show dropdown select SQL results.

Next edit the SQL to:

SELECT DISTINCT DIM DATE F FACTS.DATE TRUNC FROM BM CP TEST


ORDER BY DIM DATE F FACTS.DATE TRUNC

(Don’t forget the order by!)

EDIT:
252
[4]

Till Next Time

1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SaKOPR7p4wI/AAAAAAAABYg/sS_WcGZQmAM/s1600-h/image%5B2%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/SaKOQKPI5uI/AAAAAAAABYo/M_IQfkiVWz8/s1600-h/image%5B11%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/SaKOSDwhVZI/AAAAAAAABYw/Cg-On3Kicdc/s1600-h/image%5B12%5D.png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/SaObWzrcJsI/AAAAAAAABZw/dk2Z4Csvpzw/s1600-h/image%5B3%5D.png

OBIEE Reporting on dateranges (2009-02-23 15:31)

When your data is stored in ranges instead of individual events:

[1]

Graphical representation over a period becomes quit tricky. Best solution: Have the ETL people create
a valid entry for each day. Good alternative: Create an entry for each day in the repository.

First create an alias for the calendar table:

[2]

Join this with a COMPLEX join to your fact table


253
[3]
Don’t forget to restrict the open ended data!

DIM DATE.DATEDATE >= AWOL.FROM DATE AND DIM DATE.DATEDATE


<= CASE WHEN AWOL.TO DATE IS NULL THEN CURRENT DATE ELSE AWOL.TO
DATE END

Join this with your regular calendar dimension and set it to outerjoin in the Business model.

[4]
Check the report:

[5]

[6]
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/SaKy8bKABxI/AAAAAAAABY4/1mDQJ3sDM-0/s1600-h/image%5B2%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SaKzALth-iI/AAAAAAAABZA/HapDDCaHw_0/s1600-h/image%5B5%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/SaKzC9Jn2SI/AAAAAAAABZI/yCnVFmyapDg/s1600-h/image%5B8%5D.png

254
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/SaKzFEEEBtI/AAAAAAAABZQ/5GTv2oKKVtA/s1600-h/image%5B11%5D.png
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/SaKzF1jzXiI/AAAAAAAABZY/Moqcbe0B168/s1600-h/image%5B14%5D.png
6. http://lh5.ggpht.com/_qd3TDEvIh4Y/SaKzI9A_ZdI/AAAAAAAABZg/9sg6Yc-2o3w/s1600-h/image%5B17%5D.png

OBIEE see you in Brigthon (2009-02-24 07:43)

I will be on of the speakers at the rittman mead bi forum on may 14th and 15th. Come and join us:
[1]http://www.rittmanmead.com/rittman-mead-bi-forum-brighton-may -14th-15th-2009/
See you there!
1. http://www.rittmanmead.com/rittman-mead-bi-forum-brighton-may-14th-15th-2009/

OBIEE Executing your own JavaScript (2009-02-25 14:05)

Recently I was asked how to asked your own JavaScript from the OBIEE dashboard. I actually fairly
simple.
Step 1: Add your script to Common.JS (this usually file is found in the {OracleBI }\web\app\resashb
mozillahere is an example:

// MY Stuff
function obi popup()
{
alert(”Hello World”)
}

[1]
Step 1b: If you are using OC4J sync the file with the one in {OracleBI }\oc4j bi\j2ee\home\applicatio
ns\analytics\analytics\ res\b mozilla
Step 2: restart the presentation server and you webserver.
Step 3: Add the execution code to your dashboard:

[2]
255
<input type=”button” onclick=”obi popup()” value=”Click Me!”>

Don’t forget to check the Contains HTML Markup!

Step 4: Save your dashboard page and test....

[3]

Till Next Time

1. http://lh6.ggpht.com/_qd3TDEvIh4Y/SaVCARZT6lI/AAAAAAAABZ4/nzu3MNavvXI/s1600-h/image%5B14%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SaVCBZ7dekI/AAAAAAAABaA/ImkvmZbldgU/s1600-h/image%5B13%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/SaVCCSZHSaI/AAAAAAAABaI/6ILfMznFE60/s1600-h/image%5B12%5D.png

OBIEE Configuring Case Insensitive Search (2009-02-26 20:15)

If you look in the configuration guide you will find that the CASE SENSITIVE CHARACTER COM-
PARISON parameter in the NQConfig file controls the case sensitive search within OBIEE. Be aware
that you might be fooled by your database settings. If you are on an Oracle database 10G+ you can use
a connection script in the repository to allow case insensitive searches. Go to the connection pool, click
on the connection script tab.

[1]
256
Press New: [2]

Enter:

alter session set NLS SORT=BINARY CI


alter session set NLS COMP=LINGUISTIC

Save the repository, reboot the BI-Server

Till Next Time

1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SaayIZJNPuI/AAAAAAAABaY/mzxy6ELGZzU/s1600-h/image%5B3%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SaayJTodb9I/AAAAAAAABag/vKsgEByVfOg/s1600-h/image%5B7%5D.png

OBIEE Default Portnumbers (2009-02-26 20:39)

On the OTN forums this picture from the Oracle® Business Intelligence Enterprise Edition Deployment
Guide:
257
[1]
It contains the DEFAULT portnumbers used by OBIEE

• 25: SMTP

• 2001: Chart Image Server (Corda) <-> Presentationserver

• 9700: Prim. Cluster Controler <-> Sec. Cluster Controller

• 9701: BI Server <-> Cluster Controllers

• 9703: BI Server <-> Presentation Services

• 9704: HTTP Web Server

• 9705: Scheduler <-> Presentationserver

• 9706: Cluster Controllers <-> Presentationserver

• 9708: Scheduler <-> : Cluster Controllers

• 9710: Scheduler <-> Presentation Server <-> J2EE

• 9810: Javahost <-> Scheduler <-> Presentationserver

Till Next Time


1. http://lh4.ggpht.com/_qd3TDEvIh4Y/Saap8dUMd4I/AAAAAAAABaQ/UJi7roncW0U/s1600-h/image%5B9%5D.png

258
OBIEE Simulating Drill up (2009-02-27 11:44)

Every now and then I get the question if Drill up is possible within OBIEE. One way of simulating this
behavior is using the preferred Drill path option. (One of the lesser documented features is OBIEE).

Chaeck out the basic Calendar Dimension:

[1]

On the Date level add the next higher level (month) in the Preferred Drill Path:

[2]

Do the same for Month (quarter), Quarter (year).

Check the result:

[3] [4]
259
[5]
Yeah I know it’s not perfect .....
Till Next Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/SafD_oVAg9I/AAAAAAAABao/TnV2i4oxixw/s1600-h/image%5B3%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SafEAthWr_I/AAAAAAAABaw/qHOwnERnBZY/s1600-h/image%5B7%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/SafEBjtgWdI/AAAAAAAABa4/ZujAUxNx_JE/s1600-h/image%5B10%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SafECmLcgFI/AAAAAAAABbA/ujLdoo7GOOg/s1600-h/image%5B13%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/SafEDlNc8dI/AAAAAAAABbI/Ab4JgwAztNQ/s1600-h/image%5B16%5D.png

3.3 March

OBIEE Between Dates Prompt (2009-03-02 11:11)

One the questions you see regularly on the forums is how to create a ’between dates’ dashboard prompt
if the date column is not a part of a date dimension. If more important with the use of the calendar
control.
Step 1 create a new prompt based on a date dimension:‘

[1]
select ’Calendar’ from the control dropdown box, if you do it later on it won’t be available (undocumented
feature ;-) ).
Step 2: Alter the column function:

CASE WHEN 1=0 THEN CALENDAR.D DATE ELSE TIMESTAMP ’1900-01-01


00:00:00’ END

The CASE WHEN part guarantees validation of the column.


Step 3: Set the presentation variable and label

[2]
260
Step 4: repeat step1
Step 5: Alter the column function:

CASE WHEN 1=0 THEN CALENDAR.D DATE ELSE TIMESTAMP ’2999-12-31


00:00:00’ END

This has to be different from the one used in step 2 since OBIEE uses the default outcome of the formula
as internal name for the column.
Step 6: Set the presentation variable and label

[3]
Step 7: reference the variable in your report:

[4]
Step 8 : Create the dashboard:

[5]
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SauwuUKMcwI/AAAAAAAABbw/GrfjOkpQLus/s1600-h/image%5B3%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SauwveyfP2I/AAAAAAAABb4/zGInhSNNs4A/s1600-h/image%5B7%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/SauwwVDPXyI/AAAAAAAABcA/S-jfFa4w8zs/s1600-h/image%5B11%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SauwxbrFgZI/AAAAAAAABcI/nCPKfmQhdiE/s1600-h/image%5B18%5D.png
5. http://lh3.ggpht.com/_qd3TDEvIh4Y/SauwyTWGN1I/AAAAAAAABcQ/tMY3vf6xDws/s1600-h/image%5B17%5D.png

OBIEE Date, TimeStamp and ORACLE Indexes (2009-03-03 18:25)

Mark Rittman triggered meto investigate this: If you are Filtering against a date column in OBIEE you
will see in the log that a timestamp conversion is added to your query:

select distinct T2826.DAYTIME as c1


from
DAYTIME2 T2826
where ( T2826.DAYTIME = TIMESTAMP ’1968-03-14 00:00:00’ )
order by c1

This timestamp conversion implies that a index on the DATE column is skipped, resulting in a full
tablescan. How can we force the usage of an index? Here is an alternative:
1: Create a FUNCTIONAL INDEX on your date column Fi:
261
create index dt3 on daytime2(cast (”DAYTIME” as timestamp));

2: Create a view on your table casting the date column as TIMESTAMP:

create view v daytime2


as
(select cast(daytime as timestamp) as daytime from daytime2)

Map this view to your RPD and you will, check the explain plan, see that Oracle uses your index.
If you have any better / other solutions please let me know!
Till Next Time

OBIEE NQSSetSessionValue (2009-03-03 22:31)

[1]
When playing around with session variables in the repository in the help context you wil find a reverence
to NQSSetSessionValue:

[2]
But if your looking for how to use it........ (At least I couldn’t find anything on the net or in the
docs.). Anyhow: after logging an SR I was pointed in a direction to find a solution. The way to use
this function is to issue an direct SQL request from a web page by ussing the ?IssueRawSQL?SQL (FI:
[3]http://vmobiee:9704/analytics/saw.dll?IssueRawSQL?SQL )

[4]
262
(you have be granted the right permission for this!)

[5]
Next you have to format the request like:

call NQSSetSessionValue(’DataType VariableName=Value;’)

FI: call NQSSetSessionValue(’Float MYSESSIONVAR=11;’)call NQSSetSessionValue(’String MYSES-


SIONVAR=Test;’)
The types allowed are: Integer, String, Float, Date, Time and DateTime.

[6]
Till Next Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/Sa2hkewb5gI/AAAAAAAABcY/fCYeLblY9UQ/s1600-h/image%5B15%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/Sa2hlPIdghI/AAAAAAAABcg/YrC1SiAaB1s/s1600-h/image%5B7%5D.png
3. http://vmobiee:9704/analytics/saw.dll?IssueRawSQL?SQL
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/Sa2hoY3gS1I/AAAAAAAABco/hIRLoMbs8sE/s1600-h/image%5B25%5D.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/Sa2hpJiCz9I/AAAAAAAABcw/P9UQ5OdH6Ws/s1600-h/image%5B26%5D.png
6. http://lh5.ggpht.com/_qd3TDEvIh4Y/Sa2hqHnLdmI/AAAAAAAABc4/N8OZ8bLutKs/s1600-h/image%5B24%5D.png

OBIEE Custom Authenticators (2009-03-05 21:45)

Within OBIEE you can build your own custom authenticators. In the directory {OracleBI
}\server\SDK\CustomAuthe nticatorSamples\ you can find a sample. But if you are just like me not up
to speed C++ it takes some effort to get it working.
Step 1: get a C++ compiler. (I used the Microsoft Express edition)
Step 2: Locate the SampleDynFileAuth.vcproj file open in a text editor and remove all references to
InheritedPropertySheets.
Step 3: Open the solution, check for errors.
Step 4: Compile the DLL
Step 5: Create a passord .txt file with the following structure:

name passwordhash ”Groups” ”atributes” ”atributes”jim mij ”Admin” ”full name=Jim


Smith” ”title=Manager”
jim2 mij ”Admin|qa” ”full name=Jim Smith” ”title=Manager”
263
(passwordhash is the password in reverse)
Step 6: Create a Custom Authenticator in your offline RPD:

[1]
Step 7: Add the User and Group variable to a init block

[2]
Step 8: reboot the bi-server and start testing!
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/SbA584SfG1I/AAAAAAAABdA/_rLQqCOTmgM/s1600-h/image%5B1%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SbA5-Y3OQAI/AAAAAAAABdI/pO7nPgTepm4/s1600-h/image3%5B2%5D.png

BI Consultant 2008 (2009-03-06 10:58)

Gisterenavond ben ik door de bezoekers van [1]www.bidutch.nl uitgeroepen tot BI consultant 2008. Ik
wil langs deze weg iedereen die op mij gestemd heeft bedanken!
”Resultaten behaald in het verleden bieden geen garanties voor de toekomst!” , maar maken de uitdaging
wel groter!
264
Yesterday I was awarded ”BI consultant 2008” by the visitors of [2]www.bidutch.nl. I would like to thank
everybody who voted for me!

”Results from the past are no warranty for the future”, they only make the new challenge bigger.

1. http://www.bidutch.nl/
2. http://www.bidutch.nl/

OBIEE identifying the hierarchy level (2009-03-06 13:32)

On the OTN forum I was asked how you can identify the hierarchy level which the user is currently on
(Did he select Year, Quarter,Month etc?).

One way of doing this is ”using” the aggregate awareness availability of a column. First you create a
”dummy” aggregate view for each hierarchy:

• year level: select distinct d year, 4 AS DIM LEVEL from d date

• quarter level: select distinct d quarter, 3 AS DIM LEVEL from d date

• etc.

These tables you physically join to your dimension:

[1]

Update 2010/06/28:

Add Dummy joins to your other dimensions:

[2]
265
Set the expression to 1=1[3]

In your fact table you add an extra column named dim date level:

[4]

Next add the sources to your fact table:

[5]

Add an inner join on your core fact table to your original dimension:
266
[6]
On each level source map to the column:

[7]
and set the aggregation content level:

[8]
set the aggregation level for the level column to MIN:

[9]
Test your Report:
267
[10]

[11]

[12]

[13]
Be sure to check all your dimension levels!
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/SbEXqI_2BdI/AAAAAAAABdQ/spEcPK79DTs/s1600-h/image%5B3%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCjUPkL6O0I/AAAAAAAAC2w/1zfjOYkTROQ/s1600-h/image%5B7%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCjUQf8TJkI/AAAAAAAAC24/AphULOFjv-A/s1600-h/image%5B6%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SbEXrdH_P4I/AAAAAAAABdY/9495pZAJNfo/s1600-h/image%5B36%5D.png
5. http://lh3.ggpht.com/_qd3TDEvIh4Y/SbEXsRTsbiI/AAAAAAAABdg/pSfYQZtYfwo/s1600-h/image%5B9%5D.png
6. http://lh6.ggpht.com/_qd3TDEvIh4Y/SbEXtZb_ChI/AAAAAAAABdo/tuIONFOnBJU/s1600-h/image%5B37%5D.png

268
7. http://lh5.ggpht.com/_qd3TDEvIh4Y/SbEXuny5liI/AAAAAAAABdw/krF_aducFO4/s1600-h/image%5B38%5D.png
8. http://lh5.ggpht.com/_qd3TDEvIh4Y/SbEXvqG1MzI/AAAAAAAABd4/EdaULji19jI/s1600-h/image%5B39%5D.png
9. http://lh6.ggpht.com/_qd3TDEvIh4Y/SbEXxUkr_MI/AAAAAAAABeA/CbEw0sIpEPc/s1600-h/image%5B40%5D.png
10. http://lh6.ggpht.com/_qd3TDEvIh4Y/SbEXyRzn_ZI/AAAAAAAABeI/dn7-tOD8mJA/s1600-h/image%5B26%5D.png
11. http://lh4.ggpht.com/_qd3TDEvIh4Y/SbEXzHBOD-I/AAAAAAAABeQ/WEc-FYmxvfo/s1600-h/image%5B41%5D.png
12. http://lh4.ggpht.com/_qd3TDEvIh4Y/SbEX0Y0JW1I/AAAAAAAABeY/IKiRefs4fdw/s1600-h/image%5B42%5D.png
13. http://lh5.ggpht.com/_qd3TDEvIh4Y/SbEX1bjOLrI/AAAAAAAABeg/DaBwvr0ewYM/s1600-h/image%5B43%5D.png

Forum Autorefresh (2009-03-09 13:31)

I’m a hugh fan of the OTN fora. Problem is that it doesn’t have an auto-refresh. I’ve made a small script
to load the page in a iFrame and reload it every 5 minutes:

<!– OTN OBIEE With autorefresh –>


<!– Check if it’s a 5 minute part of an hour is reached –>
<script type=”text/javascript”>
var timer = setInterval(”checkTime()”, 1000 * 60 );
function checkTime()
{
if((new Date().getMinutes() % 5) == 0)
self.location.reload(true);
}
</script>
<!– Load the page as Iframe –>

<IFRAME SRC=”[1]http://forums.oracle.com/forums/forum.jspa?forumID=37 8
WIDTH=1200 HEIGHT=900 frameborder=0 SCROLLING=”no”>
If you can see this, your browser doesn’t understand IFRAME. However, we’ll still <A
HREF=”[2]http://forums.oracle.com/forums/forum.jspa?forumID=3 78>link</A> you to
the file.
</IFRAME>

Till Next Time


1. http://forums.oracle.com/forums/forum.jspa?forumID=378
2. http://forums.oracle.com/forums/forum.jspa?forumID=378

OBIEE date prompt to day month year (2009-03-10 08:26)

A Obiee prompt from a calendar to a presentationvariable is cast as date. One way of extracting the day,
month or year can be done based on the locate function:

day: substring( ’@ {Date1 } {01/01/1900 }’ from (locate(’/’,’@ {Date1 } {01/01/1900


}’,1) +1)for (locate(’/’,’@ {Date1 } {01/01/1900 }’ ,4) - locate(’/’,’@ {Date1 } {01/01/1900
}’,1)-1))

month: substring( ’@ {Date1 } {01/01/1900 }’ from 1 for (locate(’/’,’@ {Date1 }


{01/01/1900 }’ ,1) -1))
year: substring( ’@ {Date1 } {01/01/1900 }’ from (locate(’/’,’@ {Date1 } {01/01/1900 }’
,4) +1) for 4)
269
based on the MM/DD/YYYY format.
Till Next Time
John Minkjan is a principal BI-consultant and OBIEE Product Expert at Ciber in the Netherlands, the
text of this article is also published on his personal blog: [1]http://obiee101.blogspot.com/
1. http://obiee101.blogspot.com/

OBIEE hidden column writeback (2009-03-10 11:31)

Sometimes you want to use a ”hidden” column for a writeback procedure. Problem is if you use the
conventional Hide properties of a column it’s also not visible for the write back.
Workaround: use a CSS hide:

[1]
Enable the ”Use Custom CSS Style ” enter display:none. Both for the field and the header.
(Be aware the original value is still available in the source of the page!)
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/SbZBksXXWoI/AAAAAAAABfg/xLo4FOeLcxM/s1600-h/image%5B6%5D.png

OBIEE Google Maps Multiple Addresses (2009-03-17 08:50)

Based on a previous posting ([1]http://obiee101.blogspot.com/2008/10/obiee-using-google-ma ps-q-


style.html) I was asked if it’s possible to add multiple addresses to a Google map. Actually this even
simpler then having to create a separate map for each address.
Let’s get our base table:
270
[2]
Now create a narrative view:

[3]
In the Prefix part put:

// Set the Google maps api key:


<script src=”[4]http://maps.google.com/maps?file=api &v=2 &key=ABQIAAAAtgh-
ZliBar5ci3sjZR oGRSEtwgT n0GADCjO95K9FWMY2XE2RQZwN8F1TggjSu117aG7-
0pYMI0GfQ type=”text/javascript”></script>
<script type=”text/javascript”>
// Declarations
var map = null;
var geocoder = null;
var marker = null;
function initialize() {
if (GBrowserIsCompatible()) {
// Create the map
map = new GMap2(document.getElementById(”map canvas”));
// Set the center without markers; 13 is the zoom level
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
// Add the compass and zoom control
map.addControl(new GLargeMapControl());
// Add the Map type control
map.addControl(new GMapTypeControl());
// Get a new geocoder (needed to convert adresses to coordinates
geocoder = new GClientGeocoder();
// Get the ICON for the marker
icon0 = new GIcon();
icon0.image = ”[5]http://www.google.com/mapfiles/marker.png
icon0.shadow = ”[6]http://www.google.com/mapfiles/shadow50.png
icon0.iconSize = new GSize(20, 34);
icon0.shadowSize = new GSize(37, 34);
icon0.iconAnchor = new GPoint(9, 34);
icon0.infoWindowAnchor = new GPoint(9, 2);
icon0.infoShadowAnchor = new GPoint(18, 25);
// Get the Adresses
GetMapAdress ()
}
}
function showAddress(address,comment) {
// Coverts adresses to coordinates and set the marker on the chart
if (geocoder)
{
geocoder.getLatLng
(
271
address,
function(point)
{
if (!point)
{
alert(address + ” not found”);
}
else
{
map.setCenter(point, 13);
var marker = createMarker(point,icon0,comment);
map.addOverlay(marker);
// Opens the last marker
marker.openInfoWindowHtml(comment);
}
}
);
}
}
function createMarker(point, icon, popuphtml)
// Creates the marker
{
var popuphtml = ”<div id=\”popup\”>” + popuphtml + ”<\/div>”;
var marker = new GMarker(point, icon);
GEvent.addListener(marker, ”click”, function() {marker.openInfoWindowHtml(popuphtml);
});
return marker;
}
function GetMapAdress ()
{

In the narrative part:

// From here it’s build dynamicly in OBIEE


showAddress([7]’@2’, [8]’@3’);

In the Postfix part:

}
</script>
<body onload=”initialize();return false” onunload=”GUnload()”>
<div id=”map canvas” style=”width: 600px; height: 400px”></div>
</body>
</html>

No check if it works in the compound layout:


272
[9]

Till Next Time

Edit if you are using IE you migth want to look also here:

[10]http://obiee101.blogspot.com/2009/07/obiee-google-maps-alter native-ending.html

1. http://obiee101.blogspot.com/2008/10/obiee-using-google-maps-q-style.html
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/Sb9WMTE0ZZI/AAAAAAAABg4/_7-W0vqBvuM/s1600-h/image%5B3%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/Sb9WNgB9cII/AAAAAAAABhA/PAH1TdinXqc/s1600-h/image%5B7%5D.png
4. http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAtgh-ZliBar5ci3sjZR_oGRSEtwgT_
n0GADCjO95K9FWMY2XE2RQZwN8F1TggjSu117aG70pYMI0GfQ
5. http://www.google.com/mapfiles/marker.png
6. http://www.google.com/mapfiles/shadow50.png
7. mailto:/
8. mailto:/
9. http://lh6.ggpht.com/_qd3TDEvIh4Y/Sb9WRL2S_jI/AAAAAAAABhI/b4bh09IHqRk/s1600-h/image%5B14%5D.png
10. http://obiee101.blogspot.com/2009/07/obiee-google-maps-alternative-ending.html

OBIEE Referencing Presentation Variables in Filters (2009-03-17 13:19)

How do you reference a presentation variable in your filter:

Press the filter sign of the column

[1]
273
[2]
Press Add > Variable > Presentation

[3]
Enter the varaible name and default value

[4]

[5]
Till Next Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/Sb-VM_EHAlI/AAAAAAAABhQ/kz-EXg2NWZg/s1600-h/image%5B3%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/Sb-VORSQu_I/AAAAAAAABhY/0TXj-7ipIBw/s1600-h/image%5B7%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/Sb-VQcy-5NI/AAAAAAAABhg/9hVdrxLbM7U/s1600-h/image%5B10%5D.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/Sb-VSKJFXzI/AAAAAAAABho/vblG6Nn8hg0/s1600-h/image%5B13%5D.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/Sb-VTspuANI/AAAAAAAABhw/5JMr5AuSxLQ/s1600-h/image%5B17%5D.png

3.4 April

OBIEE Dynamic prompt content (2009-04-01 17:01)

In a recent article: [1]http://obiee101.blogspot.com/2009/02/obi ee-switching-between-filters.html I


showed you how to create dynamic filters. This time I want to show you on of the ways to create
dynamic prompt content. First create a small dropdown prompt which contains a FilterName LOV:
274
[2]

SELECT case when 1=0 then ”D2 Market”.”M01 Market” else ’Market’ end FROM ”Sam-
ple Sales” Union all SELECT case when 1=0 then ”D2 Market”.”M01 Market” else ’Area’ end
FROM ”Sample Sales” Union all SELECT case when 1=0 then ”D2 Market”.”M01 Market”
else ’District’ end FROM ”Sample Sales”

Put the result in a presentation called ”filtername”

Create a new promt for the dynamic content in the column put:

case when ’@ {filtername } {Market1 }’= ’Market’ then ”D2 Market”.”M01 Market” else
case when ’@ {filtername } {Market1 }’ = ’Area’ then ”D2 Market”.”M02 Area” else case
when ’@ {filtername } {Market1 }’= ’District’ then ”D2 Market”.”M03 District” else ”D2
Market”.”M03 District” end end end

WOW: It’s very sensitive on the place of the single quotes!

[3]

Add a dynymic filter to your report:

[4]

Till Next Time

1. http://obiee101.blogspot.com/2009/02/obiee-switching-between-filters.html
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SdOD4o6qE2I/AAAAAAAABiQ/0HVT7VvDIAc/s1600-h/image%5B2%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/SdOD5VnAjmI/AAAAAAAABiY/UopcmeQE3cU/s1600-h/image4%5B2%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SdOD6sCAQ6I/AAAAAAAABig/zIeA1OTxXB8/s1600-h/image8%5B1%5D.png

OBIEE Between prompt using the calendar control (2009-04-01 19:33)

Sometimes you need a between prompt on a date but the fields but you can’t use the normal is between
because of the complex filter. Here is a possible workaround. In the repository create a dummy table
called Dates with two columns Date1 and Date2 based on the current date.
275
[1]
Next create a prompt and put the result in two presentation variables:[2]

Next create the complex filter:

[3]
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/SdOldL1HtQI/AAAAAAAABio/8KaydFgrOvI/s1600-h/image%5B3%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SdOler_uEtI/AAAAAAAABiw/_tkFkyawUyE/s1600-h/image%5B7%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/SdOlfpSdslI/AAAAAAAABi4/bg04HiYUQsk/s1600-h/image%5B11%5D.png

OBIEE Image prompt (2009-04-01 20:54)

Just a nice gimic, the OBIEE image prompt. First get a image, I used this one:
[1]http://www.faqs.org/docs/htmltut/images/testmap.gif

Create a image prompt:

[2]
276
[3]
Next use the HTML SHAPE tag to add the coordinates: [4]http://www.faqs.org/docs/htmltut/images/
AREA SHAPE.html

<MAP NAME=”map1”> <AREA HREF=”contacts.html”


ALT=”Contacts” TITLE=”Contacts” SHAPE=RECT COORDS=”6,116,97,184”> <AREA
HREF=”products.html” ALT=”Products” TITLE=”Products”
SHAPE=CIRCLE COORDS=”251,143,47”> <AREA HREF=”new.html” ALT=”New!” TI-
TLE=”New!” SHAPE=POLY COORDS=”150,217, 190,257, 150,297,110,257”> </MAP>

[5]
Press Extract Image Map from HTML

[6]
add the column and value.
Till Next Time
1. http://www.faqs.org/docs/htmltut/images/testmap.gif
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/SdO4QqUalAI/AAAAAAAABjA/xRny10dnXMU/s1600-h/image%5B2%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/SdO4RH_rvPI/AAAAAAAABjI/FkX-o9zqiOA/s1600-h/image%5B5%5D.png
4. http://www.faqs.org/docs/htmltut/images/_AREA_SHAPE.html
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/SdO4RxlhJ6I/AAAAAAAABjU/OnUBoYMnnbc/s1600-h/image%5B8%5D.png
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/SdO4S38wB9I/AAAAAAAABjc/rSpJqamRV40/s1600-h/image%5B12%5D.png

OBIEE 10.1.3.4.0 Get your patches (2009-04-02 22:05)

Just a small overview of the available patches


8293083 : OBIEE GENERATED MDX CAUSES PERFORMANCE ISSUE
8290868 : AFTER PATCH 7482937 APPLIED MDX NO LONGER COMPATIBLE WITH ESSBASE
7486770 : MULTI USER PROJECT CHECK IN DELETES COLUMNS FROM SOME OTHER UN-
RELATED PROJECT
7488780 : DEFAULT SQL CANNOT USE PRESENTATION VARIABLE OR REQUEST VARIABLE
8251994 : HRESULT ERROR OR UNKNOWN ERROR IS COMING ON BI OFFICE WHILE INSERT-
ING A BI REPOR
7349048 : BI SERVER HANDLING OF ESSBASE SECURITY FILTERS
7669454 : OBI SERVER CRASHING
7568985 : ESSBASE MDX ERROR FOR OR CONDITION WITH UNQUALIFIED MEMBER OFF
7634813 : ANSWER REPORT WITH PROMPT IS RUNNING THE REPORT WITHOUT WHERE
277
CLAUSE IN THE DB
7331425 : CANNOT CHANGE COLUMN POSITION ON COMBINED REQUEST
7521870 : REPORT FOOTER NOT SHOWING WHEN NAVIGATED FROM A DASHBOARD RE-
QUEST
7642637 : NQSECUDMLGEN EXTENSION FOR LIFE SCIENCES DEVELOPMENT TEAM
7482937 : INCORRECT ESSBASE MDX FOR LOGICAL QUERY WITH OR/AND FILTER ACROSS
LEVELS
7189308 : OBIEE BRIEFING BOOK READER NOT WORKING ON WINDOWS VISTA
7373627 : AN LDAP USER THAT RUNS AN IBOT DOES NOT SEED THE CACHE
7462652 : DISCONNECTED SYNC PROCESS LOOPS WITHOUT REACHING AN END
7302600 : CATALOG MANAGER CLEAN-UP OF ORPHANED USER RECORDS
7140673 : OBI PRESENTATION SERVER CRASH IN PIVOT TABLE
Till Next Time

OBIEE OBI - Forum Live (2009-04-03 12:00)

Dutch only this time:


3 Juni is het weer zover, de tweede versie van OBI Forum Live.
Zoals u waarschijnlijk al gehoord hebt zijn de eerste sprekers al bekend; Mark Rittman (RittmanMead)
en Emiel van Bockel (Centraal Boekhuis).
Wij zoeken natuurlijk nog veel meer boeiende sprekers.
Dus heeft u een goed verhaal over uw uitdagingen met OBI - EE en wil u die met de rest van de
Nederlandstalige gebruikers delen, neem dan even contact op: [1]john punt minkjan at ciber punt nl of
+31 (0)40 - 232 90 90
Tot 3 juni
1. mailto:john.minkjan@ciber.nl

OBIEE Questions (2009-04-03 19:54)

This is a post where you can put all your questions which aren’t related to any subject on this blog (Yet).
This way we can avoid the clutering of the blog.
But before you ask, if you are in a hurry ask your question on the OTN forum first.
([1]http://forums.oracle.com/forums/forum.jspa?forumID=378) Altough I try, I’m not always able to
read the postings from this blog.
Till Next Time.
1. http://forums.oracle.com/forums/forum.jspa?forumID=378

OBIEE Using SQL based scale makers (2009-04-07 09:27)

Recently on my [1]question page I was asked to make a step by step example on how to use SQL based
scale markes in a graph.
Let’s start with a simple report based on the sample sales repository:

[2]
278
[3]

And put it in a vertical bar graph:

[4]

If we want to add a scale marker goto the [5] axis scaling menu and press [6]

Edit Scale markers, press add:[7]

Click on the edit button [8]


279
[9]
Now the trick is to enter an SQL statement for which the first column gives back the value you want to
use for your scale marker. In this case:

SELECT MIN(”F1 Revenue”.”1-01 Revenue (Sum All)” ) saw 0, ”D0 Time”.”T02 Per
Name Month” saw 1 FROM ”Sample Sales” ORDER BY saw 1

Do the same for the MAX marker:

SELECT MAX(”F1 Revenue”.”1-01 Revenue (Sum All)” ) saw 0, ”D0 Time”.”T02 Per
Name Month” saw 1 FROM ”Sample Sales” ORDER BY saw 1

Play around with the Marker caption, color en line width:

[10]
And have a look at the results:

[11]
Till Next Time
1. http://obiee101.blogspot.com/2009/04/obiee-questions.html
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SdsAQ-FaXpI/AAAAAAAABj8/sjf08EddLao/s1600-h/image%5B6%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/SdsASYEb-OI/AAAAAAAABkE/ZKEM_maokAc/s1600-h/image%5B7%5D.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/SdsATTVrK0I/AAAAAAAABkM/Gdm5W39YlLo/s1600-h/image%5B13%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/SdsAUHj-FWI/AAAAAAAABkU/3G9jFpP7j4w/s1600-h/image%5B16%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/SdsAU6mppLI/AAAAAAAABkc/pFs5YU0ITM0/s1600-h/image%5B19%5D.png
7. http://lh4.ggpht.com/_qd3TDEvIh4Y/SdsAVgsuXZI/AAAAAAAABkk/Qh0ucVDA4E4/s1600-h/image%5B23%5D.png
8. http://lh4.ggpht.com/_qd3TDEvIh4Y/SdsAW6V9AlI/AAAAAAAABks/6-d2xgjZR3M/s1600-h/image%5B26%5D.png
9. http://lh5.ggpht.com/_qd3TDEvIh4Y/SdsAYV0Q69I/AAAAAAAABk0/y2ZoSxuSHJs/s1600-h/image%5B30%5D.png
10. http://lh4.ggpht.com/_qd3TDEvIh4Y/SdsAaCOU-uI/AAAAAAAABk8/wiJA5ynFVyE/s1600-h/image%5B35%5D.png
11. http://lh4.ggpht.com/_qd3TDEvIh4Y/SdsAa0_lVrI/AAAAAAAABlE/OQYdCE4Wkm4/s1600-h/image%5B40%5D.png

280
OBIEE Multi lingual prompt (2009-04-15 19:42)

Recently I was asked to create a multilingual prompt label. Stijn Gabriels pointed me in the right
direction.
First I created a dummy table in the .RPD with a single date column:

[1]
Next I put in the presentation catalog:

[2]
In my translation table I added the column and it’s translations:

[3]
Based on this column I created a prompt with no label text:

[4]
Now in the dashboard it’s available in Dutch:

[5]
In English:

[6]
In French:

[7]
You can use the presentation variable for your filtering.
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/SeYcYcNYQoI/AAAAAAAABlM/fohF0LTxTUk/s1600-h/image2.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SeYcYwpbJPI/AAAAAAAABlU/hhVZ4OYmbfI/s1600-h/image5.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/SeYcZt00_GI/AAAAAAAABlc/j3jvF30QBlI/s1600-h/image10.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/SeYcar7kZSI/AAAAAAAABlk/0xSVtgrRTfQ/s1600-h/image14.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/SeYcbXNU48I/AAAAAAAABls/9yFtqMDxLoY/s1600-h/image17.png
6. http://lh5.ggpht.com/_qd3TDEvIh4Y/SeYcd6MDXgI/AAAAAAAABl0/NC_e9fkdn80/s1600-h/image20.png
7. http://lh4.ggpht.com/_qd3TDEvIh4Y/SeYceg1DyKI/AAAAAAAABl8/gWM9w7LkDJs/s1600-h/image23.png

281
OBIEE Showing zero’s in a bargraph (2009-04-17 09:21)

Somebody asked me how you can show zero’s (0) in a bargraph. Have a look at this table:

[1]
If you put this in a normal barchart you get:

[2]
For product 13 and 14 it i’sn’t clear if the data is missing (NULL) or is zero (0). One way of making it
visible is this: Add an extra column which only shows the zero’s (case when...):

[3]
(In the final report you can hide it)
282
Covert your chart to a bar/line type:

[4]
Sync the axis:

[5]
Supress the line and set the symbol:

[6]
Have a look at the results:

[7]
283
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SegtyBlYCPI/AAAAAAAABmE/bjLXzbK7i_k/s1600-h/image%5B2%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SegtzRErxZI/AAAAAAAABmM/eWUlcovFG1U/s1600-h/image%5B27%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/Segt0FAlBaI/AAAAAAAABmU/8jZaH-p9W08/s1600-h/image%5B8%5D.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/Segt1LqsLgI/AAAAAAAABmc/-cCqBjL9t7I/s1600-h/image%5B26%5D.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/Segt18wEg7I/AAAAAAAABmk/hF75J7cotzY/s1600-h/image%5B25%5D.png
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/Segt2zzjwnI/AAAAAAAABms/m87aeRub_t0/s1600-h/image%5B24%5D.png
7. http://lh6.ggpht.com/_qd3TDEvIh4Y/Segt3r9njnI/AAAAAAAABm0/Fz8sJcCdTXg/s1600-h/image%5B23%5D.png

OBIEE Get the FireBug! (2009-04-17 12:12)

A tip I got from Christian: If you are playing around with CSS files get the FireBug for FireFox:
[1]https://addons.mozilla.org/nl/firefox/addon/1843
It’s a very handy tool to find which CSS class is controlling which part in your report.

[2]
Till Next Time
1. https://addons.mozilla.org/nl/firefox/addon/1843
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/SehV94tSJlI/AAAAAAAABm8/wbfSghaTjNw/s1600-h/image%5B4%5D.png

OBIEE Prompts putting the label in front (2009-04-17 22:13)

Or how to get from this:

[1]
to this:

[2]
It was a question raised on the OTN forum: [3]http://forums.oracle.com/forums/thread.j-
spa?threadID=886991
284
And to be quit honest I didn’t think it was possible...
But Stijn Gabriels, one of the great OBIEE CSS gurus, came with a very elegant solution. Goto the
views.css of the style you are using (S directory) and add

td.GFPFilter br { display:none; }

If you are using OC4J as webserver sync the files in the J2EE container.
Till Next Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/Seji__iuvpI/AAAAAAAABnI/0nC4VaURNFc/s1600-h/image%5B2%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SejjAu0ORQI/AAAAAAAABnQ/UICo5BfH7FI/s1600-h/image%5B6%5D.png
3. http://forums.oracle.com/forums/thread.jspa?threadID=886991

OBIEE Prompts putting the label in front part 2 (2009-04-18 08:59)

In a previous [1]article I showed you how to get from this:

[2]
to this:

[3]
based on an OTN entry from Stijn Gabriels.
But what if you only want this effect for 1 dashboard page or when you don’t have easy access to the
views.css?
Simple add a text frame to your dashboard page:

[4]
And set the content to:

<style type=”text/css”>
td.GFPFilter br { display:none; }
</style>

[5]
don’t forget the ”Contains HTML Markup” chechkbox.
Till Next Time
1. http://obiee101.blogspot.com/2009/04/obiee-prompts-putting-label-in-front.html
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/Sel6YXGsj-I/AAAAAAAABnY/LiRjMdLbRLI/s1600-h/image%5B2%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/Sel6ZE35twI/AAAAAAAABng/uQ4Zt5YPfwQ/s1600-h/image%5B6%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/Sel6Z2-lnrI/AAAAAAAABno/W4P_MTpucs8/s1600-h/image%5B9%5D.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/Sel6a4mr6XI/AAAAAAAABnw/rXehD23Fslw/s1600-h/image%5B12%5D.png

285
OBIEE The final skills, Creating great dashboards. (2009-04-19 19:48)

Most project we spend 70 % on getting the data (ETL), 20 % on creating the repository and 10 % percent
on creating the dashboards. Regarding step 1 and 2 most of us have enough skills do them successfully.
The final step, creating the dashboard, is something we often take to light hearted.

Let’s make a bold statement here: 60 % percent of the dashboards we create, within six months, aren’t
used in the way we intended them or even worse aren’t used at all.

Why? Most of them don’t communicate to user in the most effective way. The user can’t find what he
is looking for at glance. Either we tend to overload him with data or present it in a non effective way.

If you want to master these last skills you should really read :

Information Dashboard Design: The Effective Visual Communication of Data


by Stephen Few. ([1]http://www.amazon.com/Information-Dashboard-Design-Effe ctive-
Communication/dp/0596100167)

The current version of OBIEE has the (dis)advantage that it doesn’t have many charting options. This
means we have put in some extra toughts in the way we put the data on the dashboards.

In comming period I will post some examples how the findings of Stephen Few can be implemented within
OBIEE.

Till Next Time

1. http://www.amazon.com/Information-Dashboard-Design-Effective-Communication/dp/0596100167

OBIEE Dashboard Design 001 (2009-04-19 20:36)

As promised in a previous article ([1]http://obiee101.blogspot.com/2009/04/obiee-final-skills-cr eating-


great.html) I will show you some tips and tricks on how the implement the findings of Stephen Few in
OBIEE.

Let’s start with a simple top 7 list of product revenue:

[2]

If we go to the the default chart we get:


286
[3]

Step 1 is to convert this to a horizontal barchart:

[4]

Step 2 convert to 2d rectangle effect:


287
[5]

Step 3: Remove the grid lines:

[6]

Step 4: Add a title and data labels:


288
[7]
Step 5: Set the axis title and labels:

[8]
Step 6: Remove the ”chart box” by setting the Major Gridline colour the same as the background.

[9]
289
Step 7: Set the bar colour:

[10]
Let’s compare both:

[11]
Still you have to consider if a simple list:

[12] doesn’t give the user enough information, charts tend to take up
more dashboard space and space is ’expensive’ !.
Till Next Time
1. http://obiee101.blogspot.com/2009/04/obiee-final-skills-creating-great.html
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SetvAPj5U6I/AAAAAAAABn4/85sks_Qa_6w/s1600-h/image%5B2%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/SetvA0JeN0I/AAAAAAAABoA/XPdSpIHT5jk/s1600-h/image%5B30%5D.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/SetvB0XegaI/AAAAAAAABoI/13WoQHtDePc/s1600-h/image%5B31%5D.png
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/SetvCmAfVnI/AAAAAAAABoQ/9Eyhxw85-RM/s1600-h/image%5B32%5D.png
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/SetvDt41ddI/AAAAAAAABoY/7k8GB1AUYh4/s1600-h/image%5B33%5D.png
7. http://lh5.ggpht.com/_qd3TDEvIh4Y/SetvEhTTy1I/AAAAAAAABog/gIUicMqy3-w/s1600-h/image%5B34%5D.png
8. http://lh6.ggpht.com/_qd3TDEvIh4Y/SetvFYMpYSI/AAAAAAAABoo/4vQJRMEXhvc/s1600-h/image%5B35%5D.png
9. http://lh3.ggpht.com/_qd3TDEvIh4Y/SetvGeHSMfI/AAAAAAAABow/4jvgliyM6L4/s1600-h/image%5B36%5D.png

290
10. http://lh4.ggpht.com/_qd3TDEvIh4Y/SetvHKEISqI/AAAAAAAABo4/-xnbkgzABW0/s1600-h/image%5B37%5D.png
11. http://lh4.ggpht.com/_qd3TDEvIh4Y/SetvIIWIDuI/AAAAAAAABpA/d_U_5D2PA2k/s1600-h/image%5B38%5D.png
12. http://lh4.ggpht.com/_qd3TDEvIh4Y/Sf_8gSwrDXI/AAAAAAAABr8/uHvog4otxgw/s1600-h/image%5B3%5D.png

OBIEE 10.3.4.1 is out! (2009-04-25 08:45)

Start downloading:

[1]
From the release notes:

Oracle BI Enterprise Edition Version 10.1.3.4.1 contains no new features.


However, Oracle BI Publisher Version 10.1.3.4.1 contains new features. For more information
about the new Oracle BI Publisher features, refer to the Oracle Business
Intelligence Publisher New Features Guide.

Release 10.1.3.4.1 of Oracle Business Intelligence Enterprise Edition includes several new
features for Oracle BI Publisher. These are outlined in the following list andexplained in
detail in the Oracle Business Intelligence Publisher New Features Guide:
Support for Oracle WebLogic Server 10.3
Extended Support for Single Sign-On Providers
Automatic Refresh of LDAP Cache
Support for Siebel CRM Security
Support for Secure File Transfer Protocol (SFTP) for Burst Reports
Data Model Enhancements
Scheduler Support for JNDI Connection Pools
Support for Expressions to Calculate Date Parameters
RTF Template Enhancements
Remove Logos and Links from the BI Publisher Header
Disable Access to Guest Page for Unauthorized Users
Updates to the BI Publisher Web Service

The 10.1.3.4.1 release of the Oracle Business Intelligence Enterprise Edition introduces no
new features for BI Office.

This download seems to be mainly intressting if you using BI-publisher or want to keep up to date with
patches.
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/SfKxdpTKXRI/AAAAAAAABqA/6XIX88_4HpE/s1600-h/image%5B3%5D.png

OBIEE 10341 First Impressions (2009-04-25 10:16)

New installation on windows 2003:

• The 100 % ”bug” is still there. (The setup screen goes to 100 % while it still has 30 minutes of
installation)
291
[1]

• They used the ”old” sample sales instead of the extended:


[2]http://obiee101.blogspot.com/2009/01/obiee-sample-sales.html

• It’s alive:

[3]
BI Publisher doesn’t work out of the box:

[4]
(duh.... It’s pointing to a non existing repository......) Still a bad out of the box example in my opinion.
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SfLG0yvL7sI/AAAAAAAABqQ/a6uLJLNw9AM/s1600-h/image%5B4%5D.png
2. http://obiee101.blogspot.com/2009/01/obiee-sample-sales.html
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/SfLKptqdnEI/AAAAAAAABqY/lIikm73Rmtg/s1600-h/image%5B8%5D.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/SfLOc2N2UgI/AAAAAAAABqg/Sy3BKslQgC8/s1600-h/image%5B12%5D.png

OBIEE Opaque data labels on charts (2009-04-25 12:53)

Recently I was asked how to get opaque (see trough) data labels on a chart:

[1]
This is control by the pcxml file belonging to the Graph type:
Open the file in an editor and look for the ”DataLabels” tag. Edit the last to numbers (hex) of the
BGColor subtag to ”00”
292
[2]

(sync the file with the one in the OC4J if used). Restart everything.

Till Next Time

1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SfLrsTYBKDI/AAAAAAAABqo/JpjWsAMzmDc/s1600-h/image%5B2%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/SfLrtMiwu3I/AAAAAAAABqw/VrZgLIlvE0w/s1600-h/image%5B5%5D.png

OBIEE Answers Tab Headings (2009-04-26 11:01)

Recently I had to do some C work of a [1]MoSCoW list on a 10.3.3.3 system. The customer will probably
wait till the 11g release to do any major changes. One of the problems in 10.3.3.3 is that some of the
translation of the system messages are real ”BabbleFish” (which means they made a translation using
Google). Here is an example in Dutch:

[2]

It should simple read ”Criteria” which means the same in Dutch as English. The text can be found in
searchmessages.xml. Copy the file to your customMessages directory in your language directory.

[3]

Use a good XML Editor to change kmsgSheetCriteria to ”Criteria”:

[4]

Reboot the Presentation server:

[5]

Till Next Time

1. http://en.wikipedia.org/wiki/MoSCoW_Method
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SfQiy4o1QGI/AAAAAAAABq4/U8S-yDdi4Lg/s1600-h/image%5B12%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/SfQiz4Eoi-I/AAAAAAAABrA/5Zrt690MUh8/s1600-h/image%5B13%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SfQi0sDv9NI/AAAAAAAABrI/NK3rghgZxdI/s1600-h/image%5B14%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/SfQi1YrI7jI/AAAAAAAABrQ/cEKQEJgj_zs/s1600-h/image%5B16%5D.png

293
OBIEE not all change is good change (2009-04-26 11:42)

Recently I had to do some C work of a [1]MoSCoW list on a 10.3.3.3 system. The customer wanted
français on the dropdown list at the logon screen written as Français:

[2]
With the help of [3]Christi@n I recovered from my brain freeze and started editing a copy of language-
names.xml in the general customMessages folder:

[4]
A quick reboot of the presentation server a the problem was fixed:

[5]
Well not really......As most students in the Netherlands I dropped my French classes ASAP in high school.
My knowledge of the French language is restricted to ”Papa fume un pipe dans le jardin...” (Dad smokes
a pipe in the garden).
Thankfully one of the best names in the Dutch OBI community Stijn came to the rescue and prevented
this ”faux pas” :

In English language names are written with a capital, but not in French. Changing français
to Français is actually incorrect, because it means something different.
To be more clear: français means French and un Français means a Frenchmen. This explains
why some language names are written without a capital.

A quick conference with the customer reviled that the issue was raised by a Dutchmen who thought the
French branches would be offended if there language wasn’t starting with a Capital.
Till Next Time
1. http://en.wikipedia.org/wiki/MoSCoW_Method
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/SfRruL_JNbI/AAAAAAAABrw/RZDeHrHsJFE/s1600-h/image%5B1%5D.png
3. mailto:Christi@n
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/SfQsai9lrfI/AAAAAAAABrg/cgu3a5FUmy8/s1600-h/image%5B5%5D.png
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/SfQsbYL7zJI/AAAAAAAABro/ApsoQy5tKt0/s1600-h/image%5B10%5D.png

OBIEE OLAP on 11G (2009-04-30 21:50)

http://obieestuff.blogspot.com/2009/04/obiee-plug-in-for-oracle11g-o lap-option.html
I really need some r &d time soon..... so much to learn....
Till Next Time
294
3.5 May

OBIEE Enable users to change password (2009-05-04 16:00)

Not really sure if I showed this one from Jose already:


[1]http://translate.google.com/translate?prev=hp &hl=nl &js=n &u=http %3A %2F %2Foracleintelli-
gence.blogspot.com %2F2008 %2F08 %2Fobiee-enable-users-to-change-passwords.html &sl=es &tl=en
works fine from 10.3.4.0 up
Till Next Time
1. http://translate.google.com/translate?prev=hp&hl=nl&js=n&u=http%3A%2F%2Foracleintelligence.blogspot.
com%2F2008%2F08%2Fobiee-enable-users-to-change-passwords.html&sl=es&tl=en

OBIEE Bubble chart (2009-05-05 14:11)

First of all from a visual design stand point they are horible! Why? You are comparing 5 sources of data
on a 2D surface. Most people already have problems interpreting a 3D graph. Anyway let’s give it a try:
Let’s start with a basic report:

[1]

[2]
It gives two dimensions (Brand & Market), two measures (Revenue and Revenue Yago), there comparision
(Revenue Yago / Revenu)
The OBIEE buble chat has 5 elements:

[3]

[4] : X-axis

[5] : Y-axis

[6] : Dimension 1

[7] : Dimension 2 (optional)

[8] : Comparison value


This would give us:
295
[9]

Resulting in this chart:

[10]

On a personal note I find this a horrible chart....

If your really need this much info at once try splitting it into two graphs:

[11]
296
[12]
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/SgAs2Nn2-LI/AAAAAAAABsE/B5WzrkJUG4Y/s1600-h/image%5B3%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/SgAs3J9CHEI/AAAAAAAABsM/9VS2RVnHUvI/s1600-h/image%5B7%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/SgAs3-ajnrI/AAAAAAAABsU/XAcOv3tF7GM/s1600-h/image%5B11%5D.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/SgAs4jCZ0sI/AAAAAAAABsc/BsiMlb0X-vU/s1600-h/image%5B14%5D.png
5. http://lh3.ggpht.com/_qd3TDEvIh4Y/SgAs5CCCJiI/AAAAAAAABsk/soeuJwdFT60/s1600-h/image%5B17%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/SgAs5t7dVzI/AAAAAAAABss/Nxs0mlupBnU/s1600-h/image%5B20%5D.png
7. http://lh5.ggpht.com/_qd3TDEvIh4Y/SgAs6HqQCEI/AAAAAAAABs0/fy-GbrL23e8/s1600-h/image%5B23%5D.png
8. http://lh3.ggpht.com/_qd3TDEvIh4Y/SgAs6_6zmDI/AAAAAAAABs8/KOpM6Yc5VBs/s1600-h/image%5B26%5D.png
9. http://lh5.ggpht.com/_qd3TDEvIh4Y/SgAs7cSrMFI/AAAAAAAABtE/Q8R-UCZO4n8/s1600-h/image%5B31%5D.png
10. http://lh6.ggpht.com/_qd3TDEvIh4Y/SgAs8Fj1rUI/AAAAAAAABtM/df9TSsEJias/s1600-h/image%5B36%5D.png
11. http://lh5.ggpht.com/_qd3TDEvIh4Y/SgAs86S1GLI/AAAAAAAABtU/xOoImr2L5Ls/s1600-h/image%5B43%5D.png
12. http://lh5.ggpht.com/_qd3TDEvIh4Y/SgAs9dBfP6I/AAAAAAAABtc/x9wj8BPM7Xw/s1600-h/image%5B47%5D.png

OBIEE ”Greenbar” Customization (2009-05-05 20:04)

Green bar reporting is alternating the row background colour every odd and even row:

[1]
You can switch this on the report view:

[2]
297
[3]
The colour of the ”Even” row is control by views.css:

” TABLE.ResultsTable TD.ECell”

[4]
The colour of the ”Odd” rows is controlled by the default background-colour of the table:

[5]
But chancing this will also change the ”normal” background-color of the cell.
You can avoid this by adding a extra ”TABLE.ResultsTable TD.OCell” just below the TD.ECell in the
views.ccs:

[6]
That way you can use both styles without them influencing each other:
298
[7]
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SgB_s_qh9kI/AAAAAAAABtk/t9ix1hIHjj0/s1600-h/image%5B7%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SgB_uK2wJ_I/AAAAAAAABts/bX92TLeJwI0/s1600-h/image%5B11%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/SgB_uqnnmqI/AAAAAAAABt0/DaCBXN5mS74/s1600-h/image%5B3%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SgB_vYjU8TI/AAAAAAAABt8/EFDwyMza2Yk/s1600-h/image%5B15%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/SgB_w5-KXcI/AAAAAAAABuE/AeN--aRIfkw/s1600-h/image%5B19%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/SgB_xVim_ZI/AAAAAAAABuM/k_6a3sAQR90/s1600-h/image%5B29%5D.png
7. http://lh3.ggpht.com/_qd3TDEvIh4Y/SgB_yOqODTI/AAAAAAAABuU/mivjYGBUcNI/s1600-h/image%5B30%5D.png

(2009-05-05 21:14)

This one from Tim (the Bip master) really saved my day:
[1]http://blogs.oracle.com/xmlpublisher/2009/04/template builder woes 1.html
Till Next Time
1. http://blogs.oracle.com/xmlpublisher/2009/04/template_builder_woes_1.html

Brighton 2009 (2009-05-16 19:03)

Daddy spoke at Brighton’s biggest BI event 2009, and all he got.....

[1]
Besides lovely T-shirts an awfully lot of good presentations, new info and real indept discussions!
Presentations on Thursday may 14th:
Craig Stewart:
299
Craig showed us how to tune / customize the Oracle Data Integrator to your own needs.

Edward Roske:

Edward is the godfather of Essbase. He gave us some got workings on the Essbase internals,
Sparse en Dense Blocks. Wen to use block storage and wen to use aggregate storage’s. Check
out his blog at: [2]http://looksmarter.blogspot.com/

Mark Rittman:

Leave it up to Mark to educate us how on some basic concepts on the database like
compression, partioning and materialized views can save us storage space and processing
time!

John Minkjan:

My own story on OBIEE cache management, my basic conclusion is still don’t use it, try
to bring it to the DB!

Venkat Janakiraman:

Writer of on the most influential OBIEE blogs, this guy eats and breaths OBI and Essbase.
He gave a good presentation how with simple means the security between OBIEE and Essbase
can be kept in sync.

Adam Bloom:

Some good info on how setting the loglevel to 5 can help identifying which processes run
amok in the BI-server.

Andreas Nobbmann:

UDML is getting more and more important as an exchange mechanism between the BI-
server and the outside world. Andreas showed us how to use the different tools for manipu-
lating UDML

A very good meal at Due South:

This place is really on it’s way to earn a Michelin star. If your in Brighton give it a try:
[3]http://www.duesouth.co.uk/

Presentations on Friday May 15th:


Mike Durran:

Mike give us a live glance at the new stuff in OBIEE 11G. The new graphs look very
impressive. (Stephen Few would turn in his grave if he was dead......). We tried to pressure
him on a release date, but he wouldn’t give in :-(

Emiel van Bockel:

Emiel gave us the story from the architect point. He proved that you don’t always need
a star schema. Especially with OBIEE it’s possible to use other modelling technique. Emiel
showed us also that storing history doesn’t always have to be SCD2.
300
Maarten-Jan Kampen:

Filling in for Daan Bakboord Maarten-Jan showed us how you can use Oracle mapviewer
integrated with OBIEE

Adrian Ward:

Adrian gave us some good tips on how to set up OBIEE in an international environment.

Antony Heljula:

He is the guy you should speak to if you want to integrate SOA with OBIEE. Antony
showed us that SOA is as hard as we think and can be made operational within the hour.

Peter Brink:

Cube Organized views in the Oracle DB are relatively new and therefore unknown. Still
you should check them out if your not ready to go to Essbase (yet).

All in all a successful event and certainly one I will go to next time. Lot’s of indept discussions with some
of the Oracle BI frontrunner’s.
Till Next Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/ShBDwpm3ClI/AAAAAAAABuc/h5MyqOBcDMQ/s1600-h/PICT2190%5B4%5D.jpg
2. http://looksmarter.blogspot.com/
3. http://www.duesouth.co.uk/

OBIEE Cache File Name revealed (2009-05-19 12:52)

Interesting if you have a global cache directory:

[1]

• NQS

– General Prefix

• VMVGGOBI

– Originating Server Name

• 733547

– Days passed since 1-1-0000

• 40458

– Seconds passed since last midnight

• 00000006

– Incremental number since last BI server start:

Till Next Time


1. http://lh3.ggpht.com/_qd3TDEvIh4Y/ShKPWJhEP1I/AAAAAAAABuk/6Hd5kA-mk7E/s1600-h/image5.png

301
OBI Forum live de tweede editie (2009-05-25 14:18)

Het is weer zover: woensdag 3 juni 2009 is er de tweede versie van OBI forum live : [1]http://www.obi-
forumlive.nl/ .
Naast Daan Bakboord (Scamander), Nicolas Gerard (New Frontiers) , twee van Nederland s bekendste
en beste (b)loggers op dit vlak, hebben ditmaal ook en Emiel van Bockel (Centraal Boekhuis) en Gerard
Braat (Oracle)hun medewerking toegezegd.
En als klap op de vuurpijl is het ons gelukt de oervader van de OBI blogs, Mark Rittman, als keynote-
spreker te krijgen.
Op 3 juni a.s. heeft u de mogelijkheid om deze belangrijkste spelers persoonlijk te ontmoeten en met ze
te sparren! Meld u nu aan en mis de 2e editie van het forum niet. [2]http://www.obi-forumlive.nl/ .
tot de volgende keer!
1. http://www.obi-forumlive.nl/
2. http://www.obi-forumlive.nl/

OBIEE views.css color cheat sheet (2009-05-26 02:50)

a small cheat sheet on the default colors used in OBIEE in the views.css:
OBIEE s(k) Oracle10 Colorscheme :

Color: Hex of color


#2b7c92
#000099
#FFFFFF
#003399
#c9cbd3
#3c3c3c
#DDEEFF
#3a5a87
#E7EAEE
#DDE0E4
#B7B7B7
#D3D6DA
#C9CCD0
#48648d
#C4D5E6
#BACBDC
#B0C1D2
#A6B7C8
#48648d
#f2f5f9
#ECEFF3
#E2E5E9
#D8DBDF
#CED1D5
#C4C7CB
#BFC2C6
#BCBCBC
#cfe0f1
#a3bed8
#333399
302
#003366
#f2f5f9
#000066
#000000
#666666
#F7F7F7
#CCCCCC
#DDDDDD
#999999
#a3c2df
#3c3c3c
#2b7c92
#F5F5F5
#BF2C2C
#FBEA7B
#54A36A
#DEDEDE
#FFFFE1
#CCCC00

Till Next Time

OBIEE Background colour prompt (2009-05-28 09:56)

One way of identifying prompts which are connected is by setting the background colour

[1]

[2]

You can find it in the left top corner of the prompt editor:

[3]
303
[4]
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SjVVDCWrqtI/AAAAAAAAB4Y/a6O3Wix8mk0/s1600-h/image10%5B2%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SjVVDosNqQI/AAAAAAAAB4A/z-KVA7gbPso/s1600-h/image2.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/SjVVELboJNI/AAAAAAAAB4I/l6rr2_28_TY/s1600-h/image5.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SjVVE8x1-KI/AAAAAAAAB4Q/tCq2pwerYNk/s1600-h/image9.png

3.6 June

OBIEE Essbase install (2009-06-06 21:36)

Finnally took the tiome to get my essbase install on VM working:


[1]http://essbase101.blogspot.com/2009/06/essbase-install.html
Till Next Time
1. http://essbase101.blogspot.com/2009/06/essbase-install.html

OBIEE get Internet Explorer Developer Toolbar (2009-06-11 11:30)

Thanks to Christian I found one for Firefox: [1]http://obiee101.blogspot.com/2009/04/obiee-get-


firebug.html.
Turns out there is one for IE also:
[2]http://www.microsoft.com/downloadS/details.aspx?familyid=E59C
3964-672D-4511-BB3E-2D5E1DB91038 &displaylang=en
Till Next Time
1. http://obiee101.blogspot.com/2009/04/obiee-get-firebug.html
2. http:
//www.microsoft.com/downloadS/details.aspx?familyid=E59C3964-672D-4511-BB3E-2D5E1DB91038&displaylang=en

OBIEE New portal banner (2009-06-11 19:44)

One of our customers wanted a new portal banner with there own logo:

After adding there logo to the banner we ran into the problem that there was a lot of space wasted
because the logo was much smaller the the original Oracle one.

Turns out that there is an ”opaque” hid-


den image controlling the ”push” to the right. This controled by: {s name }\portal\portallogo.gif. If
304
you resize the width of this image you can get a much smaller ”gap”:
Till Next Time

OBIEE Leading zeros calendar prompt (2009-06-12 15:33)

Goran did a good one:


[1]http://108obiee.blogspot.com/2009/05/how-to-add-leading-zeros -after.html
Till Next Time
1. http://108obiee.blogspot.com/2009/05/how-to-add-leading-zeros-after.html

OBIEE Availible images (2009-06-15 22:03)

Somebody asked for a complete overview of all the default images availible for OBIEE. I wrote a small
script which make a webpage including the file locations:

[1]

’OBIEE GRAPHS.VBS
’John Minkjan
’[2]Http://www.obiee101.blogspot.com
’Get the all the OBIEE images
’to pipe the output into the file use: cscript OBIEE GRAPHS.vbs > OBIEE
GRAPHS.HTML
’Declarations
Redim FolderList(0)’A flat list of the directory subtree
FolderList(0) = ”E:\OracleBI\web\appextbackslashres\s oracle10”
’This part of the script walks the directory structure and stores all of the folder paths in
the FolderList Array.
FolderIndex = 0
Do Until FolderIndex > Ubound(FolderList)
Set fso = CreateObject(”Scripting.FileSystemObject”)
Set f = fso.GetFolder(folderList(folderindex))
If f.subfolders.count > 0 Then
305
For Each folder In f.subFolders
if folder.attributes <> 22 Then ’Exclude hidden system folders
redim preserve FolderList(Ubound(FolderList)+1) FolderList(ubound(FolderList)) =
folder.path
End If
Next
End If
FolderIndex = FolderIndex + 1
Loop
’Set up a header for the output
wscript.echo ”<BODY>”
’This part of the script Works through the list of folders and outputs the data for each file
wscript.echo ”<table border=’1’>”
for n = 0 to ubound(FolderList)
Set fso = CreateObject(”Scripting.FileSystemObject”)
Set f = fso.GetFolder(FolderList(n))
For Each file In f.Files
if (right(file.Name,3) = ”jpg” or right(file.Name,3) = ”gif”) and instr(file.parentfolder,”b
mozilla 4”) = 0 then
wscript.echo ”<TR>”
wscript.echo ”<TD>”
wscript.echo file.parentfolder &”\” & file.Name
wscript.echo ”</TD>”
wscript.echo ”<TD>”
wscript.echo ”<IMG SRC=’” & file.parentfolder &”\” & file.Name & ”’/>”
wscript.echo ”</TD>”
wscript.echo ”</TR>”
End if
Next
Next
wscript.echo ”</table>”
wscript.echo ”</BODY>”

Till Next Time


1. http://lh6.ggpht.com/_qd3TDEvIh4Y/SjapKNFrFfI/AAAAAAAAB4o/xnekeDBKbr8/s1600-h/image%5B3%5D.png
2. http://www.obiee101.blogspot.com/

OBIEE Get all users from RPD (2009-06-16 21:43)

I had to get all the users from a very large repository because they where implementing a new security
model. Wrote a small script to make life easy:

’Read Users.VBS
’John Minkjan
’http:// [1]http://www.obiee101.blogspot.com/
’Get all the users from a repository
’1: Make an UDML export of the PRD using nqgenudml.exe
’2: Change the filename/location in this script
’3: Run the script from the command line cscript Read Users.VBS > users.txt
Set objFSO = CreateObject(”Scripting.FileSystemObject”)
’point this to your UDML EXPORTSet
306
objFile = objFSO.OpenTextFile(”E:\names.txt”, ForReading)
Const ForReading = 1
Dim arrFileLines()
dim strRLinedim strTemp1dim strTemp2
i=0
Do Until objFile.AtEndOfStream
strRline = objFile.ReadLine
if left(strRline,12) = ”DECLARE USER” then
Redim Preserve arrFileLines(i)
arrFileLines(i) = strRline
i=i+1
end if
Loop
objFile.Close
’Then you can iterate it like this
For Each strLine in arrFileLines
strTemp1 = MID(strLine ,15 , 50)
IF instr(strline,” }” ) >0 THEN
strTemp2 = MID(strLine , instr(strline,” {”)+ 1, (instr(strline,” }”) - (instr(strline,” {”)+ 1)))
ELSE strTemp2 = ””
END IF
WScript.Echo MID(strTemp1 ,1 , instr(strTemp1, ””””)-1) &”;” & strtemp2
Next

Till Next Time


1. http://www.obiee101.blogspot.com/

OBIEE Remote Admintool login problems (2009-06-19 22:56)

A colleague had a weird problem, he was trying to logon with the admintool to a remote BI server over
the ODBC connection.

[1]

[2]
307
The credentials were ok, so the problem must be something else.
Checking the ODBC manager revealed that he was using a ODBC with a space in the name Server 01

[3]
A close look a the connection selection screen of the admin tool revealed that OBIEE translated the
space to an underscore:

[4]
Seems you can t use space in the ODBC connection, use underscores instead.
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/Sjv7iaaKw0I/AAAAAAAACAM/lBrOD3YU7Y8/s1600-h/image%5B11%5D.png
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/Sjv7i7lXa7I/AAAAAAAACAU/tK0rJMzt73Q/s1600-h/image%5B5%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/Sjv7js-JQiI/AAAAAAAACAc/GsP9CAIiaVQ/s1600-h/image%5B8%5D.png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/Sjv7kM0nyNI/AAAAAAAACAk/pvXIxGNPbYk/s1600-h/image%5B15%5D.png

OBIEE Get all users and roles from RPD (2009-06-22 19:49)

In this post [1]http://obiee101.blogspot.com/2009/06/obiee-get-all-users-from -rpd.html I showed you


how to get the users from the RPD. Taking that as a starting point it’s a small step to get users and the
roles they have and put the export in an XLS:

308
’Read Usergroups.VBS’John Minkjan’http:// [2]http://www.obiee101.blogspot.com/
’Get all the users from a repository
’1: Make an UDML export of the PRD using nqgenudml.exe
’2: Change the filename/location in this script
’3: Run the script from the command line cscript Read Usergroups.VBS > users.txt
’4: Put the export in a XLS Pivot table
Set objFSO = CreateObject(”Scripting.FileSystemObject”)
’point this to your UDML EXPORT
Set objFile = objFSO.OpenTextFile(”E:\usergroup.txt”, ForReading)
Const ForReading = 1
Dim arrFileLines()
dim strRLine
dim strTemp1
dim strTemp2
dim strTemp3
dim intRoles
intRoles = 0
i=0
WScript.Echo ”USER NAME;FULL NAME;ROLE;COUNT”
Do Until objFile.AtEndOfStream
strRline = objFile.ReadLine
if left(strRline,12) = ”DECLARE USER” then Redim Preserve arrFileLines(i)
strTemp1 = MID(strRLine ,15 , 50)
strTemp1 = MID(strTemp1 ,1 , instr(strTemp1, ””””)-1)
IF instr(strRline,” }” ) >0 THEN
strTemp2 = MID(strRLine , instr(strRline,” {”)+ 1, (instr(strRline,” }”) - (instr(strRline,”
{”)+ 1)))
ELSE
strTemp2 = ””
END IF
arrFileLines(i) = strTemp1 &”;” & strtemp2
intRoles = 1
i=i+1
end if
if intRoles >= 1 then
if instr(strRline,”HAS ROLES (” ) >0 then
intRoles =2
end if
if intRoles =2 and instr(strRline,”HAS ROLES (” ) =0 then
strTemp3 = MID(strRline,instr(strRline, ””””)+1,50)
strTemp3 = MID(strTemp3,1,instr(strTemp3, ””””)-1)
WScript.Echo arrFileLines(i-1) &”;” & strTemp3 &”;1”
end if
if intRoles =2 and instr(strRline,”)” ) >0 then intRoles = 0
end if
end ifLoop
objFile.Close

Till Next Time

1. http://obiee101.blogspot.com/2009/06/obiee-get-all-users-from-rpd.html
2. http://www.obiee101.blogspot.com/

309
OBIEE Remember my ID and password (2009-06-23 19:19)

Page 196 of the Presentation Services Administration Guide (the example to change kmsgAuthenticateRe-
membermyIDandpassword) triggered me to look for the option to switch on this feature:

[1]
Of course the answer can be found the manual on page 18&.. It is controlled by the value of : AllowRe-
memberPassword in the instanceconfig.xml. set it to true between the serverinstance tags to switch
it on:

[2]
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SkEOkflSDJI/AAAAAAAACAs/Q2UpbRZ7W9Y/s1600-h/image%5B8%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SkEOlCIDePI/AAAAAAAACA0/xxLNElFjVEA/s1600-h/image%5B7%5D.png

OBIEE backslash in dashboard page name (2009-06-23 20:37)

We had this strange error the other night, a report with a report prompt placed on a dashboard came
back with the logon screen every time the prompt was used more than once.
After some hours of hard core hacking we found that is was caused by a backslash \ in the dashboard
page title revenue \ week . Seems that under certain conditions this screws up the internal search for
an open db connection. It seems to be occurring only with the combination report prompt and \ in
the dashboard title and certain connection pool configurations.
The solution: don t use backslashes in your dashboard page title when using a report with a report
prompt.
It s a good thing to implement as standard policy to, the backslash is often an escape character within
OBI EE.
Till Next Time
310
OBIEE Online Photoshop (2009-06-28 08:19)

Handy when you don’t have a local photoshop at hand for customiztions:
[1]http://www.smartsell.nl/index.php?option=com wrapper &view=wrapper &Itemid=295
Till Next Time
1. http://www.smartsell.nl/index.php?option=com_wrapper&view=wrapper&Itemid=295

3.7 July

OBIEE Dashboard Default Controls (2009-07-07 18:20)

Want to remove this?

This is controlled by controlmessages.xml

{webmessage name=”kmsgDashboardAlternateFormats” }
{span class=”DashboardFormatLinks” }
{?xml:namespace prefix = sawm / } {sawm:param insert=”1” } {/sawm:param }
{/span }
{span class=”DashboardFormatLinks” }
{sawm:param insert=”2” } {/sawm:param }
{/span }
{span class=”DashboardFormatLinks” }
{sawm:param insert=”3” } {/sawm:param }
{/span }
{/webmessage }

1 = refresh
2 = print
3 = Briefing
Just comment out it in your version controllemessages.xml in th CustomMessage folder.
Till Next Time

OBIEE Cool CSS trick (2009-07-08 17:57)

Check out this one from fiston :


[1]http://obieestuff.blogspot.com/2009/07/htmlcss-trick.html
Till Next Time
1. http://obieestuff.blogspot.com/2009/07/htmlcss-trick.html

OBIEE Adding custom image in Conditional Column Format (2009-07-08 18:59)

My main inspiration for this article is based on the reply of Daniel (green4X) in this OTN entry:
[1]http://forums.oracle.com/forums/thread.jspa?threadID=921926
Step 1: Locate the {OracleBI }\web\app\resashs {StyleName }\meters folder and create a subfolder
called CompagnyImages (or whatever other name you like!)
311
[2]
Step 2:
In the CompagnyImages Folder create a subfolder called images (or whatever other name you like!)

[3]
Step 3:
Put all the image you want to use in the images folder, they can any web recognized format (jpg, gif,
png&.)

[4]
Step 4:
Go back to your CompagnyImages Folder and add a index.gif picture, as far asa I know this has to be a
gif (lowercase). This will be the category in the conditional format selector:

[5]
Step 5:
If you are using OC4J BI sync the folder {OracleBI }\web\app\resashs {StyleName }\meters the one
in {OracleBI }\oc4j bi\j2ee\home\applicatio ns\analytics\analytics\ res\s {StyleName }\meters
Step 6:
Restart the presentation server and the application server (OC4J)
Step 7:
312
Test it by creating a simple report:

[6]

Till Next Time

1. http://forums.oracle.com/forums/thread.jspa?threadID=921926
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SlRf6Iowq7I/AAAAAAAACBE/XBKxyQsSJ50/s1600-h/image%5B2%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/SlRf8Yx6pjI/AAAAAAAACBM/p-T3Bb8Xe5A/s1600-h/image%5B8%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SlRgAZvcZfI/AAAAAAAACBU/3izII0WLbk8/s1600-h/image%5B11%5D.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/SlRgBfdqnFI/AAAAAAAACBc/9syabkmcTY0/s1600-h/image%5B14%5D.png
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/SlRgCHj-b-I/AAAAAAAACBk/qEY0tz2M3Z4/s1600-h/image%5B17%5D.png

OBIEE perfmon (Performance Monitor) (2009-07-09 20:23)

Not many OBIEE administrators know of it s existence:

[1]http://localhost:9704/analytics/saw.dll?perfmon

Log in as administrator:

[2]

Provides some good info on what is going on.

Till Next Time

1. http://localhost:9704/analytics/saw.dll?perfmon
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/SlRln1bV9VI/AAAAAAAACBs/OJsG9ly_Jck/s1600-h/image%5B2%5D.png

OBIEE made it to Expert on OTN (2009-07-10 09:35)

Made it to Expert level on the OBIEE OTN forum today:


313
[1]
Thanks for the points everyone!
Till Next Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/SlbvS_cQqFI/AAAAAAAACB8/FIgwj3IwPD0/s1600-h/image%5B2%5D.png

OBIEE Nifty New Blog (2009-07-10 09:47)

Add this one from Srinivas Malyala to your bloglist


[1]http://tipsonobiee.blogspot.com/
Till next Time
1. http://tipsonobiee.blogspot.com/

OBIEE Hide the page options button (2009-07-10 11:03)

I was asked on the OTN forum how to hide/remove the Page Options button on the dashboard:

[1]
A crude and simple way is to edit the dashboardtemplates.xml:

[2]<WebMessage name=”kuiPersonalizeLink”>
[3]<HTML>
[4]<span class=”minibuttonOn” style=”display:none”>
[5]<a
href=”javascript:void(null)” onclick=”return NQWPopupMenu(event,’idPersonalizationMen-
u’,null,’top’)”>
&nbsp;
<sawm:messageRef name=”kmsgDashboardPageOptionsMenu”/>
&nbsp;
<img src=”fmap:Views/sortdesc.gif” border=”none”/>
&nbsp;
</a>
</span>
<br/>
</HTML>
</WebMessage>
314
[6]
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SlcD22Ru0TI/AAAAAAAACCE/-VYDjgU3e34/s1600-h/image%5B2%5D.png
2. http://www.blogger.com/post-edit.g?blogID=7751447442026377325&postID=4713906144295593250
3. http://www.blogger.com/post-edit.g?blogID=7751447442026377325&postID=4713906144295593250
4. http://www.blogger.com/post-edit.g?blogID=7751447442026377325&postID=4713906144295593250
5. http://www.blogger.com/post-edit.g?blogID=7751447442026377325&postID=4713906144295593250
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/SlcD3nomC_I/AAAAAAAACCM/wpI7KILi2ZQ/s1600-h/image%5B5%5D.png

OBIEE New Sample Sales Analysis v 1.3 (2009-07-11 21:46)

The RPD and WebCat can be found [1]http://download.oracle.com/technology/products/bi/files/oracl


e bi sample analysis setup files.zip

[2]
It has same nice statistics demos!
Till Next Time!
1. http://download.oracle.com/technology/products/bi/files/oracle_bi_sample_analysis_setup_files.zip
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/SlRrH8fS9bI/AAAAAAAACB0/61BvT8KqGXA/s1600-h/image%5B3%5D.png

OBIEE DiagCap.vbs (2009-07-12 15:19)

Interesting if you want have to do in-depth error research:

cscript diagcap.vbs -d temp

Found in {OracleBI }\server\Bin, it collects al the interesting logs and configurations into 1 directory.
Till Next Time

OBIEE Enable508 (2009-07-13 21:17)

While going trough the list of configuration tags: [1]http://knowledge.ciber.nl/weblog/OBIEE/O-


BIEE10340CONFIGURATIO NTAGS.pdf I found this

315
{enable508 }true {/enable508 }

It changes this

[2]
Into this:

[3] Put it between the serverinstance


tag of the instanceconfig.xml
Till Next Time

Note: Have a look at Stijn his comment on 508 Compliancy

1. http://knowledge.ciber.nl/weblog/OBIEE/OBIEE10340CONFIGURATIONTAGS.pdf
2. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SlsYBPmYGgI/AAAAAAAACCc/qBsL0wDSY_A/s1600-h/Enable508_01.bmp
3. http://3.bp.blogspot.com/_qd3TDEvIh4Y/SlsYA1_6ECI/AAAAAAAACCU/uO8PErbMZVg/s1600-h/Enable508.bmp

OBIEE OTN is Down / was Down (2009-07-16 10:32)

[1]

It’s July 16th 2009 ................................


:-) Till Next Time
Note: seems to be working again...
1. http://1.bp.blogspot.com/_qd3TDEvIh4Y/Sl7lpWWj7iI/AAAAAAAACC8/tfyfOcTwcOQ/s1600-h/OTN_Down.bmp

OBIEE If you had a 1000 wishes&. (2009-07-17 21:35)

A colleague suggested a new open platform. What would you see changed or enhanced in the next release
of OBIEE. (Yes we will be getting a lot of new stuff in 11g, but still you might want more&.)
So put your wishes here!
Till Next Time!
316
OBIEE get the previous row (2009-07-22 17:54)

Thought I had it on the blog, but couldn t find it&.. Q &D way of getting a value of the previous row:

Use MSUM (MovingSum)

MSUM(”F1 Revenue”.”1-01 Revenue (Sum All)”,2) - ”F1 Revenue”.”1-01 Revenue (Sum


All)”

[1]

(Yeah I know there better ways :-) )

Till Next Time

Stijn found the original post on this subject:

http://obiee101.blogspot.com/2008/08/obiee-difference-between-two-ro ws.html

1. http://lh6.ggpht.com/_qd3TDEvIh4Y/Smc2PtKMlbI/AAAAAAAACDE/-wX-mEniwns/s1600-h/image3.png

OBIEE Hide the saved filter view link (2009-07-22 19:14)

[1]

In this article: [2]http://oraclebiblog.blogspot.com/2009/07/how-to-hide-saved-fi lter-view-link.html


John Andrzejek shows a way of doing this by editing a CSS file.

I prefer editing the viewmessages.xml.

Remove the text between the kmsgViewSavedFilterAnchorText tags. (you have to do this for every
languages you use).

[3]

Till Next Time

Edit: Stijn found the orignal : http://obiee101.blogspot.com/2008/08/obiee-difference-between-two-ro


ws.html

1. http://lh6.ggpht.com/_qd3TDEvIh4Y/SmdJCEtGUrI/AAAAAAAACDM/Fxxqmn9HGE4/s1600-h/image[2].png
2. http://oraclebiblog.blogspot.com/2009/07/how-to-hide-saved-filter-view-link.html
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/SmdJC8yo9aI/AAAAAAAACDU/Epj1LWOUexo/s1600-h/image[5].png

317
OBIEE my first server (2009-07-23 19:39)

[1]
Had to clean the attic at my parents, and found one my first computers. Wonder if OBIEE will run on
it :-) &..
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/SmdO9H4DfeI/AAAAAAAACDc/Wci-Ql5KUko/s1600-h/image%5B3%5D.png

OBIEE How to get started (2009-07-25 22:16)

About two to four times a week I get an email or an OTN request from people who want to get started
as an OBIEE consultant. In this sticky article I want to give you some basic starting points.
Get familiar with the basic terminology:

• [1]http://en.wikipedia.org/wiki/Business intelligence

Before you start with anything get up to speed with dimensional modeling.

• [2]http://www.kimballgroup.com/

(Get familiar with the works of Ralph Kimball)


Brush up your modeling capabilities, ADAPT is a good method to start with:

• [3]http://www.symcorp.com/downloads/ADAPT white paper.pdf

Read up on your Data Warehouse / BI basics:

• [4]http://blogs.oracle.com/bimadeez/2010/06/data warehousing architect - a beginners


guide.html

Get a clean (virtual) machine and first install an Oracle database. The 10g express version is OK for
starters.

318
• [5]http://www.oracle.com/technology/software/products/database/i ndex.html

Maybe you want to brush up your DB skills:

• [6]http://www.oracle.com/technology/obe/11gr1 db/index.htm

Next get the latest version of OBIEE

• [7]http://www.oracle.com/technology/software/htdocs/devlic.html?
url=/technology/software/products/ias/htdocs/101320bi.html

Download the documentation:

• [8]http://www.oracle.com/technology/documentation/bi ee.html

If you have everything installed work trough the OBE tutorials on OBIEE.

• [9]http://www.oracle.com/technology/obe/obe bi/bi ee 1013/index.html

Don t not only copy the click but be sure you understand what is happening!
Download and install the extended sales sample RPD and CAT. Dissect every report and dashboard to
understand how the reports work.

• [10]http://download.oracle.com/technology/products/bi/files/orac le bi sample analysis setup


files.zip

Have a good look around at the OTN forums. Most questions have been asked before.

• OBIEE forum: [11]http://forums.oracle.com/forums/forum.js pa?forumID=378

• OBISE forum: [12]http://forums.oracle.com/forums/forum.js pa?forumID=404

Read the works of Stephen Few on how to design a good dashboard from the visual standpoint:

• [13]http://www.perceptualedge.com/articles/Whitepapers/Common Pitfalls.pdf

• [14]http://www.amazon.com/Information-Dashboard-Design-Effective
-Communication/dp/0596100167

Learn to create reports and dashboard which people need, which is often completely different of the
reports and dashboard they intentionally asked for&

• [15]http://www.orm.net/
319
Configure your OTN account so that you watch certain users. Looking around at the forum you soon
learn which users give the most valuable answers.
Start following the OBIEE related blogs. At this moment there are about 10 your really need to watch.
(Check my blog list).
Must read material:

• [16]http://greatobi.wordpress.com/2010/01/07/can-you-just-turn-a nswers-on/ {Jeff McQuigg }


• [17]http://greatobi.wordpress.com/2009/08/24/using-report-specs- for-requirements/ {Jeff Mc-
Quigg }
• [18]http://exoticexpedition.wordpress.com/2010/01/15/6-guiding-p
rinciples-of-obiee-dashboard-design/ {Deepanshu Mehta }
• [19]http://it.toolbox.com/blogs/eye-on-obi/understanding-the-ora cle-bi-server-see-the-light-31891
{Gerard Braat }

If you need more practices check out the Oracle Learning Library:

• [20]http://apex.oracle.com/pls/apex/f?p=OTNCR:1:0

Till Next Time


EDIT:

• 20100413: Added link to Oracle Learning Library.


• 20091008: Added link to ADAPT modelling method.
• 20100107: Added must read material.
• 20100515: Added more must read material
• 20100630: Added more must read material

1. http://en.wikipedia.org/wiki/Business_intelligence
2. http://www.kimballgroup.com/
3. http://www.symcorp.com/downloads/ADAPT_white_paper.pdf
4. http://blogs.oracle.com/bimadeez/2010/06/data_warehousing_architect_-_a_beginners_guide.html
5. http://www.oracle.com/technology/software/products/database/index.html
6. http://www.oracle.com/technology/obe/11gr1_db/index.htm
7. http://www.oracle.com/technology/software/htdocs/devlic.html?url=/technology/software/products/ias/
htdocs/101320bi.html
8. http://www.oracle.com/technology/documentation/bi_ee.html
9. http://www.oracle.com/technology/obe/obe_bi/bi_ee_1013/index.html
10. http://download.oracle.com/technology/products/bi/files/oracle_bi_sample_analysis_setup_files.zip
11. http://forums.oracle.com/forums/forum.jspa?forumID=378
12. http://forums.oracle.com/forums/forum.jspa?forumID=404
13. http://www.perceptualedge.com/articles/Whitepapers/Common_Pitfalls.pdf
14. http://www.amazon.com/Information-Dashboard-Design-Effective-Communication/dp/0596100167
15. http://www.orm.net/
16. http://greatobi.wordpress.com/2010/01/07/can-you-just-turn-answers-on/
17. http://greatobi.wordpress.com/2009/08/24/using-report-specs-for-requirements/
18. http://exoticexpedition.wordpress.com/2010/01/15/6-guiding-principles-of-obiee-dashboard-design/
19. http://it.toolbox.com/blogs/eye-on-obi/understanding-the-oracle-bi-server-see-the-light-31891
20. http://apex.oracle.com/pls/apex/f?p=OTNCR:1:0

320
OBIEE Google Maps an alternative ending (2009-07-26 15:58)

In these articles:

• [1]http://obiee101.blogspot.com/2008/10/obiee-using-google-maps- q-style.html

• [2]http://obiee101.blogspot.com/2009/03/obiee-google-maps-multip le-addresses.html

I showed you how to integrated Google maps in OBIEE. Some of you got into trouble when using it on
dashboard with a Microsoft Internet Explorer. This is caused by the fact that IE doesn t like multiple
.onload events in a frameset.
Here is an alternative. In the postfix part of the narrative use this instead:

}
</script>
<script src=”[3]http://code.jquery.com/jquery-latest.js” type=”text/javascript”></script>
<script type=”text/javascript”>
$(document).ready( function() {initialize();return false;
}
);
</script>
<body onunload=”GUnload()”>
<div id=”map canvas” style=”width: 600px; height: 400px” > </div>
</body>

If your organisation doesn t allow a live connection to the internet download the jquery JS script from
here:

• [4]http://jquery.com/

Put it in a custom folder named res/my custom js as change the source to:

• <script src=”res/my custom js/jquery.js” type=”text/javascript”></script>

(Sync with the OC4J folder if needed)


Till Next Time
1. http://obiee101.blogspot.com/2008/10/obiee-using-google-maps-q-style.html
2. http://obiee101.blogspot.com/2009/03/obiee-google-maps-multiple-addresses.html
3. http://code.jquery.com/jquery-latest.js"
4. http://jquery.com/

OBIEE Moving period to date aggregations (2009-07-27 20:14)

When using the OBIEE todate functionality the BI-server starts at the first entry next higher dimensional
level. => TODATE(FACT, TIME.MONTH) means that it will start aggregating from the first month
it will find on the TIME.YEAR level.
Recently on of out customers wanted a moving todate column, Starting 21 days ago and going on for the
next 7 days after CURRENT DATE. We couldn t use a MSUM since we didn t have an entry for each
date and the total reporting period was greater then the aggregation period.
We fixed by creating a extra column on the calendar view on the database indentifying the period.
321
CASE WHEN DAY DATE <SYSDATE 21 then 00-PREVIOUS ELSE CASE WHEN
DAY DATE > SYSDATE + 7 THEN 02-NEXT ELSE 01-CURRENT END END AS
P21MINT7PLUSPERIOD

This will give 00-PREVIOUS , 01-CURRENT or 02-NEXT for P21MINT7PLUSPERIOD. It s impor-


tant that you created this in the physical layer. The TODATE function doesn t like dynamical column
in the Business Model Layer.

Next when created an alternative hierarchy: TIME.TOTAL => TIME.P21MINT7PLUSPERIOD =>


TIME.DAY. Now we could use the TODATE function like TODATE(FACT, P21MINT7PLUSPERIOD)
Which gives us a daily moving period.

Till Next Time

3.8 August

OBIEE UDML and Notepad (2009-08-02 12:13)

Sometimes you are using a trick for such a long time, you automatically suspect the whole world to know
it. As you might know the internal communication protocol for the BI-server is UDML. A simple way of
getting the UDML for a column is doing a CTRL-C of the column and pasting it into a text editor like
notepad:

[1]

[2]

How can an RPD developer make use of this feature? Well the trick also works the other way around. If
you need to make a lot of variations of column (FI: if you need to make TimeSeries variations for all you
measures) simple do some clever Find and Replace (CTRL-H) in the notepad copy.
322
[3]
Select and copy it from notepad.

[4]
And paste it back in the RPD.

[5]
This can save you literally hours of tedious clicking in the RPD.
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/SnVmyIjC7KI/AAAAAAAACDk/IKwA4_Ql-aA/s1600-h/image%5B15%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/SnVmy0Bq5NI/AAAAAAAACDs/11DJUnEH7cs/s1600-h/image%5B16%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/SnVmztn93QI/AAAAAAAACD0/wGKJMTvfm8I/s1600-h/image%5B17%5D.png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/SnVm0ZvkWQI/AAAAAAAACD8/cD4JydLMOTA/s1600-h/image%5B18%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/SnVm1MbsQ9I/AAAAAAAACEE/gfZSbASKsa8/s1600-h/image%5B31%5D.png

OBIEE www obiforums com (nice idea) (2009-08-03 19:41)

To bad it isn’t moderated, so it’s mostly spam...


[1]http://www.obiforums.com/
Till Next Time
323
1. http://www.obiforums.com/

OBIEE TopN versus the rest (2009-08-06 17:35)

Getting a TopN in OBIEE is pretty simple using the rank function:

[1]

[2]

But how can we compare this to the rest?

Let s add an extra column which gives us the rank number if it s between 1 and 10, else 99.

[3]

case when RANK(”F1 Revenue”.”1-01 Revenue (Sum All)”) <= 10 then RANK(”F1
Revenue”.”1-01 Revenue (Sum All)”) else 99 end

Remove the original filter and check the results:


324
[4]
Now add the Customer name to the extra Column:

[5]

case when RANK(”F1 Revenue”.”1-01 Revenue (Sum All)”) <= 10 then Cast( RANK(”F1
Revenue”.”1-01 Revenue (Sum All)”) as char)|| ’ - ’||”D1 Customer”.”C1 Cust Name” else ’99
- The Rest’ end

Check the results:

[6]
Now the big trick, switch to pivot table and arrange the columns like this:
325
[7]

Till Next Time

1. http://lh3.ggpht.com/_qd3TDEvIh4Y/Snr4LV9nGqI/AAAAAAAACEc/hBVFhjlYWWM/s1600-h/image6.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/Snr4MCzUoaI/AAAAAAAACEk/uFDBi-jKZrI/s1600-h/image10.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/Snr4M7P3FGI/AAAAAAAACEs/fHFA9WYn-zM/s1600-h/image14.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/Snr4NgN3LDI/AAAAAAAACE0/6Xlx2tZMHEw/s1600-h/image27.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/Snr4OYByUuI/AAAAAAAACE8/rEY8ApudFCA/s1600-h/image28.png
6. http://lh6.ggpht.com/_qd3TDEvIh4Y/Snr4PLe3HYI/AAAAAAAACFE/rcIhoUh5cs8/s1600-h/image29.png
7. http://lh6.ggpht.com/_qd3TDEvIh4Y/Snr4P4DolQI/AAAAAAAACFM/Mptkfn4CuzM/s1600-h/image30.png

OBIEE Prompts setting a default value to force a selection (2009-08-15 15:57)

Sometimes you want to force the user to make a selection to prevent heavy traffic between the DB and
the BI-server. On trick is to default the prompts to non existing values. For instance for years use 9999:

[1]

[2]

For the a category:

[3]

[4]

By default the dashboard will return no rows. It a good custom to set the default no rows text:
326
[5]

[6] ‘

Till Next Time

1. http://lh5.ggpht.com/_qd3TDEvIh4Y/Soa-yrD89uI/AAAAAAAACGE/KNpFGpvqklk/s1600-h/image3.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/Soa-zFBtFpI/AAAAAAAACGM/wwyweBvSfXo/s1600-h/image6.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/Soa-z5HZIhI/AAAAAAAACGU/uJ0joqx05mc/s1600-h/image13.png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/Soa-0RVnjmI/AAAAAAAACGc/pWLY18zM4Ls/s1600-h/image12.png
5. http://lh3.ggpht.com/_qd3TDEvIh4Y/Soa-1R2HgHI/AAAAAAAACGk/EMzm9N--wLw/s1600-h/image16.png
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/Soa-2fArCAI/AAAAAAAACGw/G5kLtCAjFYg/s1600-h/image19.png

OBIEE Google Maps linebreak in annotations (2009-08-15 19:33)

I was asked how to get from

[1] to this:
327
The problem is that the presentation server converts the HTML br symbol to htmltext ( & g t) so the
google maps api doesn’t regonise it.
This can be bypassed by using the javascript replace command:

comment.replace(/, /g,” ,<> ”));

(without the spaces)


the code to create the marker now would look like this:

var marker = createMarker(point,icon0,comment.replace(/, /g,” <> ”));

Till Next Time

1. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SoVZ0lvCEMI/AAAAAAAACFU/OcNU1fwTgeQ/s1600-h/OBIEE_MAP_2.JPG

OBIEE Prompt based on groupmembership (2009-08-17 19:05)

Somebody on OTN claimed that you can t make prompts available based on the security setting of the
user (See: [1]http://forums.oracle.com/forums/thread.jspa?threadID=943712) . Here is a workaround
based on guided navigation:

First create a report which filters results based on the group (noprompt) membership:

SELECT TIMES.CALENDAR YEAR saw 0 FROM BM SALES WHERE LOCATE(


’noprompt’,VALUEOF(NQ SESSION.GROUP)) > 0 ORDER BY saw 0
328
[2]

[3]
Based on being a member of nogroup the prompt will be available:
User1:

[4]
User2:

[5]
Till Next Time
1. http://forums.oracle.com/forums/thread.jspa?threadID=943712
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/SoWaQV0zpjI/AAAAAAAACFk/ieQMUcGZb10/s1600-h/image14.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/SoWaRAeSBXI/AAAAAAAACFs/8T979A4742I/s1600-h/image15.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SoWaR4P5vZI/AAAAAAAACF0/7GY_NmX9MEM/s1600-h/image12.png
5. http://lh3.ggpht.com/_qd3TDEvIh4Y/SoWaSQEwjEI/AAAAAAAACF8/TAC1wukVNqA/s1600-h/image13.png

OBIEE Config Tags (2009-08-19 20:45)

Updated the Config Tags file and made (hopefully) better readable: [1]OBIEE 10341 Config Tags
Till Next Time
329
1. http://docs.google.com/fileview?id=0B8vnN_oQ0v04MTYwNzI1ODktYmZkNy00MzJlLTkwNGUtYmU3ZjgwMDc3OTQ4&hl=en

OBIEE Bing Maps (2009-08-21 22:11)

I showed how to integrate Google Maps into OBIEE. Doing the same with Microsoft Bing maps is slightly
different. There service is completely asynchronous, which meant a slightly different approach for the
narrative view.
Let s start with the basics. Get your addresses and a extra column for the array counter. This is just a
RCOUNT 1.

[1]

[2]
Switch to a narrative view. In the prefix part put:

<html>
<head>
<title></title>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8”>
<script src=”http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2 ”></script>
<script>
var map = null;
var count = 0;
var adr = new Array();
var cmt = new Array();
var Center = new VELatLong(52, 6);
var ZoomLevel = 7;
function GetMap()
{

in the narrative put:

adr[@1]=”@3”;cmt[0]=”@2”;

In the postfix part put:


330
map = new VEMap(’myMap’); map.LoadMap();
map.SetCenterAndZoom(Center, ZoomLevel);
FindLocation(adr[0]);
}
function FindLocation(searchstr)
{
if (searchstr != ”)
{
map.Find(null, searchstr, null, null, null, null, false, null, null, false, AddPin);
}
}
function AddPin(layer, resultsArray, places, hasMore, veErrorMessage)
{
if(places.length > 0)
{
var shape = new VEShape( VEShapeType.Pushpin,places[0].LatLong);
shape.SetTitle(places[0].Name);
//alert(comments[count]);
shape.SetDescription(cmt[count]);
map.AddShape(shape);
map.SetCenterAndZoom(Center, ZoomLevel);
}
count++;
if(count<adr.length)
FindLocation(adr[count]);
}
</script>
</head> <script src=”http://code.jquery.com/jquery-latest.js”
type=”text/javascript”></script>
<script type=”text/javascript”>
$(document).ready( function() {GetMap();return false;
}
);
</script>
<body> <div id=’myMap’ style=”position:relative; width:800px; height:600px;”></div>
</body>

Don t forget to set Contains HTML:

[3]

Add it to the compound Layout:


331
[4]
I personally find this webservice slower then the one from Google, but maybe some better coding could
fix that. If you have any ideas, please let me know.
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/Sohn9b7LAiI/AAAAAAAACG4/hHgkb7dVFjg/s1600-h/image[6].png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/Sohn-GhgNTI/AAAAAAAACHA/atxoUGjR4-Y/s1600-h/image[7].png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/Sohn-hTsmeI/AAAAAAAACHI/9e_gN1ZTRAQ/s1600-h/image[11].png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/Sohn_qlYK2I/AAAAAAAACHQ/y8Up2pTBisw/s1600-h/image[15].png

3.9 September

Got the flu (2009-09-13 16:05)

For all of you waiting for an answer at the moment: I m having flu at this moment: ( Dutch style)

[1]
Please
be patient or post urgent questions at the OTN forum: [2]http://forums.oracle.com/forums/forum.js-
pa?forumID=378
EDIT: 19/09/2009 Sort of feeling better now, still got the sniffles. Thanks everybody for the wishes!
Till Next Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/Sqz8FaWoGlI/AAAAAAAACHY/ifzokz60Lg0/s1600-h/ill%5B3%5D.jpg
2. http://forums.oracle.com/forums/forum.jspa?forumID=378

332
OBIEE Patches 10341 (2009-09-18 21:06)

Some interesting patches for 10341 are out:


[1]8599681
Oracle BI Suite EE: Patch
DATE FORMAT ISSUE ON THE DASHBOARD PROMPT
[2]8284585
Oracle BI Suite EE: Patch
NAVIGATION/DRILL DOES NOT WORK WHEN THE COLUMN BEING DRILLED IS IN POSI-
TION 11+
[3]8796912
Oracle BI Suite EE: Patch
DISCONNECTED DOESN’T WORK ON VISTA AS NON-ADMIN USER
[4]8669206
Oracle BI Suite EE: Patch
FIREFOX 3.0 REFRESH FAILURE CAUSES UNEXPECTED BEHAVIOR IN DRILLING/VIEW SE-
LECTOR
[5]8743856
Oracle BI Suite EE: Patch
EXECUTION PLAN DOES NOT UPDATE LAST TASK AS COMPLETED
[6]8685156
Oracle BI Suite EE: Patch
BLR BACKPORT OF BUG 8394579 ON TOP OF 10.1.3.4.1 (BLR #147542)
[7]8650261
Oracle BI Suite EE: Patch
BLR BACKPORT OF BUG 8595693 ON TOP OF 10.1.3.4.1 (BLR #143831)
[8]8685120
Oracle BI Suite EE: Patch
MLR BACKPORT FOR BASE BUGS 8680924 8674235 8608837 8567128
[9]8633968
Oracle BI Suite EE: Patch
MLR BACKPORT FOR BASE BUGS 8331209 8371708 8372436
[10]8616993
Oracle BI Suite EE: Patch
BI OFFICE PATCH
[11]6702999
Oracle BI Suite EE: Patch
REPORT AGGREGATE - RANK HAS DIFFERENT BEHAVIOR VS RANK WITH AGGREGATE
[12]8611209
Oracle BI Suite EE: Patch
MLR BACKPORT FOR BASE BUGS 8332167, 8290868, 8350962
[13]8238481
Oracle BI Suite EE: Patch
NQSERROR14026 OCCURED IRREGULARLY
[14]8439796
Oracle BI Suite EE: Patch
PRIVILEGE ERROR DISPLAYED ON SELECTION OF DELIVERS RECIPIENTS
Yes you need a metalink account to download them. No, I will not download them for you and redis-
tribute them. Ask your local Oracle representative for support.

Till Next Time


1. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8599681&aru=11787679&release=

333
922101341&plat_lang=912P&patch_num_id=1104095&email=john.minkjan%40ciber.nl&userid=ml-491067.993&
2. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8284585&aru=11758316&release=
922101341&plat_lang=912P&patch_num_id=1129620&email=john.minkjan%40ciber.nl&userid=ml-491067.993&
3. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8796912&aru=11740894&release=
922101341&plat_lang=912P&patch_num_id=1127918&email=john.minkjan%40ciber.nl&userid=ml-491067.993&
4. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8669206&aru=11667148&release=
922101341&plat_lang=912P&patch_num_id=1121595&email=john.minkjan%40ciber.nl&userid=ml-491067.993&
5. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8743856&aru=11613091&release=
922101341&plat_lang=2000P&patch_num_id=1116704&email=john.minkjan%40ciber.nl&userid=ml-491067.993&
6. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8685156&aru=11602487&release=
922101341&plat_lang=912P&patch_num_id=1114790&email=john.minkjan%40ciber.nl&userid=ml-491067.993&
7. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8650261&aru=11588395&release=
922101341&plat_lang=912P&patch_num_id=1114789&email=john.minkjan%40ciber.nl&userid=ml-491067.993&
8. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8685120&aru=11570547&release=
922101341&plat_lang=912P&patch_num_id=1112085&email=john.minkjan%40ciber.nl&userid=ml-491067.993&
9. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8633968&aru=11512244&release=
922101341&plat_lang=912P&patch_num_id=1108436&email=john.minkjan%40ciber.nl&userid=ml-491067.993&
10. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8616993&aru=11446193&release=
922101341&plat_lang=912P&patch_num_id=1103463&email=john.minkjan%40ciber.nl&userid=ml-491067.993&
11. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=6702999&aru=11446270&release=
922101341&plat_lang=912P&patch_num_id=1103471&email=john.minkjan%40ciber.nl&userid=ml-491067.993&
12. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8611209&aru=11435901&release=
922101341&plat_lang=912P&patch_num_id=1102657&email=john.minkjan%40ciber.nl&userid=ml-491067.993&
13. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8238481&aru=11399535&release=
922101341&plat_lang=912P&patch_num_id=1099646&email=john.minkjan%40ciber.nl&userid=ml-491067.993&
14. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8439796&aru=11383294&release=
922101341&plat_lang=912P&patch_num_id=1098237&email=john.minkjan%40ciber.nl&userid=ml-491067.993&

OBIEE ODBC Client (2009-09-19 00:43)

One of the features you get when doing an OBIEE install on windows is the ODBC Client application.

[1]
I never had any use for it until I saw some entries by Nicolas and @lex on some secret procedures.
[2]http://gerardnico.com/wiki/dat/obiee/presentation service/obiee nqs drill
[3]http://siebel-essentials.blogspot.com/2009/08/oracle-bi-serve r-nqs-procedures.html
It appears to by a demo/check tool to test your sql when developing a application which uses a ODBC
connection to the BI-server. I couldn t find any documentation, so tips pointers are welcome.
After starting the application you have to click:
334
[4]
File > Open Database to make a connection:

[5]
The usage of the database field is unclear for me at the moment.
From the utility menu you can directly test your BI-server sql:

[6]

[7]
From the View Schema you get an very unusable info of the catalog:

[8]
I couldn t get the query list to work&.
335
[9]
It seems this is a R &D/Q &D tool for the development team which somehow made it s way into the
production release. I you have some more info or usage- for it please let me know.
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/SrAYglsGqZI/AAAAAAAACHg/SyaXw39_H8E/s1600-h/image2.png
2. http://gerardnico.com/wiki/dat/obiee/presentation_service/obiee_nqs_drill
3. http://siebel-essentials.blogspot.com/2009/08/oracle-bi-server-nqs-procedures.html
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/SrAYhWn07dI/AAAAAAAACHo/asuM8Pj3b0g/s1600-h/image5.png
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/SrAYh1fZnTI/AAAAAAAACHw/Vxlq_3aZVZc/s1600-h/image8.png
6. http://lh5.ggpht.com/_qd3TDEvIh4Y/SrAYinZe3vI/AAAAAAAACH4/ku60vMlB3VM/s1600-h/image11.png
7. http://lh5.ggpht.com/_qd3TDEvIh4Y/SrAYjX_LECI/AAAAAAAACIA/y2eQ6IHurUU/s1600-h/image14.png
8. http://lh6.ggpht.com/_qd3TDEvIh4Y/SrAYkM4tDiI/AAAAAAAACII/5GeiIR8KleQ/s1600-h/image17.png
9. http://lh4.ggpht.com/_qd3TDEvIh4Y/SrAYk8X4JYI/AAAAAAAACIQ/SjpJMZdjAZ8/s1600-h/image20.png

OBIEE a blog lost&. (2009-09-20 09:06)

Recently Kevin C. [1]http://oraclebi.soundvoid.net/ mailed me that he is stopping his blogging activities


for the time being and clearing his blog. He asked me if I wanted to save his most interesting OBIEE
articles.
First of all I want to wish Kevin all the best for the future.
In the next days I will repost his OBIEE related articles under the normal labels and add a special
KEVIN C tag.
Till Next Time
1. http://oraclebi.soundvoid.net/

OBIEE LDAP Problems? Try this! (repost) (2009-09-22 00:20)

On my previous project, we had been facing a very strange LDAP-related issue for a while, which pre-
vented us from upgrading to OBIEE 10.1.3.4. The problem was that upon doing an install of 10.1.3.4,
users who accessed the server using an LDAP account could no longer log in. Even worse, when someone
tried to log in using an LDAP account, the entire BI server would crash and would need to be restarted.
Our BI server was hosted on a Red Hat Linux environment, so the resolution of this problem is OS-
specific.
After going through many rounds of trying to figure this problem out, we filed a ticket with Oracle
Support. About 3-4 weeks later our problem was solved - we needed to set the environment variable LD
PRELOAD. Apparently this was not being set after our attempted upgrades to 10.1.3.4.
LD PRELOAD is a way of setting the priority of certain libraries, it loads the specified library first.
This is called interposing libraries. Suppose you have an application that makes a call to some function
that exists in multiple libraries. If you use LD PRELOAD to load a particular library first, then the
application will go to that library and use its functions, instead of some other library. LD PRELOAD
essentially replaces the functionality of another library.
So the actual problem was traced back to a possible symbol clash that occurs between libraries called by
the application (OBIEE), and other 3rd party libraries. Our LDAP user logins are in the format of an
email address, so it s possible the [1]mailto: %27@ %27 symbol could causing the issue - I m really not
sure.
336
We ran the command:

export LD_PRELOAD=/path/to/libibmldap.so

Then we restarted the BI Server and Presentation services, and the problem went away!
This article was original posted on the Kevin C. oraclebi blog. See:
[2]http://obiee101.blogspot.com/2009/09/obiee-blog-lost.html
Till Next Time
1. mailto:%27@%27
2. http://obiee101.blogspot.com/2009/09/obiee-blog-lost.html

OBIEE Tooltip Text in Column Heading (2009-09-22 15:33)

On the forums every now and then the question on how to achieve this:

[1]
comes along, and most of the time the conclusion is that it can t be done without some serious JS hacking.
Here is a workaround which takes a little bit less effort:
First create an extra column containing your ToolTip text and column header like:

’<div title=”This text explains the contence of the column”>1-01 Revenue (Sum
All)</div>’

[2]
Set the display format to HTML:

[3]
Put the result in a pivot table:
337
[4]
Till Next Time
Edit: Here is an even quicker method:
[5]http://obieepractice.blogspot.com/2008/11/column-headerooltip -mouse-over.html
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/SrjRZZjQNvI/AAAAAAAACI8/y5NaC2UFndM/s1600-h/image[3].png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/SrjRkelVFEI/AAAAAAAACJE/9p4Et5gshm0/s1600-h/image[15].png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/SrjRwKVcHeI/AAAAAAAACJM/E1f0Zi5ID-k/s1600-h/image[11].png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/SrjR9rxpDfI/AAAAAAAACJU/596U1By7SqQ/s1600-h/image[19].png
5. http://obieepractice.blogspot.com/2008/11/column-headerooltip-mouse-over.html

OBIEE Grand Totals with Calculated Columns (repost) (2009-09-24 00:21)

This is a bit of a specific problem, but I could see it being something that those new to OBIEE could
run into. It deals with incorrect Grand Total values being displayed for a Calculated Column when using
report filters.
Consider the following report:
[1]
In this report, Amount A and Amount B are standard columns in a database table, and Variance is a
calculated column in the repository. The calculation for Variance is 100 * (Amount B - Amount A) /
Amount A. So, going by the Grand Total amounts in the report above, 100 * (696 - 550) / 550 = 26.55.
Suppose you want to filter the results of this request so that it only shows items having a Variance greater
than 30:
[2]
Note the Grand Total for Amount A and Amount B are summed correctly for the filter, but the Variance
still shows 26.55. Obviously, this is incorrect, so what s going on here? The filtered amount should be
reported as 100 * (220 - 130) / 130 = 69.23.
If you want to show the correct variance for the filtered Grand Total amounts, you need to enable an
option in your instanceconfig.xml file. Open the file $OracleBIData/web/config/instanceconfig.xml, and
add the following line somewhere inside your <ServerInstance> and </ServerInstance> section:

<ReportAggregateEnabled>true</ReportAggregateEnabled>
Make sure you don t accidentally put this inside an element nested inside <ServerInstance>,
or it won t work.

Save instanceconfig.xml, and restart your BI Server and Presentation service.


Now, the correct amount should be shown for the filtered Grand Total variance:
338
[3]
This was previously a bug in OBIEE that was addressed by adding the ReportAggregateEnabled option.
It s not really documented anywhere other than on Metalink, so hopefully this will be helpful to someone.
This article was original posted on the Kevin C. oraclebi blog. See:
[4]http://obiee101.blogspot.com/2009/09/obiee-blog-lost.html
Till Next Time
1. http://oraclebi.soundvoid.net/wp-content/uploads/2008/10/unfiltered-unagg.jpg
2. http://oraclebi.soundvoid.net/wp-content/uploads/2008/10/filtered-unagg.jpg
3. http://oraclebi.soundvoid.net/wp-content/uploads/2008/10/filtered-agg.jpg
4. http://obiee101.blogspot.com/2009/09/obiee-blog-lost.html

OBIEE Using the Top N Filter (repost) (2009-09-26 00:22)

Learn to use the Top N filter to filter results in Answers requests. Covers advanced usage of the Top N
filter using the by clause, to show the Top N results within a particular grouping (i.e., Top N Customer
Revenue amounts by Product):

[1]
Suppose you want to see the Top 5 results from an Answers report, such as the Top 5 overall customers
by revenue:
[2]
This can easily be acheived by using a simple in Top N filter:
[3]
What if you want to see the Top 5 Customers by Revenue for each Product? Using a simple Top N filter
won t work in this case, as it will produce the following results:
[4]
To get OBIEE to show the correct results, you need to take the Top N filter into SQL mode. Starting
with a normal Top N filter, click Advanced at the bottom of the filter window and select Convert this
filter to SQL:
[5]
Next, edit the filter with the by clause enclosed in red - unfortunately you ll have to type the column
name in manually, so be sure to use quotes if the column or presentation table contains spaces. The
column used here is the field you want to group by (Product, in this example):
[6]
Now, the Top N filter will give the desired results - The Top 5 Customers by Product:
[7]
The full request criteria (notice the sorting options used to produce the results above):
[8]
This article was original posted on the Kevin C. oraclebi blog. See:
[9]http://obiee101.blogspot.com/2009/09/obiee-blog-lost.html
Till Next Time
1. http://oraclebi.soundvoid.net/wp-content/uploads/2008/09/top_5_custbyproduct_rpt_crop.jpg
2. http://oraclebi.soundvoid.net/wp-content/uploads/2008/09/top_5_customers_rpt.jpg
3. http://oraclebi.soundvoid.net/wp-content/uploads/2008/09/top_5_customers.jpg
4. http://oraclebi.soundvoid.net/wp-content/uploads/2008/09/top_5_custbyproduct_wrong.jpg
5. http://oraclebi.soundvoid.net/wp-content/uploads/2008/09/top_5by_advanced.jpg
6. http://oraclebi.soundvoid.net/wp-content/uploads/2008/09/top_5by_advancedsql.jpg
7. http://oraclebi.soundvoid.net/wp-content/uploads/2008/09/top_5_custbyproduct_rpt.jpg

339
8. http://oraclebi.soundvoid.net/wp-content/uploads/2008/09/top_5by_criteria.jpg
9. http://obiee101.blogspot.com/2009/09/obiee-blog-lost.html

OBIEE When the Top N Filter fails& (repost) (2009-09-28 00:25)

If you ve read my previous post about [1]Using the Top N Filter, this will be a follow up post that covers
a trick I discovered when the Top N filter didn t do what I wanted it to do.
My requirement is to only show data for the past 6 weeks. I have a base table that has massive amounts
of weekly data, designated by a column week ending. At first, I thought I could simply add a Top N
filter for ”Week Ending” in Top 6. This didn t work however, since I have multiple rows containing the
same date - it only returned data for the latest date in the table (which makes sense, because that date
would be the same for each of the Top 6 since it occurs many times). I also tried using the DISTINCT
keyword in various places in the filter formula, as well as in the column definition - still no luck.
What I ended up doing was the following:

1. I decided to turn to SQL to give me the results I need. I started by building a query that gave me
the Top 6 dates in my base table:

SELECT * FROM (SELECT DISTINCT week_ending


FROM base_table
ORDER BY week_ending DESC)
WHERE rownum <= 6;
WEEK_ENDING
-------------------------
13-JUL-08
06-JUL-08
29-JUN-08
22-JUN-08
15-JUN-08
08-JUN-08
6 rows selected

2. Next, I used the query above in the WHERE clause for a view:

CREATE OR REPLACE VIEW top_six_weeks_vw AS


SELECT *
FROM base_table bt
WHERE bt.week_ending IN (SELECT * FROM (SELECT DISTINCT week_ending
FROM base_table
ORDER BY week_ending DESC)
WHERE rownum <= 6);

3. Now, simply model this view in the OBIEE Repository, and your Answers reports will only display
the latest 6 weeks worth of data.

This article was original posted on the Kevin C. oraclebi blog. See:
[2]http://obiee101.blogspot.com/2009/09/obiee-blog-lost.html
Till Next Time
1. http://oraclebi.soundvoid.net/2008/09/when-the-top-n-filter-fails/2008/09/using-the-top-n-filter/
2. http://obiee101.blogspot.com/2009/09/obiee-blog-lost.html

340
OBIEE Open a Linux-Hosted OBIEE Repository in Online Mode (repost)
(2009-09-30 00:26)

For those who run their OBIEE servers in a Linux environment, it s possible to open your repository in
Online mode from your Windows-based local machine. I just discovered this, so I thought I would pass
it along. This assumes that you have the appropriate version of OBIEE installed on your local machine.
Update: Do not use spaces in your System DSN names. You will get an error when trying to connect to
that server.
[1]
This article has quite a few screenshots, so continue reading by clicking below:
All you need to do is create a new System DSN: Go to Start > Run&, and type odbcad32, then press
enter (or open ODBC Data Sources from Administrator Tools).
Click the System DSN tab and click Add:
[2]
Choose Oracle BI Server as the Driver:
[3]
Give the DSN a Name (no spaces) and optionally a Description, and specify the hostname of your BI
server, then click Next:
[4]
Type a login ID and Password for your repository, and specify the BI Server Port. Check the option
Connect to Oracle BI Server to obtain default settings& to make life easier, and click Next:
[5]
Accept the defaults if you re happy with them, and click Finish:
[6]
You ve now added a new System DSN to your local machine and are ready to open the repository in
Online mode:
[7]
In the Administrator tool, choose the blue folder to open in online mode, and choose the DSN you just
created from the list below the login prompt. Enter your login details and click Open to work on your
repository in Online mode:

Of course, as the OBIEE documentation recommends, I would only use Online mode for making small
changes to your repository. Any significant amount of work should be done in offline mode.
This article was original posted on the Kevin C. oraclebi blog. See:
[8]http://obiee101.blogspot.com/2009/09/obiee-blog-lost.html
Till Next Time
1. http://oraclebi.soundvoid.net/wp-content/uploads/2008/10/obiee-admin1.jpg
2. http://oraclebi.soundvoid.net/wp-content/uploads/2008/10/system-dsn-tab.jpg
3. http://oraclebi.soundvoid.net/wp-content/uploads/2008/10/driver.jpg
4. http://oraclebi.soundvoid.net/wp-content/uploads/2008/10/config1.jpg
5. http://oraclebi.soundvoid.net/wp-content/uploads/2008/10/config2.jpg
6. http://oraclebi.soundvoid.net/wp-content/uploads/2008/10/config3.jpg
7. http://oraclebi.soundvoid.net/wp-content/uploads/2008/10/new-system-dsn.jpg
8. http://obiee101.blogspot.com/2009/09/obiee-blog-lost.html

3.10 October

OBIEE Multiple repository s / Multiple presentation servers (2009-10-02 21:51)

Excellent research by RNM:


341
• [1]http://rnm1978.wordpress.com/2009/08/25/multiple-rpds-on-one- server-part-1-the-bi-server/

• [2]http://rnm1978.wordpress.com/2009/08/25/multiple-rpds-on-one-
server-part-2-presentation-services/

Need I say more?


Till Next Time
1. http://rnm1978.wordpress.com/2009/08/25/multiple-rpds-on-one-server-part-1-the-bi-server/
2. http://rnm1978.wordpress.com/2009/08/25/multiple-rpds-on-one-server-part-2-presentation-services/

a generic calendar dimension (2009-10-29 20:09)

Finally had the time to activate on of my other blogs. This one will contain my more generic articles. Here
is the first one: [1]http://bizintell101.blogspot.com/2009/10/bi-101-generic-calen dar-dimension.html
Feel free to comment.
Till Next Time
1. http://bizintell101.blogspot.com/2009/10/bi-101-generic-calendar-dimension.html

3.11 December

OBIEE Making an OR filter (2009-12-17 09:46)

Question I got from the blog, how to make an or filter in OBIEE.


Say you want the revenue for 2008 or the 2007 Q1. First make your report including the filters:

[1]

Next click AND [2] to change into OR [3] . This way you can make complex filters:

[4]
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/Synv5WG-3EI/AAAAAAAACLY/JlJ8uLelJQg/s1600-h/image%5B2%5D.png
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/Synv6Xcrq_I/AAAAAAAACLg/N10bI1RANlM/s1600-h/image%5B5%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/Synv7DGTKZI/AAAAAAAACLo/MbBSbA9ospw/s1600-h/image%5B8%5D.png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/Synv74hSXnI/AAAAAAAACLw/Ra43PQ8QBsk/s1600-h/image%5B11%5D.png

342
OBIEE Top N Months across (2009-12-17 10:25)

I was asked how to get the Top 10 customers for the year 2007 and put there revenue per month. First
make the basic report and filter, put the revenue column in twice:

[1]
Open the second revenue column and change the formula to:

[2]
SUM(”F1 Revenue”.”1-01 Revenue (Sum All)” BY ”D1 Customer”.”C1 Cust Name”)
Create a Top N filter for the second revenue column:

[3]

[4]
Switch to PIVOT table:

[5]
343
Place the columns in the right places, set the aggregation:

[6]

[7]
Till Next Time.
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/Syn47TtKllI/AAAAAAAACL4/0g7VrQ9SvGQ/s1600-h/image%5B3%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/Syn48Nll7FI/AAAAAAAACMA/KC40kAimNvk/s1600-h/image%5B7%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/Syn486LydkI/AAAAAAAACMI/sUCaI3JEERw/s1600-h/image%5B11%5D.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/Syn49vlYKbI/AAAAAAAACMQ/lHKzLJGvUfk/s1600-h/image%5B14%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/Syn4-TPPeVI/AAAAAAAACMY/MP2vYPp0LkQ/s1600-h/image%5B18%5D.png
6. http://lh6.ggpht.com/_qd3TDEvIh4Y/Syn4_MnkmkI/AAAAAAAACMg/UT1T2VCc4Lc/s1600-h/image%5B31%5D.png
7. http://lh3.ggpht.com/_qd3TDEvIh4Y/Syn4_2kW6sI/AAAAAAAACMo/ruWYkixvrws/s1600-h/image%5B30%5D.png

344
Chapter 4

2010

4.1 January

OBIEE a new year (2010-01-02 20:13)

The last months of 2009 have been very very hectic. At lot of customers wanted to finish there projects,
not leaving me a lot of blog time.
Still we had 343.706 page views on OBIEE101, thanks guys!
This year (2010) we will hopefully see the all new OBIEE 11g. Rumors say at the beginning of Q3. The
BI market is still recovering from the crash resulting in many short term projects which are mainly
maintenance or extensions to existing systems.
Hope you all have a good year and see you around at the forums, the blogs or the conventions.
Till Next Time
John

OBIEE PATCHES 10.1.3.4.1 part 2 (2010-01-03 20:51)

Some interesting new patches have been released:

Patch ID Description Updated Size


9149026 Oracle BI Suite EE: Patch: NQSSERVER CRASHES RUNNING QUERIES
AFTER UPGRADE TO 10.1.3.4.1 FROM 10.1.3.4.0 24-dec-09 28.1 MB
8342897 Oracle BI Suite EE: Patch: CANCEL A QUERY AND RE-RUN : ESSBASE
RETURNS ALREADY CONNECTED TO SERVER"" 24-dec-09 28.1 MB
8599681 Oracle BI Suite EE: Patch: DATE FORMAT ISSUE ON THE DASHBOARD
PROMPT 24-dec-09 12.9 MB
9179171 Oracle BI Suite EE: Patch: MERGE REQUEST ON TOP OF 10.1.3.4.1
FOR BUGS 8444119 8561377 8664686 8561472 11-dec-09 2.9 MB
9024802 Oracle BI Suite EE: Patch: SUBOPTIMAL QUERY GENERATED IN SOME
HIERARCHY WITH TERADATA BACKEND 7-dec-09 28.1 MB
9143304 Oracle BI Suite EE: Patch: MERGE REQUEST ON TOP OF 10.1.3.4.1
FOR BUGS 9081493 8599681 1-dec-09 13.0 MB
9139499 Oracle BI Suite EE: Patch: MERGE REQUEST ON TOP OF 10.1.3.4.1
FOR BUGS 8599681 8921914 9073754 21-nov-09 13.3 MB
7195230 Oracle BI Suite EE: Patch: GOVERNANCE RULES THROUGH SOAP :
RETAIN RULES FOR DIFFERENT CATEGORY 20-nov-09 273.3 KB
8885426 Oracle BI Suite EE: Patch: UPGRADING TO 10.1.3.4.1 RESULTS IN
345
INCORRECT TRANSALTION OF NO RESULT TO &#39 20-nov-09 390.2 KB
8978017 Oracle BI Suite EE: Patch: ADD OR REMOVE PROGRAMS" SHOWS WRONG
VERSION FOR BI OFFICE ADD-IN" 19-nov-09 34.3 MB
9081493 Oracle BI Suite EE: Patch: MERGE REQUEST ON TOP OF 10.1.3.4.1
FOR BUGS 8439796 8468309 6-nov-09 1.7 MB
7438317 Oracle BI Suite EE: Patch: BI SERVER TAKES OVER 30 MINUTES TO
STARTUP 6-nov-09 519.9 KB
8803399 Oracle BI Suite EE: Patch: ASSERTION_FAILURE ERROR WHEN
DASHBOARD NAME CONTAINS KOREAN CHARS 6-nov-09 1.6 MB
8927890 Oracle BI Suite EE: Patch: UPDATE FOR OBIEE 10.1.3.4.1
20-okt-09 191.2 KB
8669206 Oracle BI Suite EE: Patch: FIREFOX 3.0 REFRESH FAILURE CAUSES
UNEXPECTED BEHAVIOR IN DRILLING/VIEW SELECTOR 12-okt-09 110.8 MB
8760212 Oracle BI Suite EE: Patch: COMMANDS FOR FULL AND INCREMENTAL
SHOULD ALLOW DB SPECIFIC TEXTS 12-okt-09 6.8 MB
8743856 Oracle BI Suite EE: Patch: EXECUTION PLAN DOES NOT UPDATE LAST
TASK AS COMPLETED 12-okt-09 6.8 MB
8990093 Oracle BI Suite EE: Patch: MLR BACKPORT FOR BASE BUGS 8797200
8909410 8603005 6-okt-09 13.1 MB
8565823 Oracle BI Suite EE: Patch: MODIFYING VIEWS.CSS .PTSECTSTABLE
PADDING 0PX DOES NOT HAVE ANY IMPACT 25-sep-09 179.9 KB
8797200 Oracle BI Suite EE: Patch: METADATA CACHE IS NOT RELEASED WHEN
THE GROUP CHANGES FOR THE USER 18-sep-09 13.1 MB
8633968 Oracle BI Suite EE: Patch: MLR BACKPORT FOR BASE BUGS 8331209
8371708 8372436 17-sep-09 906.9 KB
8284585 Oracle BI Suite EE: Patch: NAVIGATION/DRILL DOES NOT WORK WHEN
THE COLUMN BEING DRILLED IS IN POSITION 11+ 8-sep-09 9.2 KB
8796912 Oracle BI Suite EE: Patch: DISCONNECTED DOESN’T WORK ON VISTA
AS NON-ADMIN USER 3-sep-09 128.7 KB
8685156 Oracle BI Suite EE: Patch: BLR BACKPORT OF BUG 8394579 ON TOP
OF 10.1.3.4.1 (BLR #147542) 28-jul-09 1.3 MB
8650261 Oracle BI Suite EE: Patch: BLR BACKPORT OF BUG 8595693 ON TOP
OF 10.1.3.4.1 (BLR #143831) 24-jul-09 313.3 KB
8685120 Oracle BI Suite EE: Patch: MLR BACKPORT FOR BASE BUGS 8680924
8674235 8608837 8567128 21-jul-09 624.6 KB
6702999 Oracle BI Suite EE: Patch: REPORT AGGREGATE - RANK HAS
DIFFERENT BEHAVIOR VS RANK WITH AGGREGATE 19-jun-09 147.7 KB
8616993 Oracle BI Suite EE: Patch: BI OFFICE PATCH 19-jun-09 54.0 MB
8611209 Oracle BI Suite EE: Patch: MLR BACKPORT FOR BASE BUGS 8332167,
8290868, 8350962 18-jun-09 716.0 KB
8238481 Oracle BI Suite EE: Patch: NQSERROR14026 OCCURED IRREGULARLY
9-jun-09 10.3 KB
8439796 Oracle BI Suite EE: Patch: PRIVILEGE ERROR DISPLAYED ON
SELECTION OF DELIVERS RECIPIENTS 4-jun-09 1.6 MB

Yes you need a metalink/support account to download them. No, I will not download them for you and
redistribute them. Ask your local Oracle representative for support.

Till next time


346
OBIEE Navigating from report to report (2010-01-05 19:56)

On the forums every so often you see the question: I want to navigate from report A to report B and
pass the value where the user clicks as filter . This is actually quite simple in OBIEE. Let s start with
a simple base report showing a list of available markets:

[1]

Next create a target report containing markets and revenue:

[2]

Next go back to your base report and open the column properties screen for your Market column:

[3]

Set the navigation target:

[4]

If you now test the report you will see that the clicked value isn t passed as filter
347
[5]

This is because the report isn t let filter aware. Go to your target report and set a filter on the Market
column of the type is prompted.

[6]

If you now test it again, you will see the filter value is passed:

[7]

Till Next Time

1. http://lh6.ggpht.com/_qd3TDEvIh4Y/S0I58US2pCI/AAAAAAAACMw/FvVKVMw4O18/s1600-h/image%5B2%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/S0I59L_h8KI/AAAAAAAACM4/-fo-DQq6i9w/s1600-h/image%5B5%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/S0I59u3mrHI/AAAAAAAACNA/lc0NTx--0u0/s1600-h/image%5B18%5D.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/S0I5-XWsf2I/AAAAAAAACNI/sv54dkV_B1w/s1600-h/image%5B20%5D.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/S0I59L_h8KI/AAAAAAAACM4/-fo-DQq6i9w/s1600-h/image%5B5%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/S0I5-0ISHnI/AAAAAAAACNQ/JTHxJrpVqJA/s1600-h/image%5B19%5D.png
7. http://lh5.ggpht.com/_qd3TDEvIh4Y/S0I5_tic0cI/AAAAAAAACNY/Xyo5zU2gWUo/s1600-h/image%5B17%5D.png

OBIEE Aggregate BY part 2 (2010-01-08 21:18)

About two year ago I wrote an article on using the BY statement to pin your calculation on cer-
tain level. ([1]http://obiee101.blogspot.com/2008/02/obiee-aggregate-by.ht ml). Recently Kurt Wolf
of KPI partners did a good analysis on how to pin the calculations on for the complete request.
([2]http://kpipartners.blogspot.com/2009/12/aggregate-function .html) Here is a simple implementation
of his findings.

Let s start with a simple report, YEAR and AVG PRICE (”F1 Revenue”.”1-01 Revenue (Sum All)”/”F2
Units”.”2-01 Billed Qty (Sum All)”):
348
[3]
If we drill down the time dimension, we will see the AVG Price change accordingly:

[4]
We can pin an extra avereg column to the calendar year by using the AGGREGATE BY function
(AGGREGATE((”F1 Revenue”.”1-01 Revenue (Sum All)”/”F2 Units”.”2-01 Billed Qty (Sum All)”) by
”D0 Time”.”T05 Per Name Year”)) (IT S NOT in the formula editor, you will have to type it!)

[5]
But what if we want it for the whole report? Simple leave the BY part empty: (AGGREGATE((”F1
Revenue”.”1-01 Revenue (Sum All)”/”F2 Units”.”2-01 Billed Qty (Sum All)”) by )

[6]
Till Next Time
1. http://obiee101.blogspot.com/2008/02/obiee-aggregate-by.html
2. http://kpipartners.blogspot.com/2009/12/aggregate-function.html
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/S0JNXLrYFdI/AAAAAAAACNg/c-8SoNPhOks/s1600-h/image%5B2%5D.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/S0JNXuR4DOI/AAAAAAAACNo/RwaI3ncicLs/s1600-h/image%5B10%5D.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/S0JNYUQgjuI/AAAAAAAACNw/7Omgg-eIRds/s1600-h/image%5B9%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/S0JNY0w-GkI/AAAAAAAACN4/MlfGzQa0szc/s1600-h/image%5B14%5D.png

OBIEE ResultRowLimit (2010-01-13 18:52)

I still wonder why people want to do it: A report with more than 65000 rows, but still&.
You can override the maximum number of rows that can appear in a Table view by modifying the Oracle
349
BI Presentation Services configuration file (instanceconfig.xml) to add the following entry.

<ResultRowLimit>95000</ResultRowLimit>

The internal default is 65000. If the user exceeds this value, the server returns an error message when
the table view is rendered.
[1]NOTE: This entry applies to the Table view, not the Pivot Table view.
The ResultRowLimit entry controls the maximum value that can be set for the DefaultRowsDisplayed,
DefaultRowsDisplayedInDelivery, and the DefaultRowsDisplayedInDownload (fi download to Excel) en-
tries.
To set DefaultRowsDisplayed, DefaultRowsDisplayedInDelivery, or DefaultRowsDisplayedInDownload to
a value that exceeds the current value of ResultRowLimit, you also must increase the value of Resul-
tRowLimit to equal or exceed the value that you want to set.

Till Next Time


1. file://localhost/mnt/ext/blogbooker/tmp/sm6j0byg/sm6j0byg-body.tex.lynx.html

OBIEE Google Charts part 1 (2010-01-16 21:19)

or how to get from:

[1]
to this:

[2]
in 5 minutes.
It uses the same technique we used with the googlemaps. Create a new narrative view.
In the prefix part put:
350
<!–Get an empty map–>
<img src=”[3]http://chart.apis.google.com/chart?cht=t &chm=europe &chs=440x220”
id=”GD mapImg”/>
<!–chm ==> geographical area (africa, asia, europe, middle east, south america, usa,
world)–>
<!–chs ==> canvas size max 440X220–>
<!–more info [4]http://code.google.com/intl/nl/apis/chart/ –>
<script type=”text/javascript”>
// setting up parameters
var chartURL = ”[5]http://chart.apis.google.com/chart?cht=t &chtm=europe &chs=440x220
&chds=1,6”;
var chartBGColor = ” &chf=bg,s,EAEAEA”;
//specify the gradient: <default color>, <start of gradient>,.., <end of gradient>
var chartPalette = ” &chco=AEF5EB,EFE6CE,DFAE6B,1F6913,D94801,A63603,7F2704”;
var chartDataLabels = new Array();
var chartData = new Array();

In the Narrative part put:

// Use the push command to fill the array:


chartDataLabels.push(’@1’);
chartData.push(@3);

In the postfix part put:

// putting it all together


chartURL = chartURL +
chartBGColor + chartPalette + ” &chld=” + chartDataLabels.toString().replace(/,/g,”) +
” &chd=t:” + chartData.toString();;
// now get the image from Google Chart
document.getElementById(’GD mapImg’).src = chartURL;
</script>

Remember to check the HTML box:

[6]
There are maps for africa, asia, europe, middle east, south america, usa and the world. For more info
see: [7]http://code.google.com/intl/nl/apis/chart/
Till Next Time
This article is also published on [8]http://knowledge.ciber.nl
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/S0OfKqomQyI/AAAAAAAACOA/72WgJoV7Xzw/s1600-h/image%5B2%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/S0OfLWsIYeI/AAAAAAAACOI/3i01gi3Snsw/s1600-h/image%5B6%5D.png
3. http://chart.apis.google.com/chart?cht=t&chm=europe&chs=440x220"
4. http://code.google.com/intl/nl/apis/chart/
5. http://chart.apis.google.com/chart?cht=t&chtm=europe&chs=440x220&chds=1,6";
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/S0OfMH7LMWI/AAAAAAAACOQ/HL_z7yy9kVQ/s1600-h/image%5B9%5D.png
7. http://code.google.com/intl/nl/apis/chart/
8. http://knowledge.ciber.nl/

351
OBIEE Google Charts part 2 (2010-01-19 20:28)

Impress with real venn diagrams:

[1]
First get your data:

[2]
add an extra column with a row count:

[3] [4]
Hide it:

[5]
add an narrative view:

<img src=”” id=”venn chart@9”/> <!– creates an unique img tag –>
<script type=”text/javascript”>
var chartURL = ”[6]http://chart.apis.google.com/chart?cht=v &chs=200x200
&chd=t:@2,@3,@4,@5,@6,@7,@8 &chtt=@1 &chdl=a|b|c &chdlp=b” ;
/* cht = chart type
chs = chart size
chd = chart data
chtt = chart title
chdl = chart legend
chdlp= chart legend position
more info [7]http://code.google.com/intl/nl/apis/chart/ */
/* get the chart */
document.getElementById(’venn chart@9’).src = chartURL;
</script>
Put all together:
352
[8]
Till Next Time
This article is also published on http://knowledge.ciber.nl
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/S0Y2FMS-o2I/AAAAAAAACOY/10PPhaM8LQk/s1600-h/image%5B20%5D.png
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/S0Y2F3z8uQI/AAAAAAAACOg/lxM4fLQIEGs/s1600-h/image%5B7%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/S0Y2GfX38tI/AAAAAAAACOo/JM-tBLXs2QU/s1600-h/image%5B10%5D.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/S0Y2HNmG5qI/AAAAAAAACOw/l4GycFqPBH0/s1600-h/image%5B13%5D.png
5. http://lh3.ggpht.com/_qd3TDEvIh4Y/S0Y2HlZmDVI/AAAAAAAACO4/runYsoR4lBU/s1600-h/image%5B16%5D.png
6. http://chart.apis.google.com/chart?cht=v&chs=200x200&chd=t:
@2,@3,@4,@5,@6,@7,@8&chtt=@1&chdl=a|b|c&chdlp=b"
7. http://code.google.com/intl/nl/apis/chart/
8. http://lh3.ggpht.com/_qd3TDEvIh4Y/S0Y2IfGbSiI/AAAAAAAACPA/Q7aB4tm664M/s1600-h/image%5B24%5D.png

OBIEE Oracle support (2010-01-20 19:32)

Sometimes you have to contact oracle support ([1]https://support.oracle.com/CSP/ui/flash.html) from


a machine where no flash player is / can be installed. You probably get stuck in the login screen. Try
this address instead: [2]https://supporthtml.oracle.com/ep/faces/index.jspx
Till Next Time
1. https://support.oracle.com/CSP/ui/flash.html
2. https://supporthtml.oracle.com/ep/faces/index.jspx

OBIEE Horizontal Pivot Sections (2010-01-22 21:03)

From this: [1] to this:


353
[2]
Java script master Joe Betram showed us the way: [3]http://forums.oracle.com/forums/thread.j-
spa?threadID=1009297 &tstart=0
Simple add a static text to your report:

[4]
Add Joe s code:

<script type=”text/javascript”>
/* orignal code by Joe Betram
/* see:http:/*forums.oracle.com/forums/thread.jspa?threadID=1009297 &tstart=0
/
var debug =0;
if (debug === 1) { document.write(”Get all tables”+”<BR>”); }
var tables = document.getElementsByTagName(’table’);
if (debug === 1) { document.write(”Loop over the tables”+”<BR>”); }
for(var table=0; table < tables.length; table++) {
if(tables[table].className != ’PTSectsTable’ ) {
continue;
}
if (debug === 1) { document.write(”Found a pivot table”+”<BR>”); }
var tbody = tables[table].getElementsByTagName(’tbody’)[0];
if (debug === 1) { document.write(”Grabbed the tbody code”+”<BR>”); }
var trs = tbody.getElementsByTagName(’tr’);
var new tr = document.createElement(’tr’);
if (debug === 1) { document.write(”Created the new tr variable”+”<BR>”); }
while( trs.length > 0) {
354
var new td = document.createElement(’td’);
if (debug === 1) { document.write(”Created a new TD element.”+”<BR>”); }
var new table = document.createElement(’table’);
if (debug === 1) { document.write(”Created a new table element.”+”<BR>”); }
var new tbody = document.createElement(’tbody’);
if (debug === 1) { document.write(”Created a new tbody element.”+”<BR>”); }
new tbody.appendChild(trs[0]);
if (debug === 1) { document.write(”Appended Section.”+”<BR>”); }
new tbody.appendChild(trs[0]);
if (debug === 1) { document.write(”Appended Data.”+”<BR>”); }
new table.appendChild(new tbody);
if (debug === 1) { document.write(”Appended tbody to the table tag.”+”<BR>”); }
new td.appendChild(new table);
if (debug === 1) { document.write(”Appended table to the TD tag.”+”<BR>”); }
new tr.appendChild(new td);
if (debug === 1) { document.write(”Appended td to the overall TR tag.”+”<BR>”); }
}
tbody.appendChild(new tr);
if (debug === 1) { document.write(”Inserted the new tr variable as the first child of
tbody”+”<BR>”); }
}
if (debug === 1) { document.write(”Finished transposePivotTable”+”<BR>”); }
</script>

Don t forget to press the SET XML button before you save it!
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/S0Y-lwf7sAI/AAAAAAAACPI/_zI_tvo5mPg/s1600-h/image%5B7%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/S0Y-mSWUhsI/AAAAAAAACPQ/UDULmsfRzk0/s1600-h/image%5B6%5D.png
3. http://forums.oracle.com/forums/thread.jspa?threadID=1009297&tstart=0
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/S0Y-nUXH6mI/AAAAAAAACPY/HfrgJ-LW2vU/s1600-h/image%5B10%5D.png

OBIEE Google Charts part 3 QR Codes (2010-01-25 16:08)

Ever seen these:

[1]
They are QR Codes: [2]http://en.wikipedia.org/wiki/QR Code. Most modern mobiles have a small
application on board which can read the information. Because of the build in error correction they are
ideal for stuff like address labels.
With google chart you can easily integrated them in an OBIEE report. Say you want to code
[3]http://obiee101.blogspot.com/
add the formula:

’http://chart.apis.google.com/chart?chs=150x150 &cht=qr
&chl=http://obiee101.blogspot.com/ &choe=UTF-8’
355
Set the column type to image URL:

[4]
More info: [5]http://code.google.com/intl/nl/apis/chart/types.html #qrcodes
Till Next Time
This article is also published on [6]http://knowledge.ciber.nl
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/S0nto9uKUII/AAAAAAAACPg/W4RKZkNQr3Y/s1600-h/image%5B2%5D.png
2. http://en.wikipedia.org/wiki/QR_Code
3. http://obiee101.blogspot.com/
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/S0ntprUBv7I/AAAAAAAACPo/pWGbxzYXXwg/s1600-h/image%5B6%5D.png
5. http://code.google.com/intl/nl/apis/chart/types.html#qrcodes
6. http://knowledge.ciber.nl/

OBIEE Party 2000 page views (2010-01-27 20:26)

Yesterday we passed for the first time the 2.000 page views a day mark!

[1]
356
Thanks Everybody
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/S2AGuY5-TAI/AAAAAAAACVI/pVR6RwjD7KU/s1600-h/image%5B2%5D.png

OBIEE Performance tuning (2010-01-28 18:35)

Lately I get a lot of OBIEE performance tuning questions.


FI: Our client is downloading a report with 4 million rows and the server get s very slow our even
crashes&&&.
Or: Out client has a report with 2 million rows and 20 columns with a sort option on each column&&.
First: I said it before and will say it again and again&..

OBIEE is not an ETL tool. It is NOT designed to handle large amounts of non aggregated
data. It s designed to handle dimensional structured data with sufficient aggregation tables.

So please please stop hammering in nails with an plush screwdriver!

[1]
Of course there are some tuning possibilities you might want to explore.
WORK DIRECTORY PATHS
From the OBIEE documentation:

Specifies one or more directories for temporary space.


Each directory listed needs to be an existing fully-qualified, writable directory pathname, with
double quotes ( ” ) surrounding the pathname. Specify mapped directories only. UNC path
names and network mapped drives are allowed only if the service runs under a qualified user
account. To change the account under which the service is running, see the corresponding
topic in the Oracle Business Intelligence Enterprise Edition Deployment Guide.
Specify multiple directories with a comma separated list. Valid values are any fully qualified
pathname to an existing, writable directory.
For optimum performance, temporary directories should reside on high performance storage
devices.
If you specify more than one directory, they should reside on different drives.
Syntax: WORK DIRECTORY PATHS = ”<full directory path 1>” [,”<full directory
path 2>” {, ”<full directory path n>” }] ;
Example 1: WORK DIRECTORY PATHS = ”C:\Temp” ;
Example 2: WORK DIRECTORY PATHS = ”D:\temp”, ”F:\temp” ;
NOTE: Specifying more than one directory per drive does not improve performance be-
cause file I/O takes place through the same I/O controller. In general, specify only one
directory per disk drive.
357
Specifying multiple directories on different drives improves the overall I/O throughput of the
Oracle Business Intelligence Server because internally, the processing files are allocated using
a roundrobin algorithm that balances the I/O load across the given disk drives.

Rule of thumb: Invest in fast drives, consider virtual / RAM drives.


SORT MEMORY SIZE
From the OBIEE documentation:

Specifies the maximum amount of memory to be used for each sort operation. Multiple
operations can each use memory up to the value specified. The limit for SORT MEMORY
SIZE is determined by the physical memory of the server machine and on the number of sort
operations that might occur simultaneously. Specify KB for kilobytes, MB for megabytes,
and no units for bytes.
Example: SORT MEMORY SIZE = 4 MB ;
The size specified by SORT MEMORY SIZE sets the upper limit on how large the sorting
buffer can be in the Oracle Business Intelligence Server. When this limit is exceeded, data
is sorted in allotments of the size set by SORT MEMORY SIZE and the sorted sets are
merged together. For example, suppose SORT MEMORY SIZE is set to 4 MB and the size
of the data to be sorted is 32 MB. The server performs the sort once per each 4 MB of data,
for a total of eight sort operations,
and then merge the results into a single result set. This technique allows the Oracle Business
Intelligence Server to sort data of indefinite size.
The merge process itself is generally not costly in terms of resources, but it does include a read
and write of each result set in a temporary file. To reduce the time this takes, increase the
SORT MEMORY SIZE. This parameter can be tuned over time by taking into consideration
the data size of the query and the number of concurrent users.

Rule of thumb: Don t go overboard with this value, 10mb for a hundred concurrent users is 1 Gb of server
memory. Don t let OBIEE push other processes into the swap memory of the OS.
SORT BUFFER INCREMENT SIZE
From the documentation:

Specifies the increment that the sort memory size is increased by as more memory is
needed. As more memory is required, the size increases by the value specified until it reaches
the value of
SORT MEMORY SIZE.
Example: SORT BUFFER INCREMENT SIZE = 256 KB ;
This parameter defines the increment by which SORT MEMORY SIZE should be
reached. For example, suppose SORT MEMORY SIZE is set to 4 MB and the data to
be sorted is just one megabyte. As data is fed into the sort routine, the size of the sort buffer
increases only by the increment size, rather than the full size allowed by SORT MEMORY
SIZE. This mechanism allows the Oracle Business Intelligence Server to sort smaller result
sets efficiently without wasting memory.

Rule of thumb: 5 10 % of the SORT MEMORY SIZE


VIRTUAL TABLE PAGE SIZE
From the documentation:

Several operations sort, join, union and database fetch can require memory resources
beyond those available to the Oracle Business Intelligence Server. To manage this condition,
the server uses a virtual table management mechanism that provides a buffering scheme
358
for processing these operations. When the amount of data exceeds the VIRTUAL TABLE
PAGE SIZE, the remaining data is buffered in a temporary file and placed in the virtual
table as processing
continues. This mechanism supports dynamic memory sizes and ensures that any row can be
obtained dynamically for processing queries.
When VIRTUAL TABLE PAGE SIZE is increased, I/O operations are reduced. Complex
queries may use 20 to 30 virtual tables, while simple queries may not even require virtual
tables. The
default size of 128 KB is a reasonable size when one considers that the size for virtual paging in
Windows NT is 64 KB. This parameter can be tuned depending on the number of concurrent
users and the average query complexity. In general, setting the size higher than 256 KB does
not yield a corresponding increase in throughput due to the 64 KB size limit of Windows NT
system buffers, as each I/O still goes through the system buffers

Rule of thumb: Trust the documentation, more then 256 KB is not necessary.
All the parameters are set in the NQSConfig.INI File
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/S0oQQSpxyLI/AAAAAAAACPw/Rcsw8rzQUjM/s1600-h/image%5B2%5D.png

OBIEE Horizontal Pivot Sections Part 2 (2010-01-30 00:00)

Based on this post: [1]http://obiee101.blogspot.com/2010/01/obiee-horizontal-pivot-s ections.html I was


asked if this was possible:

[2]
Or a carriage return every x columns. So extra lines to Joe s code fixed it:

<script type=”text/javascript”>
/* based orignal code by Joe Betram
/* see:[3]http://forums.oracle.com/forums/thread.jspa?threadID=1 009297 &tstart=0
/* This Version John Minkjan :[4]http://www.obiee101.blogspot.com/
/* Thanks to Nandoo for noticing the IE bug
/
/* Set the number of columns */
var intColumnNumbers = 5;
function insertAfter( referenceNode, newNode )
{
referenceNode.parentNode.insertBefore(newNode, referenceNode.previousSibling);
}
var debug =1;
var sectioncnt =0;
var x =0;
359
if (debug === 1) { document.write(”Get all tables”+”<BR>”); }
var tables = document.getElementsByTagName(’table’);
if (debug === 1) { document.write(”Loop over the tables”+”<BR>”); }
for(var table=0; table < tables.length; table++) {
if(tables[table].className != ’PTSectsTable’ ) {
continue;
}
if (debug === 1) { document.write(”Found a pivot table”+”<BR>”); }
var tbody = tables[table].getElementsByTagName(’tbody’)[0];
if (debug === 1) { document.write(”Grabbed the tbody code”+”<BR>”); }
var trs = tbody.getElementsByTagName(’tr’);
var new tr = document.createElement(’tr’);
var nw tr =new Array();
nw tr[x] = document.createElement(’tr’);
if (debug === 1) { document.write(”Created the new tr variable”+”<BR>”); }
while( trs.length > 0) {
var new td = document.createElement(’td’);
if (debug === 1) { document.write(”Created a new TD element.”+”<BR>”); }
var new table = document.createElement(’table’);
if (debug === 1) { document.write(”Created a new table element.”+”<BR>”); }
var new tbody = document.createElement(’tbody’);
if (debug === 1) { document.write(”Created a new tbody element.”+”<BR>”); }
new tbody.appendChild(trs[0]);
if (debug === 1) { document.write(”Appended Section.”+”<BR>”); }
new tbody.appendChild(trs[0]);
if (debug === 1) { document.write(”Appended Data.”+”<BR>”); }
new table.appendChild(new tbody);
if (debug === 1) { document.write(”Appended tbody to the table tag.”+”<BR>”); }
new td.appendChild(new table);
if (debug === 1) { document.write(”Appended table to the TD tag.”+”<BR>”); }
new tr.appendChild(new td);
if (debug === 1) { document.write(”Appended td to the overall TR tag.”+”<BR>”); }
/*nw tr[0].appendChild(new td);*/
sectioncnt = sectioncnt +1;
if (debug === 1) { document.write(sectioncnt %intColumnNumbers+”<BR>”); }
if (sectioncnt %intColumnNumbers ===0) {
nw tr[x]=new tr;
var new tr = document.createElement(’tr’);
x =x+1;
};
}
var y=0;
for (y=0; y<nw tr.length; y++)
{
tbody.appendChild(nw tr[y]);
}
tbody.appendChild(new tr);
if (debug === 1) { document.write(”Inserted the new tr variable as the first child of
tbody”+”<BR>”); }
}
if (debug === 1) { document.write(”Finished transposePivotTable”+”<BR>”); }
</script>

Till Next Time


360
1. http://obiee101.blogspot.com/2010/01/obiee-horizontal-pivot-sections.html
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/S2NopDO-oeI/AAAAAAAACVQ/KRGNmfme0GI/s1600-h/image%5B3%5D.png
3. http://forums.oracle.com/forums/thread.jspa?threadID=1009297&tstart=0
4. http://www.obiee101.blogspot.com/

OBIEE Reset OC4J Admin password (2010-01-31 19:16)

Didn t I read about this in several other blogs you might ask. Well you are right there. It probably started
with the guys from carpe diem: [1]http://carpediemconsulting.wordpress.com/2008/03/16/resetting -the-
oc4j-password-in-obiee/ And since all the others copied there article from them nobody noticed they didn t
clear the security cache. Here is the version from the original documentation:
Stop OC4J and the Application Server Control.
Enter the following command in the Oracle home of the application server instance:
(UNIX) ORACLE HOME/opmn/bin/opmnctl stopproc ias-component=OC4J
(Windows) ORACLE HOME\opmn\bin\opmnctl stopproc ias-component=OC4J Locate and open the
following file in a text editor:
(UNIX)ORACLE HOME/j2ee/home/config/system-jazn-data.xml
(Windows)ORACLE HOME\j2ee\home\configextbackslashsystem-jazn-data.xml
Locate the line that defines the credentials property for the oc4jadmin user.
The following example shows the section of system-jazn-data.xml with the encrypted credentials entry in
boldface type:

<jazn-realm>
<realm>
<name>jazn.com</name>
<users>
.
.
.
<user>
<name>oc4jadmin</name>
<display-name>OC4J Administrator</display-name>
<description>OC4J Administrator</description>
<credentials> {903 }4L50lHJWIFGwLgHXTub7eYK9e0AnWLUH</credentials>
</user>

Replace the existing encrypted password with the new password.


Be sure to prefix the password with an exclamation point (!). For example:
<credentials>!mynewpassword123</credentials>
The password for the oc4jadmin user should conform to following guidelines:

• Must contain at least five characters, but not more than 30 characters.

• Must begin with an alphabetic character. It cannot begin with a number, the underscore ( ), the
dollar sign ( $), or the number sign ( #).

• At least one of the characters must be a number.

• Can contain only the following characters; numbers, letters, and the following special characters:
US dollar sign ( $), number sign ( #), or underscore ( ).

• Cannot contain any Oracle reserved words, such as VARCHAR.


361
Delete cached password data by deleting the contents of the following directory:
(UNIX) : ORACLE HOME/j2ee/oc4jinstance/persistence/ascontrol/ascontrol/securestore /
(Windows): ORACLE HOME\j2ee\oc4jinstance\ persistence\ascontrol\ascontrolckslashsecurestore/
Start OC4J and the Application Server Control.
After the restart, the Application Server Control will use your new Administrator (oc4jadmin) password,
which will be stored in encrypted format within the system-jazn-data.xml file.
By the way is you have installed OC4J on a windows box it s much easier to retrieve the password. Goto
START > Oracle Business Intelligence :

[2]
Rightclick on Stop OC4J, goto properties, open the shortcut tab:

[3]
The password is right there ;-)
Till Next Time
This article is also published on [4]http://knowledge.ciber.nl
1. http://carpediemconsulting.wordpress.com/2008/03/16/resetting-the-oc4j-password-in-obiee/
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/S2XbNWkti5I/AAAAAAAACVw/j8CCYGnrep4/s1600-h/image%5B1%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/S1_oqp-xktI/AAAAAAAACV4/roRtDiHV8-g/s1600-h/image3%5B1%5D.png
4. http://knowledge.ciber.nl/

4.2 February

OBIEE Report Name Length (2010-02-03 20:16)

Please Please Please keep the report name length of your OBIEE below 55! Why?
1. Long report name are hard to read for the user; What is the difference between:
362
Leftover vacation days male employee fixed contracts age 21-30
and
Leftover vacation days male employee fixed contracts age 31-40

[1]
2. They tend to run out of the dialog boxes:

[2]
3. Over 55 characters OBIEE starts to hash the file name, so they are harder to find on the file system:

[3]
4. If you want to use a scripting tool to create your reports, you will have to recreated the hash. This is
almost impossible since Oracle will not tell the public how the Hash works.
5. A Little bird told that you might run into trouble when upgrading to 11g, they couldn t confirm it
was taken care of in the test program.
Till Nex Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/S12aDU8HmhI/AAAAAAAACSQ/cg__5_0GqEc/s1600-h/image%5B3%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/S12aEFItLjI/AAAAAAAACSY/kd4DbxFt07o/s1600-h/image%5B7%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/S12aE4mzFBI/AAAAAAAACSg/3aDknppSbsw/s1600-h/image%5B11%5D.png

OBIEE PATCHES 10.1.3.4.1 part 3 (2010-02-06 17:44)

Even more patches&


Time for a new release?

Patch ID Description Platform (Language) Updated


8744580 Oracle BI Suite EE: Patch: OTBI : RSUM NOT DISPLAYING THE SUM
AS EXPECTED Microsoft Windows (32-bit) (American English) 5-feb-10
9280334 Oracle BI Suite EE: Patch: CALENDAR DD/MM/YYYY PROMPT IN
DASHBOARD RETURNING FORMAT YYYY-MM-DD HH:MI:SS Microsoft Windows
(32-bit) (American English) 26-jan-10
8882829 Oracle BI Suite EE: Patch: SORT FEATURE OF SESSION MANAGER
Microsoft Windows (32-bit) (American English) 22-jan-10
9224649 Oracle BI Suite EE: Patch: NQSSERVER CRASH RUNNING AGAINST
363
ESSBASE Microsoft Windows (32-bit) (American English) 20-jan-10
7343314 Oracle BI Suite EE: Patch: SEARCH SEGMENTS RETURN ONLY MY
SEGMENTS NOT INCLUDING SHARED SEGMENTS. Microsoft Windows (32-bit)
(American English) 19-jan-10
8444119 Oracle BI Suite EE: Patch: OBIEE CUSTOM AUTHENTICATOR PASSES
INVALID FORM TO ESSBASE Microsoft Windows (32-bit) (American English)
15-jan-10
9165670 Oracle BI Suite EE: Patch: DIFFERENT RESULT FOR TOTALS IN
EXCEL THAN ANSWERS WHEN ’SUM BY’ IS USED Microsoft Windows (32-bit)
(American English) 14-jan-10
8743856 Oracle BI Suite EE: Patch: EXECUTION PLAN DOES NOT UPDATE LAST
TASK AS COMPLETED Generic Platform (American English) 7-jan-10
8760212 Oracle BI Suite EE: Patch: COMMANDS FOR FULL AND INCREMENTAL
SHOULD ALLOW DB SPECIFIC TEXTS Generic Platform (American English)
7-jan-10
9179169 Oracle BI Suite EE: Patch: DAC 10.1.3.4.X CAN’T CONNECT TO SQL
SERVER 2008 Generic Platform (American English) 6-jan-10

As always:

Yes you need a metalink/support account to download them. No, I will not download them for you and
redistribute them. Ask your local Oracle representative for support.

Till next time

OBIEE Pivot Conditional Format Grand Total Part 2 (2010-02-06 20:40)

In this OTN forum discussion ([1]http://forums.oracle.com/forums/thread.jspa?messageID=4025 463 &


#4025463) JavaSript master Joe and OBIEE Crack Raghu show us two separate ways of making a con-
ditional format for the grand total on a table.
Raghu s way editing XML:
Let s start with a basic table:

[2]
Make a Pivot:
364
[3]
Put it on a Compound Layout:

[4]
On the basic table add a conditional format on a random column:

[5]
Open the advanced tab:

[6]
locate the saw:condition part :

<saw:condition>
<sawx:expr xsi:type=”sawx:comparison” op=”greaterOrEqual”>
<saw:columnRef columnID=”c1”/>
<sawx:expr xsi:type=”xsd:decimal”>1000000</sawx:expr>
</sawx:expr>
<saw:displayFormat backgroundColor=” #FF0000” wrapText=”true”/>
</saw:condition>

Copy and paste this into an good! XML Editor (fi Notepad ++)

[7]
Remove the condition from your bas table:
365
[8]
Go back to the advanced tab:

[9]
Copy and paste all XML into your XML EDITOR:

[10]
Locate the Pivot View part:

[11]
Copy you condition into the column part just below the labels between saw:totalValue and
saw:displayFormats tags

[12]
Copy the XML back to OBIEE, don t forget to press the SET XML tag:

366
[13]
There you go:

[14]
Although this method of Raghu is very elegant I personally prefer Joe method discussed in part 1. With
XML Editing you run into the risk of loosing your stuff when make a change in your report easily, also
most user won t have access to the Advanced TAB.
Till Next Time

1. http://forums.oracle.com/forums/thread.jspa?messageID=4025463&#4025463
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/S1dccTM6wtI/AAAAAAAACP4/DmGn9WY5zUc/s1600-h/image%5B8%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/S1dcdF5kmjI/AAAAAAAACQA/XFhHktUT5Jk/s1600-h/image%5B12%5D.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/S1dqDy5WIEI/AAAAAAAACRA/iPsej9H5CpY/s1600-h/image42.png
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/S1dqEs3jNoI/AAAAAAAACRI/u9fOrMMIfYA/s1600-h/image46.png
6. http://lh6.ggpht.com/_qd3TDEvIh4Y/S1dqFkQkSKI/AAAAAAAACRQ/nwo7DSRi9vA/s1600-h/image49.png
7. http://lh5.ggpht.com/_qd3TDEvIh4Y/S1dqGTa0pSI/AAAAAAAACRY/w07Yo2vbZWw/s1600-h/image%5B3%5D.png
8. http://lh5.ggpht.com/_qd3TDEvIh4Y/S1dqHKZ9Z9I/AAAAAAAACRg/71yB6nQiDaM/s1600-h/image%5B6%5D.png
9. http://lh6.ggpht.com/_qd3TDEvIh4Y/S1dqFkQkSKI/AAAAAAAACRQ/nwo7DSRi9vA/s1600-h/image49.png
10. http://lh3.ggpht.com/_qd3TDEvIh4Y/S1dqH5CMIYI/AAAAAAAACRo/fTm_qhdv6tc/s1600-h/image%5B11%5D.png
11. http://lh3.ggpht.com/_qd3TDEvIh4Y/S1dqIhIhnsI/AAAAAAAACRw/Phl1YlkH_xA/s1600-h/image%5B16%5D.png
12. http://lh3.ggpht.com/_qd3TDEvIh4Y/S1dqJvhR14I/AAAAAAAACR4/UwNkYw-WYzw/s1600-h/image%5B20%5D.png
13. http://lh5.ggpht.com/_qd3TDEvIh4Y/S1dqKH3tSsI/AAAAAAAACSA/hr3RnjXI8uw/s1600-h/image%5B23%5D.png
14. http://lh3.ggpht.com/_qd3TDEvIh4Y/S1dqK9BMdfI/AAAAAAAACSI/fALbBumoUvg/s1600-h/image%5B27%5D.png

OBIEE Grabbing the logical SQL (2010-02-09 20:26)

Sometimes you want to grab the logical from a dashboard or report without showing it to the user or
having to switch on logging.

Step 1: Create you report with an sql view:


367
[1]

[2]

Add a static text box:


368
[3]

Add this code from javascript master Joe Betram:

<script type=”text/javascript”>
// Original code from Joe Betram
// See :[4]http://forums.oracle.com/forums/thread.jspa?messageID=402 6864 &
#4026864
var tds = document.getElementsByTagName(’td’);
var lSQL = new Array();
for(var td=0;td<tds.length;td++) {
if( tds[td].className != ’SqlViewCell’ ) {
continue;
}
tds[td].style.display = ”NONE”;
lSQL.push(tds[td].innerHTML);
}
for(var len =0; len < lSQL.length; len++) {
document.write(”Stored logical SQL in slot ” + len + ” is: ” + lSQL[len] + ”<BR>”);
}
</script>

Don t forget to check the contains HTML Markup box:


369
[5]

Check the results:

[6]

With a little bit of tweaking you can use this script to for instance to call a web service or channel the
SQL to another logging program.

Till Next Time

1. http://lh4.ggpht.com/_qd3TDEvIh4Y/S16TnxwCTKI/AAAAAAAACSo/u8BW8LCXgNs/s1600-h/image%5B20%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/S16To7iFBJI/AAAAAAAACSw/ubqmb5JEbdo/s1600-h/image%5B21%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/S16TpsHePaI/AAAAAAAACS4/l_Tu7NBCXI4/s1600-h/image%5B22%5D.png
4. http://forums.oracle.com/forums/thread.jspa?messageID=4026864&#4026864
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/S16TqQAGf9I/AAAAAAAACTA/aqBK8irjq3k/s1600-h/image%5B23%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/S16TrO5h4uI/AAAAAAAACTI/r7pdL6Jdy3o/s1600-h/image%5B24%5D.png

OBIEE Changing unchangeable cells (2010-02-12 20:00)

If you create a pivot view:

[1]

Most of the properties can be changed from the pivot view editor:
370
[2]
But they forgot to put an edit box on the top left corner cell:

[3]
If you want to set the background color system wide goto the views.css file and change the PTIndentCell:

[4]
If you want to change it only for on report add a static text:

[5]
add some javaScript like this:

<script type=”text/javascript”>
var tds = document.getElementsByTagName(’td’);
var lCSS = new Array();
for(var td=0;td<tds.length;td++) {
if( tds[td].className != ’PTIndentCell’ ) {
continue;
}
tds[td].style.backgroundColor=” #CCCC00”;
// Info on property naming: [6]http://codepunk.hardwar.org.uk/css2js.htm
lCSS.push(tds[td].innerHTML);
}
for(var len =0; len < lCSS.length; len++) {
//document.write(”Bingo ” + ”<BR>”);
//debug only
371
}
</script>

(Yep it s based on a idea coming from Joe Betram)

Check the contians HTML Markup box:

[7]

Check the results:

[8]

The naming of CSS


properties in javaScript varys slightly from normal CSS: [9]http://codepunk.hardwar.org.uk/css2js.ht-
m

Till Next Time

1. http://lh6.ggpht.com/_qd3TDEvIh4Y/S16hHjL5TAI/AAAAAAAACTQ/mLLvj4hSYqM/s1600-h/image%5B2%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/S16hISYUT9I/AAAAAAAACTY/Kh6S41kaa4U/s1600-h/image%5B5%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/S16hI6wvlhI/AAAAAAAACTg/e7-e-boN3oA/s1600-h/image%5B8%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/S16hKe0S-8I/AAAAAAAACTo/gpE-JBc7_PA/s1600-h/image%5B11%5D.png
5. http://lh3.ggpht.com/_qd3TDEvIh4Y/S16hLPDYLsI/AAAAAAAACTw/G8O6sZgQlCQ/s1600-h/image%5B14%5D.png
6. http://codepunk.hardwar.org.uk/css2js.htm
7. http://lh6.ggpht.com/_qd3TDEvIh4Y/S16hMJEPTfI/AAAAAAAACT4/yZ7I0CD-EPw/s1600-h/image%5B17%5D.png
8. http://lh5.ggpht.com/_qd3TDEvIh4Y/S16hM75T57I/AAAAAAAACUA/cvJbAKuE17c/s1600-h/image%5B20%5D.png
9. http://codepunk.hardwar.org.uk/css2js.htm

OBIEE Chancing CSS style on the fly (2010-02-15 20:22)

One of our customers wanted to see some suggested CSS changes on the fly on actual reports. The wanted
it on the production machine&

First we copied the Demo file to a new folder on the OC4J webserver:

[1]

On the demo report we added a static textbox:


372
[2]

Put in the reference to the alternate stylesheets:

<link rel=”stylesheet” type=”text/css” title=”Standard”


href=”res/s oracle10/b mozilla 4/views.css”>
<link rel=”alternate stylesheet” type=”text/css” title=”Red”
href=”res/Demo/views2.css”>
<link rel=”alternate stylesheet” type=”text/css” title=”Green”
href=”res/Demo/views3.css”>
<meta http-equiv=”Default-Style” content=”Standard”>

If you now open the report in FireFox and goto view => page style

[3] (sorry only got the Dutch version installed)

And select the style you want to demo:

[4] = Default
373
[5] = Red

[6] = Green

Yes this trick will only work in FireFox (View | Page Style), Opera (View | Style), Konqueror(View | Use
StyleSheet), Workarounds for IExplorer are widely spread on the net. Haven t found it in Chrome Yet

Till Next Time

1. http://lh6.ggpht.com/_qd3TDEvIh4Y/S2AF0wtKWeI/AAAAAAAACUY/fG5sbNZRqAI/s1600-h/image%5B3%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/S2AF1gKq8ZI/AAAAAAAACUg/00mqp6SG-BE/s1600-h/image%5B6%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/S2AF2aG716I/AAAAAAAACUo/Xak9nKpLUyI/s1600-h/image%5B9%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/S2AF25lGvRI/AAAAAAAACUw/tgb8dV2xtAU/s1600-h/image%5B12%5D.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/S2AF3oVZkUI/AAAAAAAACU4/WfBxlY0YnXs/s1600-h/image%5B15%5D.png
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/S2AF4Z71IUI/AAAAAAAACVA/YDimtcMSFKA/s1600-h/image%5B18%5D.png

OBIEE JavaScript and comments (2010-02-18 18:57)

When you write large pieces of custom javascript on a report you might run into the strange problem
that it works during development, you can save it without a problem, but when you reopen it in another
session it doesn t work anymore.

Most of the time this is caused by the rendering process of the report XML by the presentation server.

When obiee loads a report for the first time during a session it performs a SET XML. (like pushing the

SET XML button in the advanced TAB => [1]

This causes your nicely formatted script which looked like this:
374
[2]
to look like this:

[3]
Basically it has become one long string. You might run into trouble because of comment lines starting
with // in your code. This turns the rest of the string into a comment. Always encapsulate your comments
as /*..comment..*/ .
An other problem might be missing semi-colon ; . Always close your process steps with one.
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/S2XEo1RP35I/AAAAAAAACVY/StIBrk0dH0I/s1600-h/image%5B2%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/S2XEpkPACDI/AAAAAAAACVg/VrQLgAJ5eEg/s1600-h/image%5B9%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/S2XEqUjYA-I/AAAAAAAACVo/wcuGqnUkLxk/s1600-h/image%5B10%5D.png

OBIEE ATR files (reports). (2010-02-21 20:39)

The ATR files in the OBIEE repository manage privileges on a item and provide a readable text for
both the name and description of an object. Dan Malone of Calpoly did some basic research on how
these work.
This article describe the build up of the ATR file when used for a report.
WOW: backup the files before you start to hack them, one misplaced byte can really f* &ˆk up your
system!
Let s get out our trusty hexplorer and open an ATR file:

[1]
375
[2]
Bytes 00.03 {4 } => File Standard; Seems to be always the same

[3]
Byte 04 {1 } => Length of the object name; Name starts 4 bytes from here.

[4]
Byte x..03 {3 } => Prequel to object name

[5]
Byte x..Byte 04 {Byte 04 } => Object name as ascii.

[6]
Byte x..11 {11 } => prequel 06 00 01 + Hex id of the object owner

[7]
Byte x {1 } number of users / groups which have form of permission.

[8]
Byte x..13 {13 } => Prequel 00 01 {2 } + Hex id of the grantee (group or user) {8 } +
permission: (FF FF 00- Full Control ; 0F 00 00 - Change/Modify ;03 00 00 Read; Ê02 00 00 Traverse
; 00 00 00- No Access ) {3 } [for each grantee]

[9]
Byte x {1 } length of the object type name:

[10]
Byte x .. 3+byte(x-1)+8 => Prequel 00 00 00 {3 } + Object type name as ascii + Sequel 02 00 01 00
04 00 00 00 {8 }

[11]
Byte x..x+3 {4 } text Desc

[12]
Byte x {1 } Length of description
376
[13]
Byte x..byte(x-1)+4=> prequel 00 00 00 {3 } description in Ascii; sequel 00 00 00 00 {4 }
Now in what way is this info useful? If you want to script your reports, you also need to script the ATR
file.. I will hopefully soon have time to show you how to script a report.

Till Next Time


1. http://lh5.ggpht.com/_qd3TDEvIh4Y/S2avkdnR-XI/AAAAAAAACWM/6y8FF_pqmk0/s1600-h/image15.png
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/S2avk4Q8rXI/AAAAAAAACWU/Sru-U8bXfkg/s1600-h/image31.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/S2avldoaKlI/AAAAAAAACWc/IYFkEO6e_u4/s1600-h/image6.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/S2avl1-77YI/AAAAAAAACWk/92EF3CIax58/s1600-h/image12.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/S2avmjGPmNI/AAAAAAAACWs/LC_WB70u20w/s1600-h/image132.png
6. http://lh6.ggpht.com/_qd3TDEvIh4Y/S2avnFb_BBI/AAAAAAAACW0/oM2Ia_q0E_I/s1600-h/image18.png
7. http://lh6.ggpht.com/_qd3TDEvIh4Y/S2avnq21-2I/AAAAAAAACW8/2ad8842Sr_E/s1600-h/image21.png
8. http://lh6.ggpht.com/_qd3TDEvIh4Y/S2avoMyzohI/AAAAAAAACXE/7JaTtUyJud4/s1600-h/image24.png
9. http://lh4.ggpht.com/_qd3TDEvIh4Y/S2avouHP2HI/AAAAAAAACXM/6yj415lh1qg/s1600-h/image27.png
10. http://lh5.ggpht.com/_qd3TDEvIh4Y/S2avpN3e42I/AAAAAAAACXU/L6yZJZz7Jq4/s1600-h/image16%5B1%5D.png
11. http://lh6.ggpht.com/_qd3TDEvIh4Y/S2avpjVBe9I/AAAAAAAACXc/lsK-U15-TK4/s1600-h/image7.png
12. http://lh4.ggpht.com/_qd3TDEvIh4Y/S2avqOlJd1I/AAAAAAAACXk/7-a_sSnthQ4/s1600-h/image10%5B1%5D.png
13. http://lh6.ggpht.com/_qd3TDEvIh4Y/S2avqj49ZXI/AAAAAAAACXs/iAQ4ov2eIYw/s1600-h/image17.png

OBIEE Popup box (2010-02-24 20:09)

Customer wanted to see some extra info in a popup box:

[1]
This can be done simple from a narrative view:
First start with a basic report:

[2]
377
goto the narrative view:

[3]
Switch on the HTML
in the prefix put:

<tr><th>[b]Customer[/b]</th><th>[b]Revenue[/b]</t h></tr>

In the narrative put:

<tr>
<td>@1</td>
<td> <input type=”text” onclick=”alert(’Sum for All Customers: @3!’)” value=”@2” />
</td>
</tr>

Put it all together on the compound view:

[4]
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/S2vuSZf-vNI/AAAAAAAACX0/0JzrBSJDxug/s1600-h/image%5B2%5D.png
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/S2vuTOsqIWI/AAAAAAAACX8/tUfgjZnkTcc/s1600-h/image%5B5%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/S2vuT2t_2YI/AAAAAAAACYE/WPBiS1x0X1E/s1600-h/image%5B8%5D.png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/S2vuUR32myI/AAAAAAAACYM/L_OicEaCAo8/s1600-h/image%5B11%5D.png

OBIEE Presentation Server Always Refresh (2010-02-27 20:42)

If you have a separate development presentation server, you can use the developersprompt:
([1]http://obiee101.blogspot.com/2008/10/obiee-developerspromp t.html) for bypassing the BI server-
cache. If you always want to bypass the Presentation server cache add this to the instanceconfig file of
the development presentation server:
378
<WebConfig>
<ServerInstance>
<ForceRefresh>TRUE</ForceRefresh>
</ServerInstance>
</WebConfig>

Till Next Time


1. http://obiee101.blogspot.com/2008/10/obiee-developersprompt.html

4.3 March

OBIEE Quirky Report Name (2010-03-02 19:47)

Have you ever noticed when a report name starts with CON , the file system name will be converted to
co %6E .

[1]
Let start an insider joke: It s the usenet handle of the original programmer ;-)
Anyhow it s one of those things you will have to keep in mind when scripting reports.
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/S28KsCcxerI/AAAAAAAACYU/fXWsA9wV8TA/s1600-h/image%5B3%5D.png

OBIEE Report XML Structure Part 1 (2010-03-05 21:05)

Some time ago we did a project where we scripted the reports. The big problem is that the XML structure
of the OBIEE reports isn t very well documented. (At least we couldn t find it, but if you have a good
link please let me know!)

Base structure:
The most outer structure is are the {saw:reports } tags, together with the base structure you get some-
thing like:

[1]

The {saw:criteria } tag


The {saw:criteria } starts with the subjectArea subtag
The first inner tags are:
379
[2]
{saw:columns } Holding the columns information
{saw:filter } Holding the filter for the subject area
Next Time I will show the detailed columns and filter tags
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/S4eA26ieHBI/AAAAAAAACYg/USx6apWtTSs/s1600-h/image%5B3%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/S4eA5kS_k8I/AAAAAAAACYo/MWjwXcG9UXQ/s1600-h/image%5B7%5D.png

OBIEE conditional format using arrows (2010-03-07 21:03)

On the OTN forums ([1]http://forums.oracle.com/forums/thread.jspa?threadID=10394 11 &tstart=0)


an example for this:

[2]
was sought.
Let s start with the basic report:

[3]
Calculate the delta:

[4]
Add two conditional formats:
380
[5]

Add the correct images:

[6]

Set it to image only:

[7]

There you go:


381
[8]
Till Next Time
1. http://forums.oracle.com/forums/thread.jspa?threadID=1039411&tstart=0
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/S5QGe22DdwI/AAAAAAAACaQ/aiVI4PFMBXo/s1600-h/image%5B21%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/S5QGfu1ZR4I/AAAAAAAACaY/vB9dHME_jdQ/s1600-h/image%5B22%5D.png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/S5QGgThxpfI/AAAAAAAACag/NblDES4zsKQ/s1600-h/image%5B23%5D.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/S5QGhTcys9I/AAAAAAAACao/p0Nwaqy_z28/s1600-h/image%5B24%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/S5QGh6dID0I/AAAAAAAACaw/pM7kZ1NB9A8/s1600-h/image%5B25%5D.png
7. http://lh3.ggpht.com/_qd3TDEvIh4Y/S5QGi_Bn6II/AAAAAAAACa4/XcOBFE335po/s1600-h/image%5B26%5D.png
8. http://lh3.ggpht.com/_qd3TDEvIh4Y/S5QGjjoIAVI/AAAAAAAACbA/XaHy6aIZbQQ/s1600-h/image%5B27%5D.png

OBIEE Report XML Structure Part 2 (2010-03-08 20:27)

In part I showed you the base structure. In this part I want to show you the Columns Structure:

[1]
The {saw:columns } Structure

[2]
The first inner tag is {saw:column } . The base tag contains the column formula, columnId and aggrega-
tion rule
This tag is divided into {saw:tableHeading }, {saw:columnHeading }, {saw:displayFormat }

[3]
The {saw:tableHeading } Structure

[4]
This allows you to set an alternative caption as table heading.
382
The {saw:columnHeading } structure

[5]
This allows you to set an alternative caption as column heading. Also the interaction on a column level
(Ai when you click on the column heading) is set here.
the {saw:displayFormat } structure
This control the display format of the data cel:

[6]
This also control the dataformat:

[7]
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/S4eGg_dKa1I/AAAAAAAACYw/B1mI4rYzq3c/s1600-h/image%5B3%5D.png
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/S4eGjKIW0CI/AAAAAAAACY4/nNYMyHt5BnY/s1600-h/image%5B7%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/S4eGmQOIzeI/AAAAAAAACZA/2vcWaHMK-1s/s1600-h/image%5B14%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/S4eGqBKOmdI/AAAAAAAACZI/imh_TAw3GTs/s1600-h/image%5B18%5D.png
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/S4eGuICJmnI/AAAAAAAACZQ/R0ERFrkJIWM/s1600-h/image%5B22%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/S4eGwldWnVI/AAAAAAAACZY/8kE6mQYRUuc/s1600-h/image%5B32%5D.png
7. http://lh3.ggpht.com/_qd3TDEvIh4Y/S4eGyoHR5XI/AAAAAAAACZg/obLXoLg_LZw/s1600-h/image%5B26%5D.png

OBIEE Report XML Structure Part 3 (2010-03-11 20:48)

In part 2 I showed you the Columns structure, in this article I want to show you the filter structure
The {saw:filter } structure

[1]
To create filters OBIEE uses sawx epression engine. First it define the type:

[2]
Then the right side:

[3]
and left side:

[4]
For filters based on an other report it pretty much works the same:
383
[5]
Till Next Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/S4eLAfuZfuI/AAAAAAAACZo/oYzDn9trTK0/s1600-h/image%5B3%5D.png
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/S4eLCnvoKNI/AAAAAAAACZw/qrBARjDRfmc/s1600-h/image%5B10%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/S4eLEx91LXI/AAAAAAAACZ4/tGpsd4PH8Q8/s1600-h/image%5B11%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/S4eLG8KrzUI/AAAAAAAACaA/EImDOxbDA5Q/s1600-h/image%5B15%5D.png
5. http://lh4.ggpht.com/_qd3TDEvIh4Y/S4eLJEw4JeI/AAAAAAAACaI/CC4PVxtfhZY/s1600-h/image%5B19%5D.png

OBIEE Start reading on graphs! (2010-03-16 20:58)

OBIEE 11g is coming!


We don t no when, but we do know that the increase in graphical possibility’s will be HUGE!.
In that lays a huge danger, developers have a natural tendency to try out all options, and even worse
give all the options to their clients often resulting in very colourful dashboards.

[1]
If you are coming from OBIEE 10G and want to prep for 11g you might want to catch up on some reading
on how to make good graphs, instead of only colourful graphs!
For several years the books of Stephen Few: ([2]http://www.perceptualedge.com/blog/) where considered
as the one and only standard. Certainly he was one of the first to write things down: [3](Information
Dashboard Design: The Effective Visual Communication of Data ) This is still a must read for every
Dashboard developer.
Recently a new book has arrived [4]The wall street journal guide to information graphics by Dona M.
Wong. Personally I find this easier to read then the Stephen Few book. I like the setup where on the left
page there is a bad example and on the right side there is a good example. Another good feature of
the book is the statistical brush-up chapter.
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/S5-Pv2S5CXI/AAAAAAAACbI/NEMhdGQVu6g/s1600-h/image%5B3%5D.png
2. http://www.perceptualedge.com/blog/
3. http://www.amazon.com/Information-Dashboard-Design-Effective-Communication/dp/0596100167
4. http://www.amazon.com/Street-Journal-Guide-Information-Graphics/dp/0393072959/ref=sr_1_1?ie=UTF8&s=
books&qid=1268747321&sr=1-1-spell

384
OBIEE rtfm.ini config file (2010-03-22 16:49)

http://forums.oracle.com/forums/thread.jspa?threadID=1047009 &tstart=0
;-)
Till Next Time

OBIEE PATCHES 10.1.3.4.1 part 4 (2010-03-26 23:27)

Even more patches

Patch ID Description Updated Size


9509684 MERGE REQUEST ON TOP OF 10.1.3.4.1 FOR BUGS 8290868 9356692
9179171 9224649 9413 26-3-2010 41 MB
9492821 MERGE REQUEST ON TOP OF 10.1.3.4.1 FOR BUGS 9280334 9434435
26-3-2010 2.7 MB
9413991 LOGIN CAN FAIL IF LOGIN ATTRIBUTE OR IDENTITY ATTRIBUTE IS
MAIL 25-3-2010 720.2 KB
8654779 CR 12-1T21JN1: IE8: NEXT PAGE AND ALL PAGES BUTTONS ARE NOT
WORKING IN EDIT VIEW 21-3-2010 7.6 KB
8867841 CR 12-1UR9DLP > EEA >1 0.1.3.3.3:090204:1614 > HEAP MEMORY
ALLOCATION ERROR 21-3-2010 82.1 KB
9280334 CALENDAR DD/MM/YYYY PROMPT IN DASHBOARD RETURNING FORMAT
YYYY-MM-DD HH:MI:SS 10-3-2010 2.7 MB
9139499 MERGE REQUEST ON TOP OF 10.1.3.4.1 FOR BUGS 8599681 8921914
9073754 7-3-2010 13.4 MB
9305376 CATALOG - CREATE SHORTCUT WITH DIFFERENT NAME APPEARING TWICE
ON THE DASHBOARD 5-3-2010 2.7 MB
9017835 OBIEE SERVER CRASHES WHEN RUNNING HR APPLICATION REPORTS
25-feb-10 28.1 MB
9147807 INCORRECT SYNTAX NEAR ’SESSION’ WHEN QUERYING FRAGMENTED
LOGICAL FACT TABLE 24-feb-10 187 KB
9356692 MERGE REQUEST ON TOP OF 10.1.3.4.1 FOR 8763296 7260120 8680924
8674235 8674235 8 10-feb-10 41 MB
8744580 OTBI : RSUM NOT DISPLAYING THE SUM AS EXPECTED 6-feb-10 148.7
KB

As always:
Yes you need a metalink/support account to download them. No, I will not download them for you and
redistribute them. Ask your local Oracle representative for support.
Till next time

4.4 April

OBIEE 11G still waiting&& (2010-04-19 21:49)

I m starting to get bored waiting for 11g. Grapevine tells me an other month will be added to wait&&
till next time (hopefully soon ;-))
385
4.5 May

OBIEE using display folders (2010-05-05 10:50)

Most repositories have a natural tendency to grow in the time they are alive . For the Physical and
Business layer OBIEE has the option of using display folders:

[1]
Which is a nice way to organise your stuff and most of all to have it look more professional

[2]
These folder only contain shortcuts to the base material.

[3]
So let s start organizing our stuff ;-)
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-ExNXoU2xI/AAAAAAAACbU/bZJQ8L4D0Hs/s1600-h/image%5B2%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-ExOLybPaI/AAAAAAAACbc/Enm5NdunRfg/s1600-h/image%5B5%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-ExO9e6fVI/AAAAAAAACbk/iBMufllFe4E/s1600-h/image%5B8%5D.png

OBIEE multi-line tabs (2010-05-06 14:26)

Or how to change this:

[1]
into :

[2]
First add an extra .TabDimCell to your portalcontent.css and call it .TabDimCell2:
386
[3]
Do the same for TabHiCell:

[4]
On each dashboard page add an extra text element and check the contains HTML box:

[5]
Add the following code to the text box
[code]
<script type=”text/javascript”>
function addSep(id) {
var tbody = document.getElementById(id).getElementsByTagName(”TBODY”)[ 0];
var td1 = document.createElement(”td”);
var row = document.createElement(”tr”);
td1.className = ’TabSep’;
td1.innerHTML =’ &nbsp;’;
td1.id=’tr2’;
row.appendChild(td1);
tbody.appendChild(row);
}
function insCell(str,orgclassName)
{
var oTable = document.getElementById(’TabsTable’);
var lastRow = oTable.rows.length;
lastRow = lastRow -1
var mytable=document.getElementById(’TabsTable’)
var newcell=mytable.rows[lastRow].insertCell(-1) //insert new cell to end of 2nd row
newcell.innerHTML=str;
if (orgclassName == ’TabDimCell’) {
387
newcell.className = ’TabDimCell2’;
}
if (orgclassName == ’TabHiCell’) {
newcell.className = ’TabHiCell2’;
}
var newcell=mytable.rows[lastRow].insertCell(-1) //insert new cell to end of 2nd row
newcell.className = ’TabSep TabDimSep’;
newcell.innerHTML =’ &nbsp;’;
}
var tds = document.getElementsByTagName(’td’);
var TabCount = 0;
var lTAB = new Array();
for (var td = 0; td < tds.length; td++) {
if (tds[td].className != ’TabDimCell’ & & tds[td].className != ’TabHiCell’ ) {
continue;
}
if (TabCount == 4) {
addSep(’TabsTable’);
}
if (TabCount >= 4) {
var str = tds[td].innerHTML;
var orgclassName = tds[td].className;
insCell(str,orgclassName);
tds[td].style.display = ”NONE”;
tds[td+1].style.display = ”NONE”;
}
TabCount = TabCount + 1;
}
</script>
[/code]
Ok i m not a full time javascript programmer so if you have a better solution please let me know.
Till Next Time
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-K1X5iTenI/AAAAAAAACeE/KFzzf8tTEsM/s1600-h/image%5B3%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-K1YVq59KI/AAAAAAAACeM/8aAsTpMvnpI/s1600-h/image%5B7%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-K1ZVHgAPI/AAAAAAAACeU/XywU6fckY3k/s1600-h/image%5B10%5D.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-WVDcfKYDI/AAAAAAAACek/uClICsOsluA/s1600-h/image%5B3%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-K1aNcjw_I/AAAAAAAACec/C_l1bN3ikkM/s1600-h/image%5B13%5D.png

OBIEE Naming Conventions Physical Layer (2010-05-07 10:55)

[1]
This Article is only a guideline to an OBIEE naming convention for the repository. The most important
aspect of a naming convention is that you use it consistently. The used naming convention should be
readable for any future development.
388
1.1 Database Name

[2]
Format: DB +DatabaseName
1.2 Connection Pool Name

[3]
Format: CP + DatabaseName + Read / write attributes
Read / write attributes:

• RO = Read Only

• RW = Read Write

1.3 Physical Display Folder Name

[4]
Format: PD + Foldername
1.4 Physical Catalog Name

[5]
Format: Official Database name (Microsoft) or Schema Name (Oracle)
Depending on the database this can be case sensitive.
1.5 Physical Schema Name (Microsoft)

[6]
Format: Official Schema name (Microsoft). Depending on the database version this can be case sensitive.
389
1.6 Physical table name

[7]
Format: Official table name. Depending on the database version this can be case sensitive. Be aware of
trailing spaces.
1.7 Alias table name

[8]
Format: TableName + A + 2 digit sequence number start = 01(for each table)
1.8 Physical Foreign Key

[9]
Format: Table01+ + Table02 + FKey
1. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-EyqYcaBMI/AAAAAAAACbs/W4kJXKhH6l0/s1600-h/clip_image002%5B3%5D.jpg
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-EyrcDta6I/AAAAAAAACb0/P-nyvivjF68/s1600-h/clip_image004%5B3%5D.jpg
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-EysP4i5mI/AAAAAAAACb8/GNiHjL8_C5w/s1600-h/clip_image006%5B3%5D.jpg
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-EysyIN29I/AAAAAAAACcE/g5bYe2fK4Qg/s1600-h/clip_image008%5B3%5D.jpg
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-EytrfyJQI/AAAAAAAACcM/y0MFIxy9wLg/s1600-h/clip_image010%5B3%5D.jpg
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-EyuXXcNbI/AAAAAAAACcU/t2ByMAYoEtE/s1600-h/clip_image012%5B3%5D.jpg
7. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-EyvIKQK8I/AAAAAAAACcc/2OhU7Vve09A/s1600-h/clip_image014%5B3%5D.jpg
8. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-EyvltvipI/AAAAAAAACck/z2mupgUH_1E/s1600-h/clip_image016%5B3%5D.jpg
9. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-EywYT72GI/AAAAAAAACcs/aLbZmzCozm8/s1600-h/clip_image018%5B3%5D.jpg

OBIEE New Google charts (2010-05-08 21:27)

Google has added some amazing new


charts to there portfolio. check out [1]http://code.google.com/apis/visualization/documentation/galle
ry.html
390
[2]
Add them with a narrative view as I showed you before.
Till next time
1. http://code.google.com/apis/visualization/documentation/gallery.html
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-W7CGi8ITI/AAAAAAAACf0/MXcaxEqXrUc/s1600-h/image%5B3%5D.png

OBIEE Naming Conventions Business Model Layer (2010-05-09 11:02)

This Article is only a guideline to an OBIEE naming convention for the repository. The most important
aspect of a naming convention is that you use it consistently. The used naming convention should be
readable for any future development.

[1]
1.1 Business Model Name

[2]
Format: BM +ModelName
1.2 Logical Display Folder Name:

[3]
391
Format: LD + FolderName
1.3 Logical Table Name:

[4]
Format: TableType + table name
TableType:

• Dim = Dimension Table

• Fact = Fact Table

• Bridge = Bridge Table

1.4 Logical Dimension / Hierachy Name:

[5]
Format: TableName + Dim
1.5 Logical Join

[6]
Format: RLS +Driving Table Name + + Receiving Table Name + Join Type if not inner join
Join Type if not inner join:

• RO = Right Outer Join

• LO = Left Outer Join

1. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-E0N70MVkI/AAAAAAAACc0/zLGyylL_6XE/s1600-h/clip_image002%5B3%5D.jpg
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-E0O61zltI/AAAAAAAACc8/gfm4NZYSlsI/s1600-h/clip_image004%5B3%5D.jpg
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-E0Prh19mI/AAAAAAAACdE/jvOdSAFzUsU/s1600-h/clip_image006%5B3%5D.jpg
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-E0QV55cRI/AAAAAAAACdM/mTZydT1FoKQ/s1600-h/clip_image008%5B3%5D.jpg
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-E0RKc7HEI/AAAAAAAACdU/KkEW8g6Z__Y/s1600-h/clip_image010%5B3%5D.jpg
6. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-E0SLA8voI/AAAAAAAACdc/9VBrt7sCAYs/s1600-h/clip_image012%5B3%5D.jpg

392
OBIEE See me speak (2010-05-11 11:40)

If you were lucky enough to get tickets you can see me speak in Brighton next week:
[1]http://www.rittmanmead.com/biforum2010/. If not and you Dutch is ok see me here:
[2]http://www.bi-event.nl/59857 next Tuesday.
Till Next Time
1. http://www.rittmanmead.com/biforum2010/
2. http://www.bi-event.nl/59857

OBIEE Remove Default button from one dashboard only (2010-05-11 18:51)

If you want to remove these from one page only:

[1]
Add a textbox to your dashboard page:

[2]
Check the contains HTML markup box
Add the following script:
[code]
<script type=”text/javascript”>
function RemoveDefaults() {
var tds = document.getElementsByTagName(’span’);
for (var td = 0; td < tds.length; td++) {
if (tds[td].className != ’DashboardFormatLinks’) {
continue;
}
//alert(tds[td].innerHTML);
tds[td].innerHTML = ” &nbsp”;
}
}
window.onload = RemoveDefaults;
</script>
[\code]
et voila:

[3]
Till Next Time
393
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-mK_iq87lI/AAAAAAAACf8/od2y4ruAxQY/s1600-h/image%5B11%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-mLAYVIT4I/AAAAAAAACgE/rcm9UutfEsI/s1600-h/image%5B5%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-mLBF_3UdI/AAAAAAAACgM/E20EJUHf7-I/s1600-h/image%5B8%5D.png

OBIEE Naming Conventions Presentation Layer (2010-05-11 20:06)

[1]
This Article is only a guideline to an OBIEE naming convention for the repository. The most important
aspect of a naming convention is that you use it consistently. The used naming convention should be
readable for any future development.
1.1 Presentation Catalog Name:

[2]
Format General: For End User Logical Name
Format Custom Display Name: VALUEOF(NQ SESSION.CN +Business Model Name + ) {* }
Format Custom Description: VALUEOF(NQ SESSION.CD +Business Model Name + ) {* }
{* } Only used for translated Repositories
1.2 Presentation Table Name

[3]
Format General: For End User Logical Name
Format Custom Display Name: VALUEOF(NQ SESSION.CN +Business Model Name + Business
Model Table Name + ) {* }
Format Custom Description: VALUEOF(NQ SESSION.CD +Business Model Name + Business
Model Table Name + ) {* }
{* } Only used for translated Repositories
1.3 Presentation Column Name
394
[4]
Format General: For End User Logical Name
Format Custom Display Name: VALUEOF(NQ SESSION.CN +Business Model Name + Business
Model Table Name + Business Model Column Name + ) {* }
Format Custom Description: VALUEOF(NQ SESSION.CD +Business Model Name + Business
Model Table Name + Business Model Column Name + ) {* }
{* } Only used for translated Repositories
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-E1IVkRDbI/AAAAAAAACdk/D6NnItwWpZ4/s1600-h/clip_image002%5B3%5D.jpg
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-E1JOpupLI/AAAAAAAACds/jQb46a-hW6s/s1600-h/clip_image004%5B3%5D.jpg
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-E1KGIZYNI/AAAAAAAACd0/cyUa-6Q73qc/s1600-h/clip_image006%5B3%5D.jpg
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-E1Ky3kZyI/AAAAAAAACd8/jN2S4gAr0aQ/s1600-h/clip_image008%5B3%5D.jpg

OBIEE Remove PDF print option for one dashboard only (2010-05-11 21:13)

Or how to get from:

[1]
to

[2]
add this to a textbox on the dashboard:
[code]
<script type=”text/javascript”>
function RemovePDFOption() {
var tds = document.getElementsByTagName(’span’);
for (var td = 0; td < tds.length; td++) {
if (tds[td].className != ’DashboardFormatLinks’) {
continue;
}
395
//alert(tds[td].innerHTML);
var tHTML = tds[td].innerHTML;
tHTML = tHTML.replace(”PDF</a>”,”</a>”);
//alert(tHTML);
tds[td].innerHTML = tHTML;
}
}
window.onload = RemovePDFOption;
</script>
[/code]
Yeah i know this is very crude (the link is still somewhat hidden there), but if you play around with
javascript .replace and indexof you can clean it up even more.
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-msRdLtDDI/AAAAAAAACgU/bC3jctjv9Ys/s1600-h/image%5B2%5D.png
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-msR07h18I/AAAAAAAACgc/cuA6Cd0GgUc/s1600-h/image%5B5%5D.png

OBIEE Open letter to Oracle (2010-05-14 11:51)

Dear OBIEE product manager,


I hope you are doing well. My friends and I are a bit worried because we haven t heard from you in a
while.
You seem to have missed the OBIEE10G fall 2009 and spring 2010 releases. We know you are working
hard because there is a steady stream of bug fixes. Still it would be nice if you gave us a sign of your
wellbeing every now and then.
How are things going with 10g new brother OBIEE11G?
We have been waiting some time now for it s release. Yes, we know that you never gave us a delivery
date. But we are really really curious of all the new features you promised.
Cool new stuff like working with unbalanced hierarchies and sweet new graphs are really what we need
right now.
Please give us a (small) sign that you are doing well.
Best Regards
John Minkjan [1]http://obiee101.blogspot.com/
p.s.: To my blog followers feel free to co sign this letter.
Update 14-MAY-2010 21:30
Just got of the phone with Matt Bedin, Director - Business Intelligence Product Management at Oracle.
All is well :-).
The code is finished and internal beta testing is well on it s way.
Matt could not give me any release date planning due to strict company rules.
Some of the key features in the first release are:
* Working with hierarchies will be a lot easier, (true OLAP style) you don t have to drag all levels to the
presentation layer anymore. Unbalanced / Ragged hierarchies are supported against most sources.
* Fully documented XUDML, repository updates will be a lot easier to automate.
* A complete overhaul of the graphical engine. (You probably will already have seen the slides&)
Till next Time
1. http://obiee101.blogspot.com/

396
OBIEE Remove line below guided navigation link (2010-05-15 19:02)

If you want to get rid of the small black line below the guided navigation link:

[1]
Found these solutions here:
[2]http://forums.oracle.com/forums/thread.jspa?threadID=1001694 &tstart=0

For all dashboards:


Edit the portalcontent.css change:

[3]
to

[4]
[code]

HR {
visibility:hidden;
}

[/code]

For one dashboard only:


add a text box to the dashboard page:

[5]
Add the following code (thanks Joe!)
[code]
<script type=”text/javascript”>
var aElm=document.getElementsByTagName(’hr’);
for (var i =0; i <aElm.length;i++)
{
aElm[i].parentNode.removeChild(aElm[i]);
}
</script>
[/code]
And the black line is gone:
397
[6]
Till Next Time

1. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-rfjmRdb5I/AAAAAAAACgk/3srZoDmu740/s1600-h/image%5B5%5D.png
2. http://forums.oracle.com/forums/thread.jspa?threadID=1001694&tstart=0
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-rfkkSkv6I/AAAAAAAACgs/4QjBFMnpIrc/s1600-h/image%5B8%5D.png
4. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-rfld5rvXI/AAAAAAAACg0/j_2Fh0mDKEw/s1600-h/image%5B11%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-rfmF4_COI/AAAAAAAACg8/DUA_n_EvhbI/s1600-h/image%5B17%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-rfm2Rij-I/AAAAAAAAChE/aUCTFTW1Fvw/s1600-h/image%5B20%5D.png

My Scrapbook (2010-05-16 12:17)

Need some help:

OBIEE Events Calendar (2010-05-17 20:07)

[1]
First of all Kudos to Hitesh for laying the ground work: [2]http://hiteshbiblog.blogspot.com/2010/04-
/obiee-showing-data-o n-calendar.html
First you have to go to the MooTools site and download the basics:
The mootools core: [3]http://mootools.net/download => choose the uncompressed version, it makes
debugging easier.
Next get the More building blocks Date, Scroller, Tips: [4]http://mootools.net/more
Finally get the calendar control: [5]http://dansnetwork.com/mootools/events-calendar/download/
Put everything in a subfolder of the Res folder (if you are using OC4J as webserver, you have to sync
both RES folders):
398
[6]
Let s get some base data to work with: Startdate, Enddate, dayofweek, brand, revenue:

[7]
Now we add a narrative view:

[8]
In the prefix part we first select the size of the calendar control:

<link rel=”stylesheet” type”text/css” href=”./res/mooTools/mooECalLarge.css”>


or
<link rel=”stylesheet” type”text/css” href=”./res/mooTools/mooECal.css”>
or
<link rel=”stylesheet” type”text/css” href=”./res/mooTools/mooECalSmall.css”>

Next we add the references to the javscript:

<script language=”javascript”
399
src=”./res/mooTools/mootools-1.2.4-core-nc.js”></script>
<script language=”javascript” src=”./res/mooTools/mootools-1.2.4.4-more.js”></script>
<script language=”javascript” src=”./res/mooTools/mooECal.js”></script>

as div tag to hold the body:

<div id=”calBody”></div>

and a function to set the background and font color:


<script language=”javascript”>

function getDiv(holFlag)
{
if(holFlag==’1’ || holFlag==’7’)
{
return ’<div style=”background-color: #990000;color: #ffffff;”>’; }
else
{
return ’<div style=”background-color: #999900;color: #ffffff;”>’; }
}

finally the header of the control:

new Calendar( {calContainer:’calBody’, newDate:’1/3/2007’,


cEvents:new Array(

The date is the date on which the control wil be opened.


The total prefix should look like this:

<link rel=”stylesheet” type”text/css” href=”./res/mooTools/mooECalLarge.css”>


<script language=”javascript” src=”./res/mooTools/mootools-1.2.4-core-nc.js”></script>
<script language=”javascript” src=”./res/mooTools/mootools-1.2.4.4-more.js”></script>
<script language=”javascript” src=”./res/mooTools/mooECal.js”></script>
<div id=”calBody”></div>
<script language=”javascript”>
function getDiv(holFlag)
{
if(holFlag==’1’ || holFlag==’7’)
{
return ’<div style=”background-color: #990000;color: #ffffff;”>’; }
else
{
return ’<div style=”background-color: #999900;color: #ffffff;”>’; }
}
new Calendar( {calContainer:’calBody’, newDate:’1/3/2007’,
cEvents:new Array(

In the narrative part we fill the array:

400
{
title: getDiv(’@3’) +’@4: ’+ ’@5 </div>’,
start: ’@1’,
end: ’@2’,
location: ”
}

In the postfix we close the array:

)
}); </script>

Set the separator to ,


Warning if you try to save this from the narrative view you will get the opaque save screen&.

[9]
switch to the criteria view first and then save!
Add the narrative to your compound lay-out:

[10]
Till Next Time

1. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-WoXpDDiSI/AAAAAAAACes/k2m8BQcEeP8/s1600-h/image%5B8%5D.png
2. http://hiteshbiblog.blogspot.com/2010/04/obiee-showing-data-on-calendar.html
3. http://mootools.net/download
4. http://mootools.net/more
5. http://dansnetwork.com/mootools/events-calendar/download/
6. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-WoY2iB0BI/AAAAAAAACe0/THa9lmgBd-c/s1600-h/image%5B13%5D.png
7. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-WoZydMvwI/AAAAAAAACe8/xzxjqdIT1CE/s1600-h/image%5B18%5D.png
8. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-WoefJZRrI/AAAAAAAACfE/tMw1olibOIw/s1600-h/image%5B21%5D.png
9. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-WofT-qlwI/AAAAAAAACfM/JhZF0BRirCo/s1600-h/image%5B24%5D.png
10. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-WokwoywfI/AAAAAAAACfU/aS_qWtEY2JY/s1600-h/image%5B28%5D.png

OBIEE Conditional format based on other column in charts (2010-05-18 09:39)

When you want to do a conditional format on a chart in OBIEE by default you only have two choices:
401
[1]
Based on a value or based on a presentation variable.
But what if you want to do it based on an other column. Let s say you want the bar to be completely
red if it s below the line and completely green if it s above the line:
First add two dummy conditions one for red and one for green:

[2]

[3]

[4]
Next goto the advanced tab and located the conditions in the XML:

[5]
<saw:conditionFormats>
<saw:conditionRule>
<sawx:expr xsi:type=”sawx:comparison” op=”less”>
<saw:columnRef columnID=”c1”/>
<sawx:expr xsi:type=”xsd:decimal”>0</sawx:expr></sa wx:expr>
<saw:visualFormats>
402
<saw:visualFormat className=”barProp” name=”normalBar” color=”
#FF0000”/></saw:visualFormats></saw:conditionRule>
<saw:conditionRule>
<sawx:expr xsi:type=”sawx:comparison” op=”greaterOrEqual”>
<saw:columnRef columnID=”c1”/>
<sawx:expr xsi:type=”xsd:decimal”>0</sawx:expr></sa wx:expr>
<saw:visualFormats>
<saw:visualFormat className=”barProp” name=”normalBar” color=”
#00FF00”/></saw:visualFormats></saw:conditionRule>
Chance <sawx:expr xsi:type=”xsd:decimal”>0</sawx:expr> to the column you want use like:
<sawx:expr xsi:type=”sawx:sqlExpression”>”11 Time Series”.”1-07 Revenue (Qago)”</sawx:expr>

Don t forget to press the set XML button:

[6]

[7]
hmmmm this is not what we want!
What went wrong? The expression builder for the chart conditional format accepted our tweak:

[8]
The problem is the way the Presentation-server tells the Corda Engine to create the graph. Since the
Corda engine can t see the data it needs to get it s conditions HardCoded. This means the Presentation
server will evaluate the first value of the SQL expression and sent it to the Corda engine.
Is there a workaround? It s actually quit simple. Add two more columns to your table RED and GREEN:

[9]
403
[10]

Add them to your chart and make it a stacked bar:

[11]

Remove the legend:

[12]

Add it to your compound layout and add a extra legend:


404
[13]

[14]
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-5P5GVMpTI/AAAAAAAAChM/Y_tym4DmcdA/s1600-h/image%5B2%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-5P58KT_aI/AAAAAAAAChU/RWNWmXHUiS4/s1600-h/image%5B5%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-5P6WggqTI/AAAAAAAAChc/I2ZAZRlnGR4/s1600-h/image%5B8%5D.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-5P7P81vII/AAAAAAAAChk/bxUvUE0SWfM/s1600-h/image%5B11%5D.png
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-5P7wTfMPI/AAAAAAAAChs/V-8KmywuF9A/s1600-h/image%5B14%5D.png
6. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-5P8qwtulI/AAAAAAAACh0/uwKp1IJJY70/s1600-h/image%5B17%5D.png
7. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-5P9BAkUQI/AAAAAAAACh8/8X1gVIAV5Wg/s1600-h/image%5B20%5D.png

405
8. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-5P9vWOJFI/AAAAAAAACiE/OikIYQzDoM4/s1600-h/image%5B23%5D.png
9. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-5P-HLpXGI/AAAAAAAACiM/b7bzrCqA6PM/s1600-h/image%5B42%5D.png
10. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-5P_AXdPfI/AAAAAAAACiU/8bSot58oDRY/s1600-h/image%5B43%5D.png
11. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-5P_gduhdI/AAAAAAAACic/URM3CmTDZoY/s1600-h/image%5B44%5D.png
12. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-5QASopyqI/AAAAAAAACik/KrcQS8Z2cGI/s1600-h/image%5B35%5D.png
13. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-5QBJqiGmI/AAAAAAAACis/Av4dRWW02dE/s1600-h/image%5B45%5D.png
14. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-5QBw9WUQI/AAAAAAAACi0/UQAMNO-PBvo/s1600-h/image%5B46%5D.png

OBIEE Playing With TopN Part 1 (2010-05-20 21:13)

Basic question Give back the Top10 Customers:

[1]

Simple add a TopN filter to request:

[2]

Most manager won t be satisfied with this report because there isn t a time element present. Let s add a
year:

[3]
406
[4]

Okay what about the top10 for each year? Here is one solution:

First convert the filter to SQL:

[5]

[6]

Add a by to the TOPN Part:

TOPN(”F1 Revenue”.”1-01 Revenue (Sum All)”,10 by ”D0 Time”.”T05 Per Name Year” ) <= 10

[7]
407
[8]

What about showing the top 2 products for each top10 customer? I will discus that in part2.

Till Next Time

1. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-7yekTO7FI/AAAAAAAACi8/wFt3s8ea0fs/s1600-h/image%5B3%5D.png
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-7ygANXzsI/AAAAAAAACjE/ug8PmWg9BBQ/s1600-h/image%5B6%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-7yhE6zSDI/AAAAAAAACjM/Cz2HaE2lrpM/s1600-h/image%5B9%5D.png
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-7yh9sYEII/AAAAAAAACjU/ycac948enCI/s1600-h/image%5B13%5D.png
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-7yn69LAYI/AAAAAAAACj0/p2l6xGEp5-k/s1600-h/image%5B23%5D.png
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/S-7yohZOpTI/AAAAAAAACj8/EPvXnezeXPM/s1600-h/image%5B24%5D.png
7. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-7zN0e4jyI/AAAAAAAACkQ/QKDkiosYEEo/s1600-h/image%5B29%5D.png
8. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-7yt7Y2bxI/AAAAAAAACkY/Ew7sWS2fxfM/s1600-h/image%5B30%5D.png

OBIEE Playing With TopN Part 2 (2010-05-21 21:41)

In part 1 we ended with:


408
[1]
Let s try to add the top2 product2 for each customer in the top 10. Start with adding the product column:

[2]
You will notice that the revenue for each customer has dropped. This means we first have to lock the
revenue on a customer / year level:

[3]
409
[4]
Okay that fixed, let s get the revenue by product:

[5]
Some how I don t think this correct. Let s get the details for one customer:

[6]
410
He has bought several products so let s tweak this some more. We need to add the TOPN2 Filter for
product by customer by year.

[7]

Just add as an extra column.

[8]

Let s put it in a pivot to make it even more readable:

[9]

Till Next Time

1. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-75LkwRx5I/AAAAAAAAClw/rGdB-H1LgxA/s1600-h/image%5B28%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-75MX8g-5I/AAAAAAAACl4/AKF4Ydp8THk/s1600-h/image%5B29%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-75NGJjR7I/AAAAAAAACmI/e6d3j-g7Sjo/s1600-h/image%5B30%5D.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-75N6CqVGI/AAAAAAAACmY/d-J4AOH5iic/s1600-h/image%5B31%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-75Ovh17yI/AAAAAAAACmo/_eJJdK0ix7w/s1600-h/image%5B32%5D.png
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-75PQg0U9I/AAAAAAAAClQ/TXj7K21vi1M/s1600-h/image%5B21%5D.png
7. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-75P8dnWlI/AAAAAAAACm4/tBj9MZRZW9I/s1600-h/image%5B33%5D.png
8. http://lh6.ggpht.com/_qd3TDEvIh4Y/S-75Q4IMkGI/AAAAAAAACnE/qT9dxcslWTk/s1600-h/image%5B34%5D.png
9. http://lh4.ggpht.com/_qd3TDEvIh4Y/S-75RuGHfQI/AAAAAAAACnQ/BWjyeahwMGs/s1600-h/image%5B36%5D.png

411
OBIEE Brighton 2010 (2010-05-22 17:50)

Our dad presented at Brighton 2010, and all he brought back where shirts the size of our nightgowns:

[1]
He also brought back a ton of ideas he will be blogging in the near future.
The main themes of the conference were data modelling within OBIEE and the launch of the product
currently in our labs soon to be released but we won t tell you when& (Normal people just call it OBIEE
11g).
It was great to meet Kurt Wolf and hear from the OBIEE s original father how the basics of OBIEE
where thought up (while it was still NQuire).
My complements for people from Oracle: Phil Bates, Mike Durran, Adam Bloom and Craig Stewart for
NOT telling us when OBIEE 11g will be general available. (Even under intense pressure of everybody
else ;-) )
Some other highlights were:

• Robin Muffat (aka RNM1978) had brilliant presentation on how you can load test your OBIEE
system and get valid results.

• Emiel van Bockel showed us that his modelling ideas he presented last year actually work.

• Antony Heljula give us some useful thoughts on how to determine your system requirements real-
istically.

From all the other presentations you could start to see the integration of the whole BI stack around
Oracle s Fusion Middle Ware package.
All and all it was a nice conference and hopefully by next year we can see the first implementations of
OBIEE 11g.
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_f85cLXN-I/AAAAAAAACn8/EWStqVU6L1M/s1600-h/22052010052%5B3%5D.jpg

412
OBIEE Playing with TopN part 3 the Rank Function (2010-05-22 20:16)

The TOPN function is basically the RANK function with a filter. Knowing this can help us to get around
the following error message:

[1]
You can translate TOPN( column ,10) to a Where RANK( column ) <=10.
How BottmN( column ,10)?.
Try this: COUNT( column ) RANK( column ) <=9 {0 based }.
So the BottomN 10 customers become:

SELECT ”D0 Time”.”T05 Per Name Year” saw 0, ”D1 Customer”.”C0 Cust Key” saw
1, ”D1 Customer”.”C1 Cust Name” saw 2, ”F1 Revenue”.”1-01 Revenue (Sum All)” saw
3, COUNT(”F1 Revenue”.”1-01 Revenue (Sum All)” by ”D0 Time”.”T05 Per Name Year”)-
RANK(”F1 Revenue”.”1-01 Revenue (Sum All)” by ”D0 Time”.”T05 Per Name Year”) saw
4 FROM ”Sample Sales” WHERE COUNT(”F1 Revenue”.”1-01 Revenue (Sum All)” by
”D0 Time”.”T05 Per Name Year”)-RANK(”F1 Revenue”.”1-01 Revenue (Sum All)” by ”D0
Time”.”T05 Per Name Year”) <= 9 ORDER BY saw 0, saw 4

[2]
Till Next Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/S_GH_VzrrmI/AAAAAAAACns/uym0l7ZcKNs/s1600-h/image%5B3%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_GIAro7apI/AAAAAAAACn0/m1yrG35_MGw/s1600-h/image%5B6%5D.png

OBIEE 11g The GA bet (2010-05-23 23:54)

OBIEE 11g is coming, whispers are getting stronger by the day!


The previews are looking great!
The only thing missing is a date for the general availability. (A download possible from OTN!)
That s why I started a betting page. You can add a maximum of 5 dates between 1-June-2010 and
31-Dec-2010. A date can only be claimed by one person!
The prize? I will have think something up but you will at least get the glory. (Perhaps some nice Ciber
promo goodies?)
Here is the list sofar:

Date Claimed By
16-June-2010 John Minkjan
413
4-July-2010 Daan Bakboord
7-July-2010 John Minkjan
27-July-2010 Rich
31-July-2010 RMN1978
24-August-2010 John Minkjan
19-September-2010 RMN1978
27-September-2010 lost_in_space
18-October-2010 lost_in_space
17-November-2010 John Minkjan
05-December-2010 John Minkjan

Good luck to all

OBIEE Like to bet? (2010-05-24 22:18)

If you like to place a little bet on the GA of OBIEE11G. Here is a change:


[1]http://obiee101.blogspot.com/p/obiee-11g-ga-bet.html Just put your entry as a comment line to the
article.
Till Next Time
1. http://obiee101.blogspot.com/p/obiee-11g-ga-bet.html

OBIEE TimeStamp Calculations: (2010-05-25 18:00)

David T showed some nice Timstamp calculations on the OTN forum:


[1]http://forums.oracle.com/forums/message.jspa?messageID=431566 4 #4315664

1) TIMESTAMPADD(SQL TSI DAY, (DayOfMonth(CURRENT DATE))*-1, CUR-


RENT DATE) will give you the last day of the previous month...
2) TIMES-
TAMPADD(SQL TSI DAY,DAYOFWEEK(TIMESTAMPADD(SQL TSI DAY, (Day-
OfMonth(CURRENT DATE))*-1, CURRENT DATE))*-1,TIMESTAMPADD(SQL TSI
DAY, (DayOfMonth(CURRENT DATE))*-1, CURRENT DATE)) will give you the Sat-
urday prior to the last week of the month.
3) TIMESTAMPADD(SQL TSI DAY,1,TIMESTAMPADD(SQL
TSI DAY,DAYOFWEEK(TIMESTAMPADD(SQL TSI DAY, (DayOfMonth(CURRENT
DATE))*-1, CURRENT DATE))*-1,TIMESTAMPADD(SQL TSI DAY, (DayOf-
Month(CURRENT DATE))*-1, CURRENT DATE))) will give you the Sunday of the last
week of the previous month.

Till Next Time


1. http://forums.oracle.com/forums/message.jspa?messageID=4315664#4315664

4.6 June

OBIEE 11g Launch (2010-06-06 12:59)

We the buzz is on the street, OBIEE 119 will be launched on July the 7th in London.
414
Most countries have there local launch at the same time with a video link to the London event.
From the information I have so far this is only a marketing launch, not the general availability. (Of course
I hope I m wrong ;-) )
Nice to see even PCWORLD has found the bet: [1]http://www.pcworld.com/businesscenter/ar-
ticle/197910/major oracle bi launch coming next month.html. It s still open so have a shot.
Till Next Time.
1. http://www.pcworld.com/businesscenter/article/197910/major_oracle_bi_launch_coming_next_month.html

OBIEE Guide user to help text (2010-06-14 12:36)

On most dashboards there is a general page with a help text regarding de dashboards. A nice cosmetic
trick is to change the mouse icon when a user approaches the help link:

[1]
Just add some custom css to the dashboard:

[2]
[code]

cursor:help

[/code]
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/TBYGLz99pLI/AAAAAAAACyA/MblKa3kWBuk/s1600-h/image%5B9%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/TBYGMmL_X8I/AAAAAAAACyI/7z-JVwhd3Og/s1600-h/image%5B12%5D.png

OBIEE PATCHES 10.1.3.4.1 part 5 (2010-06-17 08:32)

&.still waiting for 11g&

Patch Description Date Size


9206169 SEGMENT TREE SCROLL BAR ISSUE 17-jun-10 5.7 KB
8978099 RENDERING DELAY IN WORKSPACE 2-jun-10 10.6 KB
9649966 OBIEE LINKS DRILL IN CHART REPORT IMBEDDED IN PORTAL PAGE
DON’T WORK IN FIREFOX 27 May 2010 9.3 KB
8324849 LOCALE / LOCATION LANGUAGE AND USER INTERFACE LANGUAGE RESET
415
ON LOG OUT AND IN 25 May 2010 1.6 MB
9309415 CANNOT RUN A BIP REPORT WITH BIND VARIABLES USING BI DATA SRC
19 May 2010 28.1 MB
9698146 MERGE REQUEST ON TOP OF 10.1.3.4.1 FOR BUGS 8290868 8331209
8332167 8350962 18 May 2010 41 MB
9548172 JAPANESE CHARACTER SET NOT PASSED CORRECTLY TO DRILL REPORT IN
FIREFOX BROWSER 18 May 2010 15.8 KB
9394038 REFRESH LINK IN A REQUEST INSIDE A DASHBOARD DOESN’T DISPLAY
UPDATED DATA 14 May 2010 2.7 MB
9646342 MERGE REQUEST ON TOP OF 10.1.3.4.1 FOR BUGS 9492821 8439796 13
May 2010 2.7 MB
9483199 PERFORMANCE DROP SINCE 10.1.3.3.2 DUE TO SQL GENERATION IN
10.1.3.4.1 13 May 2010 73.8 KB
9523443 NESTED AGO AND TODATE NOT WORKING AGAINST ESSBASE 05 May 2010
207.8 KB
8768948 NQSSERVER FREQUENTLY CRASHING - 3-975745001 04 May 2010 28.1
MB
9595228 MERGE REQUEST ON TOP OF 10.1.3.4.1 FOR BUGS 6220349 8394579 04
May 2010 3.6 MB
8727821 CR #12-1U5TORQ: MODIFY NQSSERVER.EXE PE HEADER FLAGS TO
SUPPORT LARGE ADDRESSES 28-apr-10 1004.3 KB

Till Next Time

OBIEE11G Visualisations (2010-06-18 10:21)

Check out this article: [1]http://blogs.forrester.com/business process/2009/11/how-to-differentiate-


advanced-data-visualisation-s olutions.html from Boris Evelson and the response from Stephen Few:
[2]http://www.perceptualedge.com/blog/?p=637.
I m with Stephen on this one. I wonder how OBIEE11g will score .
Till Next Time
1. http://blogs.forrester.com/business_process/2009/11/
how-to-differentiate-advanced-data-visualisation-solutions.html
2. http://www.perceptualedge.com/blog/?p=637

OBIEE Multie line tabs part 2 (2010-06-23 14:40)

Remember this one:


[1]http://obiee101.blogspot.com/2010/05/obiee-multi-line-tabs.ht ml
Or how to change this:

[2]
into :

[3]
416
but how about this:

[4]
First follow the steps from the first article. Next change the code to:
[code]
<script type=”text/javascript”>
var allHTMLTags = new Array();
onload=function() {
if (document.getElementsByClassName == undefined) {
document.getElementsByClassName = function(className)
{
var hasClassName = new RegExp(”(?:ˆ|\\s) ” + className + ”(?: $|\\s)”);
var allElements = document.getElementsByTagName(”*”);
var results = [];
var element;
for (var i = 0; (element = allElements[i]) != null; i++) {
var elementClass = element.className;
if (elementClass & & elementClass.indexOf(className) != -1 & & hasClassName.test(elementClass))
results.push(element);
}
return results;
}
}
}
function insertAfter( referenceNode, newNode )
{ referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}
function addNewLI( obj )
{
x = document.getElementsByClassName(’TabTable’)[0];
var newTable = document.createElement(’table’);
var newLI = document.createElement(’tbody’);
newLI.id=’TabsTableRow2’;
var td1 = document.createElement(”td”);
var row = document.createElement(”tr”);
td1.className = ’TabSep’;
td1.innerHTML =’ &nbsp;’;
td1.id=’tr2’;
td1.style.width =’40px’;
row.appendChild(td1);
newLI.className = ’TabTable’;
newLI.appendChild(row);
newTable.cellSpacing = ’0px’;
newTable.cellPadding = ’0px’;
newTable.appendChild(newLI);
insertAfter( x, newTable );
}
417
function addSep(id) {
var tbody = document.getElementById(id).getElementsByTagName(”TBODY”)[ 0];
addNewLI( tbody );
}
function insCell(str,orgclassName,TabCount)
{
var oTable = document.getElementById(’TabsTableRow2’);
var lastRow = oTable.rows.length;
lastRow = lastRow -1
var mytable=document.getElementById(’TabsTableRow2’)
var newcell=mytable.rows[lastRow].insertCell(-1) //insert new cell to end of 2nd row
newcell.innerHTML=str;
if (orgclassName == ’TabDimCell’) {
newcell.className = ’TabDimCell2’;
}
if (orgclassName == ’TabHiCell’) {
newcell.className = ’TabHiCell2’;
}
newcell.style.width = ’100px’;
var newcell=mytable.rows[lastRow].insertCell(-1) //insert new cell to end of 2nd row
newcell.className = ’TabSep TabDimSep’;
newcell.innerHTML =’ &nbsp;’;
}
function insLastCell(str,orgclassName,TabCount)
{
var oTable = document.getElementById(’TabsTableRow2’);
var lastRow = oTable.rows.length;
lastRow = lastRow -1
var mytable=document.getElementById(’TabsTableRow2’)
var newcell=mytable.rows[lastRow].insertCell(-1) //insert new cell to end of 2nd row
newcell.innerHTML =’ &nbsp;’;
var mytable2=document.getElementById(’TabsTableRow2’)
newcell.style.textAlign = ’right’;
var x = screen.width ;
x = x - (((TabCount - 4) * 100)+ 130);
x = x+’px’;
newcell.style.width = x;
}
var tds = document.getElementsByTagName(’td’);
var TabCount = 0;
var lTAB = new Array();
for (var td = 0; td < tds.length; td++) {
if (tds[td].className != ’TabDimCell’ & & tds[td].className != ’TabHiCell’ ) {
continue;
}
if (TabCount == 4) {
addSep(’TabsTable’);
}
tds[td].style.width = ’100px’
if (TabCount >= 4) {
var str = tds[td].innerHTML;
var orgclassName = tds[td].className;
418
insCell(str,orgclassName, TabCount);
tds[td].style.display = ”NONE”;
tds[td+1].style.display = ”NONE”;
}

TabCount = TabCount + 1;
}
insLastCell(str,orgclassName,TabCount);

</script>

[/code]

Till Next Time\

1. http://obiee101.blogspot.com/2010/05/obiee-multi-line-tabs.html
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-K1X5iTenI/AAAAAAAACeE/KFzzf8tTEsM/s1600-h/image%5B3%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/S-K1YVq59KI/AAAAAAAACeM/8aAsTpMvnpI/s1600-h/image%5B7%5D.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/TCIA0_rezeI/AAAAAAAACyg/RkZvlvAwmzI/s1600-h/image%5B3%5D.png

OBIEE Which report uses which column (2010-06-24 18:50)

With regular intervals you see this question on the forums. Seems that at lot of people are unaware of
the possibilities of the catalog manager.

First let s op a catalog in off-line read only mode:

[1]

select the catalog top level:

[2]

Next goto Tools > Create Report (or use CTRL-R):


419
[3]

Select The Info you need:

[4]

enter a file location:

[5]

It s saved as a tab delimited file.

you can do the same for dashboards:


420
[6]
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/TCNGjMJvmWI/AAAAAAAACyo/xo0L-ibQpNo/s1600-h/image%5B25%5D.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/TCNGkEM8MAI/AAAAAAAACyw/X766Wiwu9QY/s1600-h/image%5B24%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/TCNGlAdHJCI/AAAAAAAACy4/UbiaQZ-HM5w/s1600-h/image%5B26%5D.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCNGmaXg69I/AAAAAAAACzE/8Omfl9--oUA/s1600-h/image%5B21%5D.png
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCNGoqan65I/AAAAAAAACzM/WPXbn6zUOuU/s1600-h/image%5B22%5D.png
6. http://lh3.ggpht.com/_qd3TDEvIh4Y/TCNGp7iQGMI/AAAAAAAACzU/mzxadzfdq7I/s1600-h/image%5B23%5D.png

OBIEE you don t want to see this&.. (2010-06-25 08:48)

Have a look a this connection pool to an MSSQL database for max 10 seconds:

[1]
Kudos for the first one who can tell where the developer should report first thing tomorrow morning and
especially why!
I will post the answer in a couple of days if no one has given any comments until then.
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/TCRRbmjwJ5I/AAAAAAAAC1Y/zxKzGojciQE/s1600-h/image%5B3%5D.png

421
OBIEE Google map redux (2010-06-26 18:03)

What @Alex does in Siebel: [1]http://siebel-essentials.blogspot.com/2010/06/google-maps-enc ore-again-


nochmal.html, can of course be done in OBIEE.
Just create a narrative constructing the URL:

[2]
don t make it to long (say 25 addresses) :

[3]
and of course don t forget the contians HTML checkbox:

[4]
And he presto:

[5]
422
or wait for 11g to do some real spatial stuff&
till next time
1. http://siebel-essentials.blogspot.com/2010/06/google-maps-encore-again-nochmal.html,
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/TCNXprEUN4I/AAAAAAAACzg/kVZ2MU4m2I4/s1600-h/image%5B9%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/TCNXrkRQ9zI/AAAAAAAACzo/zTgrUm-8hyI/s1600-h/image%5B5%5D.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCNXscpkL1I/AAAAAAAACzw/nOI5noI6JIQ/s1600-h/image%5B8%5D.png
5. http://lh3.ggpht.com/_qd3TDEvIh4Y/TCNXtaHayPI/AAAAAAAACz4/pwxavPj1w5o/s1600-h/image%5B13%5D.png

OBIEE dynamic pivot calculations (2010-06-28 10:18)

In [1]http://obiee101.blogspot.com/2009/01/obiee-rowbased-calculati ons-in-pivot.html I showed you


how can make make your own calculations in a pivot table. But what if you want to make it more
dynamic? Consider this: The forecast is .4 * q1 + .6 * q3.
If we do it the hardcoded way we get:

[2]
This works fine:

[3]
But if we switch to 2008:
423
[4]

we loose the forecast.

you can make it dynamic by chancing the hard-coded row or column names to dynamic ones using the
dollar sign $:

[5]

Now you always have a forecast:


424
[6] and [7]

Till Next Time

PS @[8]eejimkos it works fine in al my browsers:

Firefox:

[9]

IExplorer:
425
[10]
Chrome:

[11]
1. http://obiee101.blogspot.com/2009/01/obiee-rowbased-calculations-in-pivot.html
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCha3wT1i9I/AAAAAAAAC2A/1NiLkNt17Bk/s1600-h/image%5B18%5D.png
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCha4qbm_hI/AAAAAAAAC2I/9hFAkGa96Ok/s1600-h/image%5B19%5D.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCha5RT_udI/AAAAAAAAC2Q/C-1Xr93JoJQ/s1600-h/image%5B20%5D.png

426
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/TCha6OcBJ2I/AAAAAAAAC2Y/sJxVWz6xQAI/s1600-h/image%5B21%5D.png
6. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCha6gJiccI/AAAAAAAAC2g/sDHvfLzcPy0/s1600-h/image%5B14%5D.png
7. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCha7HYgJpI/AAAAAAAAC2o/4nKVdxUyPN4/s1600-h/image%5B17%5D.png
8. http://www.blogger.com/profile/08937462011327890752
9. http://lh6.ggpht.com/_qd3TDEvIh4Y/TCrgWp7d89I/AAAAAAAAC3A/97Dwk-LY8Gs/s1600-h/image%5B16%5D.png
10. http://lh6.ggpht.com/_qd3TDEvIh4Y/TCrgX2j4t4I/AAAAAAAAC3I/w9N8DOhbkNU/s1600-h/image%5B17%5D.png
11. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCrgZVkN7uI/AAAAAAAAC3Q/3NgR9qDAewk/s1600-h/image%5B19%5D.png

OBIEE Adding Image to Column Header (2010-06-30 08:42)

Or how to make this:

[1]
Goto your column header format:

[2]
Put a space in both your table heading and Column Heading, check the custom headings box.
Press the format button for the column heading:

[3]
Add some custom CSS:

[4]
like :
[code]
background-image:url(’res/sk oracle10/answers/abbcompound.gif’);background-repeat:no-repeat;h
eight:30px;
[/code]
Check the results:
427
[5]
Till Next Time
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/TCrnOQbKKcI/AAAAAAAAC3Y/6i66pLHFSGY/s1600-h/image%5B2%5D.png
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/TCrnPRDmu-I/AAAAAAAAC3g/HtLZidZBea4/s1600-h/image%5B5%5D.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/TCrnQnEeZgI/AAAAAAAAC3o/Ys36V9GzI8o/s1600-h/image%5B8%5D.png
4. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCrnRfsxjHI/AAAAAAAAC3w/H9KTXkLmVXU/s1600-h/image%5B11%5D.png
5. http://lh6.ggpht.com/_qd3TDEvIh4Y/TCrnOQbKKcI/AAAAAAAAC3Y/6i66pLHFSGY/s1600-h/image%5B2%5D.png

4.7 July

OBIEE Which connection pool user NOT to use (2010-07-02 10:52)

Sometime ago I asked why you don t want to see this:


[1]http://obiee101.blogspot.com/2010/06/obiee-you-dont-want-to-s ee-this.html
RMN1978 and @lex where the firsts to answer:
If you are using fixed users in the connection pool, there are a couple of accounts you never ever should
use and a couple you should try to avoid.
Users you should never ever use are the so called system users like SYS, SYSDBA, SYSTEM (Oracle), SA
(mssql) etcetera. These users have a specific function on the database and shouldn t have any operational
data. If you really need data owned by these users use a view and ask your DBA to grant you selec only
rights.
Users you should try to avoid are so called SCHEMA or OBJECT owners. These users have besides
SELECT the right to execute DELETE, UPDATE and INSERT statements. (and sometimes even DROP
and CREATE privileges). Always ask you DBA for a SELECT ONLY / READ ONLY account. If you
need to execute any functions ask him to grant it to your user (preferably trough a ROLE).
Please Please Please consult your DBA on which Account to use !
Till Next Time
1. http://obiee101.blogspot.com/2010/06/obiee-you-dont-want-to-see-this.html

OBIEE 10G the Farewell Competition (2010-07-04 11:12)

Although OBIEE 11G is not yet generally available on the market, and the 10G version will be around
for quite some time it’s time to prepare for a farewell.
I want to do this with a competition. Why? Because I want to proof the world that OBIEE 11G might
be fabulous, you can do a lot of interesting stuff with OBIEE 10G.
How does it work?
Make a new catalog and create a maximum of 5 dashboard pages based on the ”extended sales sample”
repository, found here:[1] http://download.oracle.com/technology/products/bi/files/oracle bi sample
analysis setup files.zip
Any restrictions?

• It has to fit a 1024 x 768 screen.

• All CSS / Javascript changes have to be from the dashboard page, not the webserver.
428
• You can’t use external graph engines (FI: Google Charts or Maps)

• Everything has to work under the repository Administrator account

• It’s has to work in both IExplorer and Firefox.

What are we looking for:

• Usability

• Aesthetics

• Used

techniques What do you have to send in?

• Only the catalog, since we all are using the ”Extended Sample Sales” repository. Please give it a
unique name fi: OBIEE COMP YOUR NAME

• Of course your real name and contact info.

• And a small description of what you have done.

Where do I send it?


Zip it up a mail it to: john dot minkjan at ciber dot nl
What will be the prize?
Of course the glory and the right to put it on your CV. We also will trough in a goodie bag.
When does the competition close?
August 30th 2010 00:00 GMT
Who will be the judges?
Of course the best of the best:

• Mark Rittman - RittmanMead

• Emiel van Bockel - BiFacts / Centraal Boekhuis

• Daan Bakboord - Scamander Solutions

• Christian Berg - Independant Consultant

• John Minkjan - Ciber

Can we have any correspondence on the result?


Of course not! ;-)
And yes, we do keep the right to change the rules along the way!

1. http://download.oracle.com/technology/products/bi/files/oracle_bi_sample_analysis_setup_files.zip

429
OBIEE dynamic columns in the by statement (2010-07-04 14:34)

Did this one on OTN [1]http://forums.oracle.com/forums/thread.jspa?threadID=1090834 &tstart=0


First get your column names into a prompt:

[2]
sql is bit like :
SELECT case when 1=0 then ”D0 Time”.”T02 Per Name Month” else ’”D2 Market”.”M04 Region”’ end
FROM ”Sample Sales” UNION ALL SELECT case when 1=0 then ”D0 Time”.”T02 Per Name Month”
else ’”D0 Time”.”T02 Per Name Month”’ end FROM ”Sample Sales”
Put the column name between single quotes!
(Yes I know a LOV is better but this is just for demo)
Create a report:

[3]
Edit the rank formula to:
Rank(”F1 Revenue”.”1-01 Revenue (Sum All)” by @ {pColumn } {”D0 Time”.”T05 Per Name Year” })
Put it on a dashboard:

[4]

[5]
Till Next Time
1. http://forums.oracle.com/forums/thread.jspa?threadID=1090834&tstart=0
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/TCSiqm_ZwqI/AAAAAAAAC1g/iAwAhSF5LRQ/s1600-h/image%5B2%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/TCSirY-U5aI/AAAAAAAAC1o/vC6V4aRktqI/s1600-h/image%5B5%5D.png
4. http://lh4.ggpht.com/_qd3TDEvIh4Y/TCSisXJajxI/AAAAAAAAC1w/h2o1qswmsuU/s1600-h/image%5B8%5D.png
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCSitS0zcII/AAAAAAAAC14/DPIdMi654uI/s1600-h/image%5B11%5D.png

OBIEE 10G The Farewell Competition! (2010-07-05 11:49)

Yes 11g is coming! But still would you like to join me in a farewell competition for 10g? Details can be
found here: [1]http://obiee101.blogspot.com/p/obiee-10g-farewell-competition .html.
Good luck in the contest!
Till Next Time
1. http://obiee101.blogspot.com/p/obiee-10g-farewell-competition.html

OBIEE Administration Tool Options Part 1 (2010-07-06 08:13)

The options you rarely use but come in quite handy sometimes:
Show rowcount in Physical layer:
430
By default the rowcount of a table is only visible on mouse over:

[1]
Goto Tools > Options > General and check the show rowcount box:

[2]
And presto the rowcount is always visible:

[3]
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/TCRJMn7IrfI/AAAAAAAAC0A/QmkACn7wgSQ/s1600-h/image%5B2%5D.png
2. http://lh5.ggpht.com/_qd3TDEvIh4Y/TCRJN-Hx0VI/AAAAAAAAC0I/w9Zf-mtY8zI/s1600-h/image%5B5%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/TCRJOi7DF1I/AAAAAAAAC0Q/vFybNqQZxdI/s1600-h/image%5B8%5D.png

OBIEE11g Launch day! (2010-07-07 16:59)

Just back from the Dutch OBIEE11g (pre)-launch day. At lot of new cool features:
[1]http://www.oracle.com/us/bi-enterprise-edition-plus-ds-078848 .pdf
and the first real life experiences here:
[2]http://www.oracle.com/oms/businessintelligence11g/business-in sight-075567.html
[3]http://www.oracle.com/us/obiee-11g-technical-overview-078853. pdf
Still no news on the official GA Launch date :-(
Till Next Time
1. http://www.oracle.com/us/bi-enterprise-edition-plus-ds-078848.pdf
2. http://www.oracle.com/oms/businessintelligence11g/business-insight-075567.html
3. http://www.oracle.com/us/obiee-11g-technical-overview-078853.pdf

OBIEE Administration Tool Options Part 2 (2010-07-08 08:22)

The options you rarely use but come in quite handy sometimes:

[1]
431
When debugging a large physical schema it is sometimes handy to have the qualified names:
Goto Tools > Options > General and check the Display qualified names box:

[2]
And presto you will have the qualified names:

[3]
Till Next Time

1. http://lh4.ggpht.com/_qd3TDEvIh4Y/TCRLFIQTH2I/AAAAAAAAC0Y/xKTal21s3R8/s1600-h/image8.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/TCRLGRzG_bI/AAAAAAAAC0g/o9INUPi4cS0/s1600-h/image5.png
3. http://lh3.ggpht.com/_qd3TDEvIh4Y/TCRLIB5ywdI/AAAAAAAAC0o/ZcoSeqxrdnM/s1600-h/image2.png

OBIEE Administration Tool Options Part 3 (2010-07-10 08:27)

The options you rarely use but come in quite handy sometimes:
Getting bored doing this:

[1]
Goto Tools > Options > General and check the .. box:

[2]
Till Next Time

1. http://lh4.ggpht.com/_qd3TDEvIh4Y/TCRMpnBhVVI/AAAAAAAAC0w/QsK2dYzYs_A/s1600-h/image2.png
2. http://lh4.ggpht.com/_qd3TDEvIh4Y/TCRMqn3BJZI/AAAAAAAAC04/KxaRmIAWga8/s1600-h/image5.png

432
OBIEE Administration Tool Options Part 4 (2010-07-12 08:33)

The options you rarely use but come in quite handy sometimes:
Nice one when debugging a large diagram:

[1]
Goto Tools > Options > General and check the Display Original name for Alias box:

[2]

[3]
Till Next Time
1. http://lh4.ggpht.com/_qd3TDEvIh4Y/TCRN57YA-4I/AAAAAAAAC1A/U3lMdtfuVMU/s1600-h/image%5B2%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/TCRN6rQYRWI/AAAAAAAAC1I/vZS4ST8Hpic/s1600-h/image%5B5%5D.png
3. http://lh4.ggpht.com/_qd3TDEvIh4Y/TCRN7p6FWfI/AAAAAAAAC1Q/SzrjfMSTUnM/s1600-h/image%5B8%5D.png

OBIEE Images Cheat Sheet (2010-07-14 00:43)

Mouse over has the names


\images\

[1]report_agreements [2]report_account_appl [3]report_activities


[4]report_automotive2 [5] report_bad_progress [6]report_automotive1
[7]report_bankAccount [8]report_bottomN [9]report_bad_percentage
[10]report_bankBalances [11] report_call [12]report_bad_value
[13]report_callcenter [14] report_cautionary_progress
[15]report_cautionary_percentage
[16]report_cautionary_value [17]report_comm2 [18]report_comm1
[19]report_cust_sat [20]report_expiration [21]report_email
[22]report_forecasting [23]report_geographical
[24]report_good_progress
[25]report_generic [26]report_good_percentage [27]report_household
[28]report_good_value [29] report_insurance_Policy
[30]report_insuranceClaim
[31]report_investigative [32]report_invoices [33]report_location
[34]report_medicalResearch [35]report_mktShare [36]report_order
[37]report_phone [38]report_pillcount [39]report_pipeline
[40]report_reportsCatalog [41]report_retailAudit [42]report_salesrep
[43]report_salesVolume [44]report_service_profitibility
[45]report_scorecard
433
[46]report_serviceRequest [47]report_targetActual [48]report_topN
[49]report_tradepromo [50]report_tradefund [51]report_universal_queue
[52]report_trends [53] report_win_lossDeals
[54]report_medicalResearch

\portal\

[55]actuateroilarge [56]actuateroxlarge [57]add2bb [58]add2bb


[59]bgviewbarsep [60]blank [61]btn_max [62]btn_min
[63]dash_refresh [64]dashboardwarning [65]download
[66]idashed_addcolumn
[67] idashed_bb [68]hdgportals

\Maps\

[69]europe_map_1color [70]europe_map_4color
[71]usa_map_1color [72]usa_map_1color_noLabels
[73]usa_map_4color_noLabels
[74]world_map_1color [75]world_map_4color

Visible links 1. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdNwsNMHI/AAAAAAAACoI/5chTEsehUNk/s1600-h/report_


agreements5.jpg
2. http://lh6.ggpht.com/_qd3TDEvIh4Y/S_hdO-dmTLI/AAAAAAAACoQ/68y6KA5e_Zo/s1600-h/report_account_appl5.jpg
3. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdPpiuVAI/AAAAAAAACoY/1nmEmgu_4Ac/s1600-h/report_activities2.jpg
4. http://lh6.ggpht.com/_qd3TDEvIh4Y/S_hdQZpAfkI/AAAAAAAACog/yYlJW8aLMAg/s1600-h/report_automotive22.jpg
5. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdR4ohaQI/AAAAAAAACoo/GnNM4Z_OFjQ/s1600-h/report_bad_progress2.jpg
6. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdSoMFfWI/AAAAAAAACow/d9wc629BMkA/s1600-h/report_automotive12.jpg
7. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdTaI6P4I/AAAAAAAACo4/wLdlY9BbiFg/s1600-h/report_bankAccount2.jpg
8. http://lh6.ggpht.com/_qd3TDEvIh4Y/S_hdUAIRFAI/AAAAAAAACpA/RcWY1pqo_vQ/s1600-h/report_bottomN2.jpg
9. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hdU9Bv_eI/AAAAAAAACpI/IKD2hq6v6Xw/s1600-h/report_bad_percentage2.
jpg
10. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hdVjDMu9I/AAAAAAAACpQ/lh4VSIPIvws/s1600-h/report_bankBalances2.jpg
11. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdWLAoQ_I/AAAAAAAACpY/fhCYU8VEkis/s1600-h/report_call2.jpg
12. http://lh6.ggpht.com/_qd3TDEvIh4Y/S_hdW8LOQRI/AAAAAAAACpg/33sRaLA8hes/s1600-h/report_bad_value2.jpg
13. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hdX4vXvbI/AAAAAAAACpo/4NPRq1Ae7os/s1600-h/report_callcenter2.jpg
14. http:
//lh6.ggpht.com/_qd3TDEvIh4Y/S_hdYezwv8I/AAAAAAAACpw/eXEt8rz1EHM/s1600-h/report_cautionary_progress2.jpg
15. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hdZOB2EtI/AAAAAAAACp4/9ZacQuGf50E/s1600-h/report_cautionary_
percentage2.jpg
16. http:
//lh3.ggpht.com/_qd3TDEvIh4Y/S_hdZ9LjhYI/AAAAAAAACqA/EknTzALrbNQ/s1600-h/report_cautionary_value2.jpg
17. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdalghyQI/AAAAAAAACqI/uhLSbN60rVU/s1600-h/report_comm22.jpg
18. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdbFonjQI/AAAAAAAACqQ/LiCB5v-f1Tc/s1600-h/report_comm12.jpg
19. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdcifhyzI/AAAAAAAACqY/Bfdgo0IUWcA/s1600-h/report_cust_sat2.jpg
20. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hddcA2fzI/AAAAAAAACqg/MuTNpdcacd8/s1600-h/report_expiration2.jpg

434
21. http://lh6.ggpht.com/_qd3TDEvIh4Y/S_hdd4taYpI/AAAAAAAACqo/DIZqGkgy1gI/s1600-h/report_email2.jpg
22. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdeuSd94I/AAAAAAAACqw/VoFT-U3qzx4/s1600-h/report_forecasting2.jpg
23. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hdfz2LKZI/AAAAAAAACq4/zBgTLHTVUc4/s1600-h/report_geographical2.jpg
24. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdgdjiEDI/AAAAAAAACrA/OrxMJuPvbPY/s1600-h/report_good_progress2.
jpg
25. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdg3thL6I/AAAAAAAACrI/SMXWZiY1TRo/s1600-h/report_generic2.jpg
26. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdht_paFI/AAAAAAAACrQ/1aEU6I3C040/s1600-h/report_good_percentage2.
jpg
27. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdiXZuMsI/AAAAAAAACrY/UJzq7hDKUGM/s1600-h/report_household2.jpg
28. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdjDnckvI/AAAAAAAACrg/Ir-GvY8ZcjA/s1600-h/report_good_value2.jpg
29. http:
//lh3.ggpht.com/_qd3TDEvIh4Y/S_hdjhyE3kI/AAAAAAAACro/SDwkLf_idb4/s1600-h/report_insurance_Policy2.jpg
30. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdkcC2CMI/AAAAAAAACrw/GozwDK6kSWc/s1600-h/report_insuranceClaim2.
jpg
31. http://lh6.ggpht.com/_qd3TDEvIh4Y/S_hdk8wa8uI/AAAAAAAACr4/MbgOX5mfE8s/s1600-h/report_investigative2.
jpg
32. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hdljDAYnI/AAAAAAAACsA/4Cq37cY7cPU/s1600-h/report_invoices2.jpg
33. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdmJiHBBI/AAAAAAAACsI/9WezFV2UbjQ/s1600-h/report_location2.jpg
34. http://lh6.ggpht.com/_qd3TDEvIh4Y/S_hdmyWmI1I/AAAAAAAACsQ/7k0G0Yh456o/s1600-h/report_medicalResearch2.
jpg
35. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdnfT3dTI/AAAAAAAACsY/ZDHy8lfhbmc/s1600-h/report_mktShare2.jpg
36. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hdoPC-VbI/AAAAAAAACsg/k_b4tqb362c/s1600-h/report_order2.jpg
37. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdozfcS-I/AAAAAAAACso/osZGGMXAMpQ/s1600-h/report_phone2.jpg
38. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hdpcIBxpI/AAAAAAAACsw/sOOU1TLK3GY/s1600-h/report_pillcount2.jpg
39. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdp1AgmWI/AAAAAAAACs4/rpeGcMksnPk/s1600-h/report_pipeline2.jpg
40. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdqoRe3JI/AAAAAAAACtA/Ztxb3I67h1Y/s1600-h/report_reportsCatalog2.
jpg
41. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdrc3u5yI/AAAAAAAACtI/i1RW3RoW9e8/s1600-h/report_retailAudit2.jpg
42. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hdr2zvfmI/AAAAAAAACtQ/n6fogycaOUo/s1600-h/report_salesrep2.jpg
43. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hdsjSg9fI/AAAAAAAACtY/B91tbuyhsL8/s1600-h/report_salesVolume2.jpg
44. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdtpuZeTI/AAAAAAAACtg/IIplQNjp5aQ/s1600-h/report_service_
profitibility2.jpg
45. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hdufoV1eI/AAAAAAAACto/4TUe_H-CdTM/s1600-h/report_scorecard2.jpg
46. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdvOuI8PI/AAAAAAAACtw/ZgVZwCCE5cw/s1600-h/report_serviceRequest2.
jpg
47. http://lh6.ggpht.com/_qd3TDEvIh4Y/S_hdvjVP7aI/AAAAAAAACt4/5w4JIIrkxvs/s1600-h/report_targetActual2.jpg
48. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdwdRrhBI/AAAAAAAACuA/V7_4vuhTQnY/s1600-h/report_topN2.jpg
49. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdxeD_PRI/AAAAAAAACuI/DGpANAQib90/s1600-h/report_tradepromo2.jpg
50. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdx_Z4Q7I/AAAAAAAACuQ/5yI0MWXtBQM/s1600-h/report_tradefund2.jpg
51. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdygaKGII/AAAAAAAACuY/UI7SqLJZ5Qk/s1600-h/report_universal_queue2.
jpg
52. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdza3z_CI/AAAAAAAACug/q2o4HF0MLdQ/s1600-h/report_trends2.jpg
53. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hd0MwkSYI/AAAAAAAACuo/isCa2p1LLws/s1600-h/report_win_lossDeals2.
jpg
54. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hd0kLYqsI/AAAAAAAACuw/lbQNPAJRxN4/s1600-h/report_medicalResearch5.
jpg
55. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hd1blJCtI/AAAAAAAACu4/ALdMW1O6mlI/s1600-h/actuateroilarge%5B2%5D.
gif
56. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hd2EiwrhI/AAAAAAAACvA/KhX9b-hPJNI/s1600-h/actuateroxlarge%5B2%5D.
gif
57. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hd2tC6j2I/AAAAAAAACvI/MLiG44zRPy0/s1600-h/add2bb%5B2%5D.gif
58. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hd3VY9jPI/AAAAAAAACvQ/8t5Xp96y_hs/s1600-h/add2bb%5B5%5D.gif
59. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hd32dLc-I/AAAAAAAACvY/OruWosFi7sk/s1600-h/bgviewbarsep%5B2%5D.gif

435
60. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hd4hLkqjI/AAAAAAAACvg/1swYXiXHD8g/s1600-h/blank%5B2%5D.gif
61. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hd5dPzKWI/AAAAAAAACvo/6L2wpR67PwU/s1600-h/btn_max%5B2%5D.gif
62. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hd536rKRI/AAAAAAAACvw/H2XUtVZXJQo/s1600-h/btn_min%5B2%5D.gif
63. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hd6g6tZGI/AAAAAAAACv4/EFWSB-IrOg4/s1600-h/dash_refresh%5B2%5D.gif
64. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hd7Nt2xOI/AAAAAAAACwA/nIeR1wprjxc/s1600-h/dashboardwarning%5B2%5D.
gif
65. http://lh6.ggpht.com/_qd3TDEvIh4Y/S_hd78g-vmI/AAAAAAAACwI/KH2FhsKIvqg/s1600-h/download%5B2%5D.gif
66. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hd8ihAhgI/AAAAAAAACwQ/2OBDS2l6Yyo/s1600-h/idashed_addcolumn%5B2%
5D.gif
67. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hd9PMaIDI/AAAAAAAACwY/V6L69D5AFxk/s1600-h/idashed_bb%5B2%5D.gif
68. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hd9oH-kvI/AAAAAAAACwg/iTCx7K3gnw4/s1600-h/hdgportals%5B2%5D.gif
69. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hd-Z_hweI/AAAAAAAACwo/VEq598qm0jA/s1600-h/europe_map_1color%5B3%
5D.jpg
70. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hd_A2og6I/AAAAAAAACww/JGlrvWibweM/s1600-h/europe_map_4color%5B3%
5D.jpg
71. http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hd_-Bw5JI/AAAAAAAACw4/n10Lg5VEito/s1600-h/usa_map_1color%5B3%5D.
jpg
72. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_heAuvMGaI/AAAAAAAACxA/0FPrxaGZwqU/s1600-h/usa_map_1color_noLabels%
5B3%5D.jpg
73. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_heBZJzsXI/AAAAAAAACxI/3o_rcM1dFm0/s1600-h/usa_map_4color_noLabels%
5B3%5D.jpg
74. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_heCJ6g-KI/AAAAAAAACxQ/OBI4hZuZVs0/s1600-h/world_map_1color%5B3%5D.
jpg
75. http://lh6.ggpht.com/_qd3TDEvIh4Y/S_heC126MII/AAAAAAAACxY/e5S8bVliORg/s1600-h/world_map_4color%5B3%5D.
jpg

OBIEE remove the whole portalbanner (2010-07-16 11:23)

Or how how to remove this in one go:

[1]
Add a textbox to your dashboard:

[2]
Add the following code:
[code]
<script type=”text/javascript”>
var tds = document.getElementsByTagName(’table’);
for (var td = 0; td < tds.length; td++) {
if (tds[td].className != ’PortalBanner’ & & tds[td].className != ’PortalBottomTable’ ) {
continue;
}
if (tds[td].className == ’PortalBanner’) {
//alert (tds[td].className);
var x = tds[td].parentNode;
//alert (x.className);
x.removeChild(tds[td]); }
if (tds[td].className == ’PortalBottomTable’) {
//alert (tds[td].className);
436
var x = tds[td].parentNode;
//alert (x.className);
x.removeChild(tds[td]); }
}
</script>
[/code]

[3]
Till Next Time
1. http://lh3.ggpht.com/_qd3TDEvIh4Y/TC2wLWN8SHI/AAAAAAAAC34/-r_dF5VYHps/s1600-h/image%5B2%5D.png
2. http://lh3.ggpht.com/_qd3TDEvIh4Y/TC2wNe-onCI/AAAAAAAAC4A/lOT_cwwQalI/s1600-h/image%5B5%5D.png
3. http://lh6.ggpht.com/_qd3TDEvIh4Y/TC2wNxahpZI/AAAAAAAAC4I/oi3sBSuOpsM/s1600-h/image%5B8%5D.png

437
BlogBook v0.3,
LATEX 2ε & GNU/Linux.
http://www.blogbooker.com

Edited: July 9, 2010

You might also like