Vous êtes sur la page 1sur 439

From Blog to Book.

http://obiee101.blogspot.com/

Contents
1 2007 1.1 December . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . My First Blog (2007-12-05 07:19) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Dummy Column with NULL value (2007-12-05 10:03) . . . . . . . . . . . . . . . OBIEE EVALUATE function and presentation variables (2007-12-05 18:00) . . . . . . . OBIEE Measures and Events in one chart (2007-12-06 10:55) . . . . . . . . . . . . . . . OBIEE for MicroSoft Oce (2007-12-06 14:14) . . . . . . . . . . . . . . . . . . . . . . . OLAP 101 (2007-12-06 14:57) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Pivot table with carriage return (2007-12-07 09:06) . . . . . . . . . . . . . . . . OBIEE EVALUATE Function (2007-12-07 11:39) . . . . . . . . . . . . . . . . . . . . . . OBIEE EVALUATE AGGR Function (2007-12-07 12:02) . . . . . . . . . . . . . . . . . OBIEE referencing session variables in report title (2007-12-10 14:40) . . . . . . . . . . OBIEE empty presentation tables in a repository in a multi-user environment (2007-12-11 12:20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Excel and slashes (2007-12-11 17:45) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Default security groups for BI Publisher (2007-12-13 07:19) . . . . . . . . . . . . OBIEE Duration between events (2007-12-19 11:00) . . . . . . . . . . . . . . . . . . . . OBIEE Scale markers (2007-12-19 11:30) . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2008 2.1 January . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE using oracle stored procedure to ll report (2008-01-11 13:35) . . . . . . . . . . OBIEE IsNumeric (2008-01-16 07:54) . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Corda Popchart (2008-01-16 12:25) . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Corda Popchart Example (2008-01-16 14:34) . . . . . . . . . . . . . . . . . . . . OBIEE X,Y and data in mouse over label (2008-01-16 17:21) . . . . . . . . . . . . . . . OBIEE adding a customized graphtype (2008-01-17 13:32) . . . . . . . . . . . . . . . . . OBIEE Graphs Gradient Eect (2008-01-22 08:48) . . . . . . . . . . . . . . . . . . . . . OBIEE 10.1.3.3.2 availble on OTN (2008-01-24 10:03) . . . . . . . . . . . . . . . . . . . OBIEE Restricting data based on User Group (2008-01-24 10:54) . . . . . . . . . . . . . 15 15 15 15 15 15 18 18 19 20 21 22 22 24 24 24 26 29 29 29 30 31 31 32 33 34 35 35 3

OBIEE backing up repository (2008-01-29 07:29) . . . . . . . . . . . . . . . . . . . . . . (2008-01-30 07:34) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Calculate YearWeek and YearWeekAgo (2008-01-30 10:56) . . . . . . . . . . . . 2.2 February . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Usefull server scripts (2008-02-01 17:13) . . . . . . . . . . . . . . . . . . . . . .

35 36 36 37 37 38 40 42 43 43 44 46 46 46 47 49 49 52 52 53 56 56 58 59 60 60 60 60 63 64 65 65 69 70 72 73 75

OBIEE development street (2008-02-02 20:06) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Adding session variables to the report title / using a narrative view (2008-02-06 20:30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Using ORACLE stored procedures part 2 (2008-02-07 17:34) . . . . . . . . . . . OBIEE Using ORACLE stored procedures part 3 (2008-02-11 17:12) . . . . . . . . . . . OBIEE Aggregate BY (2008-02-18 20:23) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Controling Pivot View behavior (2008-02-23 12:09) . . . . . . . . . . . . . . . . OBIEE Optimizing NQQuery.log for debugging (2008-02-29 19:29) . . . . . . . . . . . . 2.3 March . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE No Thousand separator (2008-03-04 14:33) . . . . . . . . . . . . . . . . . . . . . OBIEE Continues Time Line (2008-03-09 15:43) . . . . . . . . . . . . . . . . . . . . . . OBIEE Downgrading Repository (2008-03-09 16:37) . . . . . . . . . . . . . . . . . . . . OBIEE Manage the cache part 1 (2008-03-13 22:16) . . . . . . . . . . . . . . . . . . . . OBIEE Manage the cache part 2 (2008-03-16 09:35) . . . . . . . . . . . . . . . . . . . . OBIEE Yes No Prompt (2008-03-28 10:50) . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Repository Version Control (2008-03-31 20:39) . . . . . . . . . . . . . . . . . . . 2.4 April . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Combined with Similar Request and lterview (2008-04-05 13:44) . . . . . . . OBIEE View Selector, forcing a selection. (2008-04-05 14:52) . . . . . . . . . . . . . . . OBIEE 10.1.3.3.3 (2008-04-21 16:53) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 May . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE 10.1.3.3.3 its out (2008-05-10 16:18) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE 10.1.3.3.3 documentation (2008-05-10 16:32) . . . . . . . . . . . . . . . . . . . . OBIEE making a column selector in a prompt (2008-05-18 19:47) . . . . . . . . . . . . . OBIEE Changing the line color in a scatter graph with line (2008-05-23 09:35) . . . . . OBIEE Pivot table Measure label (2008-05-29 20:04) . . . . . . . . . . . . . . . . . . . . 2.6 June . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Flexible Dashboards (2008-06-07 11:45) . . . . . . . . . . . . . . . . . . . . . . . OBIEE Directing a user to a default dashboard (2008-06-07 22:12) . . . . . . . . . . . . OBIEE Private output type for a chart (2008-06-10 19:49) . . . . . . . . . . . . . . . . OBIEE Excel Import, prepping the data (2008-06-15 17:04) . . . . . . . . . . . . . . . . OBIEE Blocking request based on Criteria (2008-06-19 20:49) . . . . . . . . . . . . . . . OBIEE Follow the sun / Time driven connection (2008-06-29 11:18) . . . . . . . . . . . 4

2.7

July . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE naming conventions repository (2008-07-07 19:00) . . . . . . . . . . . . . . . . . OBIEE Public Reports and Dashboards - Bypassing authentication (2008-07-07 19:08) . OBIEE Preventing Auto-Previewing of Results in Answers (2008-07-08 19:25) . . . . . . OBIEE Changing XLS (Excel) data on the y (2008-07-09 17:08) . . . . . . . . . . . . . OBIEE Plus Workshop Munchen Day 1 (2008-07-15 11:09) . . . . . . . . . . . . . . . . OBIEE Plus Workshop Munchen Day 2 (2008-07-16 10:00) . . . . . . . . . . . . . . . . OBIEE Plus Workshop Munchen Day 3 (2008-07-17 09:07) . . . . . . . . . . . . . . . . OBIEE managing the cache: Emptying/Purging the cache Part 2 (2008-07-19 10:42) . . OBIEE number of gauges on canvas (2008-07-21 18:04) . . . . . . . . . . . . . . . . . . OBIEE running it on an other web port (2008-07-23 11:28) . . . . . . . . . . . . . . . . OBIEE running it as a HTTPS / SSL service (2008-07-23 16:26) . . . . . . . . . . . . . OBIEE Migration discover to OBIEE (2008-07-24 17:26) . . . . . . . . . . . . . . . . . . OBIEE dropdown prompt (2008-07-24 20:00) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Number of values in the multiselect prompt (2008-07-25 20:00) . . . . . . . . . . OBIEE Number of default values in a multiselect prompt (2008-07-26 20:00) . . . . . . OBIEE cache management. (2008-07-27 22:44) . . . . . . . . . . . . . . . . . . . . . . . OBIEE Protect Filter (2008-07-28 20:58) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE .Net using the webservice (2008-07-29 21:34) . . . . . . . . . . . . . . . . . . . . OBIEE SAWSessionService (2008-07-30 20:00) . . . . . . . . . . . . . . . . . . . . . . . OBIEE SAWSessionService Part 2 (2008-07-31 22:13) . . . . . . . . . . . . . . . . . . .

77 77 77 77 78 81 81 82 82 84 84 85 86 87 87 87 88 91 93 95 96 97 97 97 97 99 99 99 100 100 100 108 109 113 114 118 119 119 5

2.8

August . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE 10.3.4.0 is out (2008-08-07 09:52) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Continues Date Time Line redux (2008-08-08 08:42) . . . . . . . . . . . . . . . . OBIEE Date Time Scatter graph (2008-08-08 09:07) . . . . . . . . . . . . . . . . . . . . OBIEE customising your PCXML (2008-08-08 17:09) . . . . . . . . . . . . . . . . . . . OBIEE Migrating Oracle BI Discoverer to OBIEE (2008-08-08 22:48) . . . . . . . . . . OBIEE Bottom scale on the time line graph (2008-08-09 12:03) . . . . . . . . . . . . . . OBIEE making a clear button (2008-08-09 23:00) . . . . . . . . . . . . . . . . . . . . . . OBIEE 10.3.4.0 First impressions (2008-08-10 23:14) . . . . . . . . . . . . . . . . . . . . OBIEE Setting up usage tracking (2008-08-11 06:00) . . . . . . . . . . . . . . . . . . . . OBIEE 10.3.4.0 missing popchart service (2008-08-11 14:28) . . . . . . . . . . . . . . . . OBIEE Conguring Conguring the scheduler on Windows2003/Oracle (2008-08-12 15:11) OBIEE Dierence between two rows (2008-08-12 16:00) . . . . . . . . . . . . . . . . . . OBIEE Children of the level / Converting rows to strings (2008-08-13 09:36) . . . . . . OBIEE error saving security account (2008-08-13 15:14) . . . . . . . . . . . . . . . . . . OBIEE Conguration Tags (2008-08-14 21:14) . . . . . . . . . . . . . . . . . . . . . . . OBIEE Where is the ODBC Data Source Administrator? (2008-08-14 21:30) . . . . . .

OBIEE Stragg function on 10G.. (2008-08-16 23:35) . . . . . . . . . . . . . . . . . . . . OBIEE Hidding dashboard sections (2008-08-17 16:24) . . . . . . . . . . . . . . . . . . . OBIEE Identifying the server. (2008-08-18 21:02) . . . . . . . . . . . . . . . . . . . . . . OBIEE Back One Page (2008-08-20 20:12) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Conditional Hyperlink (2008-08-21 16:35) . . . . . . . . . . . . . . . . . . . . . . OBIEE Change the password (2008-08-21 23:23) . . . . . . . . . . . . . . . . . . . . . . OBIEE scripting user into the repository (2008-08-22 18:18) . . . . . . . . . . . . . . . . OBIEE Conditional X-axis graph (2008-08-27 17:19) . . . . . . . . . . . . . . . . . . . . OBIEE Forcing OC4J BI shutdown (2008-08-28 04:30) . . . . . . . . . . . . . . . . . . . 2.9 September . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting up a mailserver in a VMware (2008-09-01 21:23) . . . . . . . . . . . . . . . . . . OBIEE OpenOce (2008-09-01 22:06) . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE TimeLine graph Line settings (2008-09-03 20:23) . . . . . . . . . . . . . . . . . . OBIEE Setting up an Compagny custom Skin and Style (2008-09-08 21:30) . . . . . OBIEE setting the bottomscale in a DTA Graph (2008-09-09 22:00) . . . . . . . . . . . OBIEE PDF controls (.fst les) (2008-09-10 11:45) . . . . . . . . . . . . . . . . . . . . . OBIEE Null, Nul and Nullable (2008-09-10 17:43) . . . . . . . . . . . . . . . . . . . . . OBIEE collapse the whole dashboard with one button (2008-09-10 21:01) . . . . . . . . OBIEE setting default Graph series colors. (2008-09-12 20:13) . . . . . . . . . . . . . . OBIEE Custom CSS Style / Class (2008-09-13 10:31) . . . . . . . . . . . . . . . . . . . OBIEE Title View (2008-09-13 12:02) . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Setting a picture as graph backgound (2008-09-17 17:03) . . . . . . . . . . . . . OBIEE CHOOSE statement (2008-09-19 17:30) . . . . . . . . . . . . . . . . . . . . . . . OBIEE Google chrome (2008-09-21 21:02) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE setting up customMessages folders (2008-09-23 18:47) . . . . . . . . . . . . . . . OBIEE Timestamp (2008-09-24 09:59) . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE making a custom Log On and Log O screen (2008-09-24 17:45) . . . . . . . . . OBIEE Portal customization part 1 the portalbanner (2008-09-28 19:28) . . . . . . . . 2.10 October . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE the developersprompt (2008-10-01 17:26) . . . . . . . . . . . . . . . . . . . . . OBIEE Multiple Java Versions (2008-10-03 18:44) . . . . . . . . . . . . . . . . . . . . . OBIEE ReportAggregateEnabled (2008-10-04 18:41) . . . . . . . . . . . . . . . . . . . . OBIEE update tutorials (2008-10-07 18:56) . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Show Thousands Separator in Chart (2008-10-07 19:02) . . . . . . . . . . . . . . OBIEE Portal customization part 2 the portalcontent (2008-10-08 20:09) . . . . . . . OBIEE Skin and Style Naming (2008-10-09 18:13) . . . . . . . . . . . . . . . . . . . . . OBIEE using the webservices (2008-10-10 16:24) . . . . . . . . . . . . . . . . . . . . . . OBIEE replacing siebelbug.gif (Powered by Oracle) (2008-10-10 17:31) . . . . . . . . . . 6

121 121 122 124 125 126 127 129 130 130 130 133 135 135 136 137 137 138 139 140 141 141 143 145 145 146 146 149 151 151 151 152 152 152 153 154 154 155

OBIEE See me live at Rittman Mead (2008-10-20 09:07) . . . . . . . . . . . . . . . . . . OBIEE using the webservices part 2 (2008-10-20 16:59) . . . . . . . . . . . . . . . . . . OBIEE Ritmann Mead BI Training Days Day 1 (2008-10-22 23:30) . . . . . . . . . . . . OBIEE Ritmann Mead BI Training Days Day 2 (2008-10-23 23:55) . . . . . . . . . . . . OBIEE Ritmann Mead BI Training Days Day 3 (2008-10-24 23:46) . . . . . . . . . . . . OBIEE using google maps (Q&D style) (2008-10-25 23:15) . . . . . . . . . . . . . . . .

155 155 156 156 156 156 158 158 159 159 161 165 165 165 172 172 173 173 174 176 176 179 182 189 191 200 201 203 207 207 209 209 209 209 210 212 212 7

OBIEE No language dropdown on loginscreen (2008-10-27 02:59) . . . . . . . . . . . . . OBIEE Clearing the log (2008-10-29 19:12) . . . . . . . . . . . . . . . . . . . . . . . . . 2.11 November . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Huge dimensions? Let s split them! (2008-11-03 23:24) . . . . . . . . . . . . . . OBIEE making it aggregate aware (2008-11-06 20:48) . . . . . . . . . . . . . . . . . . OBIEE nQSError (2008-11-08 19:53) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Stop the beep (2008-11-08 20:05) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Aggregate Persistence Wizard (2008-11-09 12:37) . . . . . . . . . . . . . . . . . OBIEE Creating indexes Q&D Style (2008-11-09 14:30) . . . . . . . . . . . . . . . . . . OBIEE OBI - Forum Live (2008-11-10 12:45) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Default colour Title border (2008-11-12 10:28) . . . . . . . . . . . . . . . . . . . OBIEE Presentation Services Cache Settings (2008-11-12 16:52) . . . . . . . . . . . . . OBIEE Outerjoin workaround? (2008-11-12 21:36) . . . . . . . . . . . . . . . . . . . . . OBIEE How To Replace Multiple Go Button By One Go Button In Prompts (2008-11-14 17:58) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Understanding Outerjoins Part 1 (2008-11-15 22:46) . . . . . . . . . . . . . . . . OBIEE Understanding Outerjoins Part 2 (2008-11-20 20:56) . . . . . . . . . . . . . . . . OBIEE Federated Querys / Fragmented Querys (2008-11-21 23:33) . . . . . . . . . . . OBIEE Excel count distinct error (2008-11-22 11:21) . . . . . . . . . . . . . . . . . . . . OBIEE Presentation server on IIS (2008-11-24 02:04) . . . . . . . . . . . . . . . . . . .

OBIEE Lets Get Professional (2008-11-27 03:27) . . . . . . . . . . . . . . . . . . . . . . OBIEE Sort Order Column property (2008-11-28 02:06) . . . . . . . . . . . . . . . . . . OBIEE AGO and TODATE Series (2008-11-29 02:34) . . . . . . . . . . . . . . . . . . . 2.12 December . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Handling SCF data / PIT Reporting (2008-12-03 23:35) . . . . . . . . . . . . . OBIEE101 First Birthday (2008-12-04 00:00) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE 1K Status (2008-12-04 08:10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE BI-Publisher Templates (2008-12-04 20:24) . . . . . . . . . . . . . . . . . . . . . OBIEE Missing BI-Oce add - in (2008-12-05 21:08) . . . . . . . . . . . . . . . . . . . . OBIEE using timeline graphs in pivot views (2008-12-06 22:39) . . . . . . . . . . . . . . OBIEE BI Publisher Login Errors (2008-12-06 22:45) . . . . . . . . . . . . . . . . . . .

OBIEE Breadcrum trail (2008-12-07 20:07) . . . . . . . . . . . . . . . . . . . . . . . . .

OBIEE Hidding a section (2008-12-08 13:40) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE First / Last of month (2008-12-08 20:25) . . . . . . . . . . . . . . . . . . . . . . OBIEE First / Last day previous week (2008-12-09 02:04) . . . . . . . . . . . . . . . . . OBI Forum Live Vergeet je niet in te schrijven (2008-12-09 09:05) . . . . . . . . . . . . OBIEE bypassing the presentation / web cache (2008-12-09 17:54) . . . . . . . . . . . . OBIEE LOV prompts (2008-12-11 20:16) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE MetaData Dictionary (2008-12-12 23:59) . . . . . . . . . . . . . . . . . . . . . . OBIEE Automating the Metadata dictionary repository updates (2008-12-17 21:12) . . OBIEE Google Chrome redux (2008-12-19 12:47) . . . . . . . . . . . . . . . . . . . . . . OBIEE Creating Bookmark and or Prompted URL (2008-12-21 15:11) . . . . . . . . . . OBIEE Keep a clean desk (2008-12-24 14:58) . . . . . . . . . . . . . . . . . . . . . . . . BI Consultant van 2008 (2008-12-29 22:54) . . . . . . . . . . . . . . . . . . . . . . . . . 3 2009 3.1 January . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Have a great Year! (2009-01-01 00:00) . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Cache and VPD (2009-01-01 15:50) . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE and Wiki (2009-01-01 21:04) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBI Forum Live Vergeet je niet in te schrijven !LAATSTE KANS! (2009-01-05 09:18) . OBIEE Selecting SKIN and STYLE from URL (2009-01-07 19:02) . . . . . . . . . . . . OBIEE Sample Sales (2009-01-08 17:01) . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE creating large / huge PDF documents (2009-01-09 01:30) . . . . . . . . . . . . . OBIEE Leap Year Challenge (2009-01-11 22:21) . . . . . . . . . . . . . . . . . . . . . .

213 213 214 214 214 214 216 223 223 224 226 226 227 227 227 227 228 228 228 229 229 229 232 233 233 234 235 235 237 238 243 243 247 247 247 248 249

OBIEE Cache persistence (2009-01-13 21:54) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE PROJECT INACCESSIBLE COLUMN (2009-01-15 18:42) . . . . . . . . . . . . OBIEE Multiple connection pools (2009-01-18 19:33) . . . . . . . . . . . . . . . . . . . . BI Consultant van 2008 ronde 2 (2009-01-21 21:20) . . . . . . . . . . . . . . . . . . . . . OBIEE Impersonate a user (2009-01-21 23:49) . . . . . . . . . . . . . . . . . . . . . . . OBIEE rowbased calculations in a pivot table (2009-01-22 19:48) . . . . . . . . . . . . . OBIEE Brackets in the BMM (2009-01-26 20:35) . . . . . . . . . . . . . . . . . . . . . . OBIEE Creating a Yamazumi Graph (2009-01-27 20:39) . . . . . . . . . . . . . . . . . . OBIEE Autorefresh no prompts (2009-01-28 20:01) . . . . . . . . . . . . . . . . . . . . . OBIEE Column headings (2009-01-29 17:16) . . . . . . . . . . . . . . . . . . . . . . . . 3.2 February . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Ago and and error ORA-00942: table or view does not exist (2009-02-11 09:51) OBIEE Selling federated querys (2009-02-12 13:41) . . . . . . . . . . . . . . . . . . . OBIEE Switching between lters (2009-02-13 13:36) . . . . . . . . . . . . . . . . . . . . OBIEE Editing system wide defaults (2009-02-17 17:32) . . . . . . . . . . . . . . . . . . 8

OBIEE Making a distinct date prompt (2009-02-23 12:53) . . . . . . . . . . . . . . . . . OBIEE Reporting on dateranges (2009-02-23 15:31) . . . . . . . . . . . . . . . . . . . . OBIEE see you in Brigthon (2009-02-24 07:43) . . . . . . . . . . . . . . . . . . . . . . . OBIEE Executing your own JavaScript (2009-02-25 14:05) . . . . . . . . . . . . . . . . . OBIEE Conguring Case Insensitive Search (2009-02-26 20:15) . . . . . . . . . . . . . . OBIEE Default Portnumbers (2009-02-26 20:39) . . . . . . . . . . . . . . . . . . . . . . OBIEE Simulating Drill up (2009-02-27 11:44) . . . . . . . . . . . . . . . . . . . . . . . 3.3 March . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Between Dates Prompt (2009-03-02 11:11) . . . . . . . . . . . . . . . . . . . . . OBIEE Date, TimeStamp and ORACLE Indexes (2009-03-03 18:25) . . . . . . . . . . . OBIEE NQSSetSessionValue (2009-03-03 22:31) . . . . . . . . . . . . . . . . . . . . . . . OBIEE Custom Authenticators (2009-03-05 21:45) . . . . . . . . . . . . . . . . . . . . . BI Consultant 2008 (2009-03-06 10:58) . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE identifying the hierarchy level (2009-03-06 13:32) . . . . . . . . . . . . . . . . . Forum Autorefresh (2009-03-09 13:31) . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE date prompt to day month year (2009-03-10 08:26) . . . . . . . . . . . . . . . . OBIEE hidden column writeback (2009-03-10 11:31) . . . . . . . . . . . . . . . . . . . . OBIEE Google Maps Multiple Addresses (2009-03-17 08:50) . . . . . . . . . . . . . . . . OBIEE Referencing Presentation Variables in Filters (2009-03-17 13:19) . . . . . . . . . 3.4 April . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Dynamic prompt content (2009-04-01 17:01) . . . . . . . . . . . . . . . . . . . . OBIEE Between prompt using the calendar control (2009-04-01 19:33) . . . . . . . . . . OBIEE Image prompt (2009-04-01 20:54) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE 10.1.3.4.0 Get your patches (2009-04-02 22:05) . . . . . . . . . . . . . . . . . . . OBIEE OBI - Forum Live (2009-04-03 12:00) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Questions (2009-04-03 19:54) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Using SQL based scale makers (2009-04-07 09:27) . . . . . . . . . . . . . . . . . OBIEE Multi lingual prompt (2009-04-15 19:42) . . . . . . . . . . . . . . . . . . . . . . OBIEE Showing zeros in a bargraph (2009-04-17 09:21) . . . . . . . . . . . . . . . . . . OBIEE Get the FireBug! (2009-04-17 12:12) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Prompts putting the label in front (2009-04-17 22:13) . . . . . . . . . . . . . . . OBIEE Prompts putting the label in front part 2 (2009-04-18 08:59) . . . . . . . . . . . OBIEE The nal skills, Creating great dashboards. (2009-04-19 19:48) . . . . . . . . . . OBIEE Dashboard Design 001 (2009-04-19 20:36) . . . . . . . . . . . . . . . . . . . . . . OBIEE 10.3.4.1 is out! (2009-04-25 08:45) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE 10341 First Impressions (2009-04-25 10:16) . . . . . . . . . . . . . . . . . . . . . OBIEE Opaque data labels on charts (2009-04-25 12:53) . . . . . . . . . . . . . . . . . . OBIEE Answers Tab Headings (2009-04-26 11:01) . . . . . . . . . . . . . . . . . . . . .

251 253 255 255 256 257 259 260 260 261 262 263 264 265 269 269 270 270 273 274 274 275 276 277 278 278 278 281 282 284 284 285 286 286 291 291 292 293 9

OBIEE not all change is good change (2009-04-26 11:42) . . . . . . . . . . . . . . . . . . OBIEE OLAP on 11G (2009-04-30 21:50) . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 May . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Enable users to change password (2009-05-04 16:00) . . . . . . . . . . . . . . . . OBIEE Bubble chart (2009-05-05 14:11) . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Greenbar Customization (2009-05-05 20:04) . . . . . . . . . . . . . . . . . . . (2009-05-05 21:14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Brighton 2009 (2009-05-16 19:03) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Cache File Name revealed (2009-05-19 12:52) . . . . . . . . . . . . . . . . . . . . OBI Forum live de tweede editie (2009-05-25 14:18) . . . . . . . . . . . . . . . . . . . . OBIEE views.css color cheat sheet (2009-05-26 02:50) . . . . . . . . . . . . . . . . . . . OBIEE Background colour prompt (2009-05-28 09:56) . . . . . . . . . . . . . . . . . . . 3.6 June . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Essbase install (2009-06-06 21:36) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE get Internet Explorer Developer Toolbar (2009-06-11 11:30) . . . . . . . . . . . OBIEE New portal banner (2009-06-11 19:44) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Leading zeros calendar prompt (2009-06-12 15:33) . . . . . . . . . . . . . . . . . OBIEE Availible images (2009-06-15 22:03) . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Get all users from RPD (2009-06-16 21:43) . . . . . . . . . . . . . . . . . . . . . OBIEE Remote Admintool login problems (2009-06-19 22:56) . . . . . . . . . . . . . . . OBIEE Get all users and roles from RPD (2009-06-22 19:49) . . . . . . . . . . . . . . . OBIEE Remember my ID and password (2009-06-23 19:19) . . . . . . . . . . . . . . . . OBIEE backslash in dashboard page name (2009-06-23 20:37) . . . . . . . . . . . . . . . OBIEE Online Photoshop (2009-06-28 08:19) . . . . . . . . . . . . . . . . . . . . . . . . 3.7 July . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Dashboard Default Controls (2009-07-07 18:20) . . . . . . . . . . . . . . . . . . OBIEE Cool CSS trick (2009-07-08 17:57) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Adding custom image in Conditional Column Format (2009-07-08 18:59) . . . . OBIEE perfmon (Performance Monitor) (2009-07-09 20:23) . . . . . . . . . . . . . . . . OBIEE made it to Expert on OTN (2009-07-10 09:35) . . . . . . . . . . . . . . . . . . . OBIEE Nifty New Blog (2009-07-10 09:47) . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Hide the page options button (2009-07-10 11:03) . . . . . . . . . . . . . . . . . . OBIEE New Sample Sales Analysis v 1.3 (2009-07-11 21:46) . . . . . . . . . . . . . . . . OBIEE DiagCap.vbs (2009-07-12 15:19) . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Enable508 (2009-07-13 21:17) . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE OTN is Down / was Down (2009-07-16 10:32) . . . . . . . . . . . . . . . . . . . OBIEE If you had a 1000 wishes&. (2009-07-17 21:35) . . . . . . . . . . . . . . . . . .

294 294 295 295 295 297 299 299 301 302 302 303 304 304 304 304 305 305 306 307 308 310 310 311 311 311 311 311 313 313 314 314 315 315 315 316 316 317

OBIEE get the previous row (2009-07-22 17:54) . . . . . . . . . . . . . . . . . . . . . . . 10

OBIEE Hide the saved lter view link (2009-07-22 19:14) . . . . . . . . . . . . . . . . . OBIEE my rst server (2009-07-23 19:39) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE How to get started (2009-07-25 22:16) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Google Maps an alternative ending (2009-07-26 15:58) . . . . . . . . . . . . . . OBIEE Moving period to date aggregations (2009-07-27 20:14) . . . . . . . . . . . . . . 3.8 August . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE UDML and Notepad (2009-08-02 12:13) . . . . . . . . . . . . . . . . . . . . . . . OBIEE www obiforums com (nice idea) (2009-08-03 19:41) . . . . . . . . . . . . . . . . OBIEE TopN versus the rest (2009-08-06 17:35) . . . . . . . . . . . . . . . . . . . . . . OBIEE Prompts setting a default value to force a selection (2009-08-15 15:57) . . . . OBIEE Google Maps linebreak in annotations (2009-08-15 19:33) . . . . . . . . . . . . . OBIEE Prompt based on groupmembership (2009-08-17 19:05) . . . . . . . . . . . . . . OBIEE Cong Tags (2009-08-19 20:45) . . . . . . . . . . . . . . . . . . . . . . . . . . .

317 318 318 321 321 322 322 323 324 326 327 328 329 330 332 332 333 334 336 336 337 338 339 340 341 341 341 342 342 342 343 345

OBIEE Bing Maps (2009-08-21 22:11) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9 September . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Got the u (2009-09-13 16:05) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

OBIEE Patches 10341 (2009-09-18 21:06) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE ODBC Client (2009-09-19 00:43) . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE a blog lost&. (2009-09-20 09:06) . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE LDAP Problems? Try this! (repost) (2009-09-22 00:20) . . . . . . . . . . . . . . OBIEE Tooltip Text in Column Heading (2009-09-22 15:33) . . . . . . . . . . . . . . . . OBIEE Grand Totals with Calculated Columns (repost) (2009-09-24 00:21) . . . . . . . OBIEE Using the Top N Filter (repost) (2009-09-26 00:22) . . . . . . . . . . . . . . . . OBIEE When the Top N Filter fails& (repost) (2009-09-28 00:25) . . . . . . . . . . . . OBIEE Open a Linux-Hosted OBIEE Repository in Online Mode (repost)
(2009-09-30 00:26) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.10 October . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Multiple repository s / Multiple presentation servers (2009-10-02 21:51) . . . . . a generic calendar dimension (2009-10-29 20:09) . . . . . . . . . . . . . . . . . . . . . .

3.11 December . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Making an OR lter (2009-12-17 09:46) . . . . . . . . . . . . . . . . . . . . . . . OBIEE Top N Months across (2009-12-17 10:25) . . . . . . . . . . . . . . . . . . . . . . 4 2010 4.1 January . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE a new year (2010-01-02 20:13) . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE PATCHES 10.1.3.4.1 part 2 (2010-01-03 20:51) . . . . . . . . . . . . . . . . . . . OBIEE Navigating from report to report (2010-01-05 19:56) . . . . . . . . . . . . . . . . OBIEE Aggregate BY part 2 (2010-01-08 21:18) . . . . . . . . . . . . . . . . . . . . . .

345 345 345 347 348 11

OBIEE ResultRowLimit (2010-01-13 18:52) . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Google Charts part 1 (2010-01-16 21:19) . . . . . . . . . . . . . . . . . . . . . . OBIEE Google Charts part 2 (2010-01-19 20:28) . . . . . . . . . . . . . . . . . . . . . . OBIEE Oracle support (2010-01-20 19:32) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Horizontal Pivot Sections (2010-01-22 21:03) . . . . . . . . . . . . . . . . . . . . OBIEE Google Charts part 3 QR Codes (2010-01-25 16:08) . . . . . . . . . . . . . . . . OBIEE Party 2000 page views (2010-01-27 20:26) . . . . . . . . . . . . . . . . . . . . . . OBIEE Performance tuning (2010-01-28 18:35) . . . . . . . . . . . . . . . . . . . . . . . OBIEE Horizontal Pivot Sections Part 2 (2010-01-30 00:00) . . . . . . . . . . . . . . . . OBIEE Reset OC4J Admin password (2010-01-31 19:16) . . . . . . . . . . . . . . . . . . 4.2 February . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Report Name Length (2010-02-03 20:16) . . . . . . . . . . . . . . . . . . . . . . OBIEE PATCHES 10.1.3.4.1 part 3 (2010-02-06 17:44) . . . . . . . . . . . . . . . . . . . OBIEE Pivot Conditional Format Grand Total Part 2 (2010-02-06 20:40) . . . . . . . . OBIEE Grabbing the logical SQL (2010-02-09 20:26) . . . . . . . . . . . . . . . . . . . . OBIEE Changing unchangeable cells (2010-02-12 20:00) . . . . . . . . . . . . . . . . . . OBIEE Chancing CSS style on the y (2010-02-15 20:22) . . . . . . . . . . . . . . . . . OBIEE JavaScript and comments (2010-02-18 18:57) . . . . . . . . . . . . . . . . . . . . OBIEE ATR les (reports). (2010-02-21 20:39) . . . . . . . . . . . . . . . . . . . . . . . OBIEE Popup box (2010-02-24 20:09) . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Presentation Server Always Refresh (2010-02-27 20:42) . . . . . . . . . . . . . . 4.3 March . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Quirky Report Name (2010-03-02 19:47) . . . . . . . . . . . . . . . . . . . . . . OBIEE Report XML Structure Part 1 (2010-03-05 21:05) . . . . . . . . . . . . . . . . . OBIEE conditional format using arrows (2010-03-07 21:03) . . . . . . . . . . . . . . . . OBIEE Report XML Structure Part 2 (2010-03-08 20:27) . . . . . . . . . . . . . . . . . OBIEE Report XML Structure Part 3 (2010-03-11 20:48) . . . . . . . . . . . . . . . . . OBIEE Start reading on graphs! (2010-03-16 20:58) . . . . . . . . . . . . . . . . . . . . OBIEE rtfm.ini cong le (2010-03-22 16:49) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE PATCHES 10.1.3.4.1 part 4 (2010-03-26 23:27) . . . . . . . . . . . . . . . . . . . 4.4 April . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE 11G still waiting&& (2010-04-19 21:49) . . . . . . . . . . . . . . . . . . . . . . 4.5 May . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE using display folders (2010-05-05 10:50) . . . . . . . . . . . . . . . . . . . . . . . OBIEE multi-line tabs (2010-05-06 14:26) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Naming Conventions Physical Layer (2010-05-07 10:55) . . . . . . . . . . . . .

349 350 352 353 353 355 356 357 359 361 362 362 363 364 367 370 372 374 375 377 378 379 379 379 380 382 383 384 385 385 385 385 386 386 386 388 390 391

OBIEE New Google charts (2010-05-08 21:27) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Naming Conventions 12 Business Model Layer (2010-05-09 11:02) . . . . . . . . .

OBIEE See me speak (2010-05-11 11:40) . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Remove Default button from one dashboard only (2010-05-11 18:51) OBIEE Naming Conventions . . . . . .

393 393 394 395 396 397 398 398 401 406 408 412 413 413 414 414 414 414 415 415 416 416 419 421 422 423 427 428 428 428 430 430 430 431 431 432 433 433 436 13

Presentation Layer (2010-05-11 20:06) . . . . . . . . . .

OBIEE Remove PDF print option for one dashboard only (2010-05-11 21:13) . . . . . . OBIEE Open letter to Oracle (2010-05-14 11:51) . . . . . . . . . . . . . . . . . . . . . . OBIEE Remove line below guided navigation link (2010-05-15 19:02) . . . . . . . . . . . My Scrapbook (2010-05-16 12:17) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Events Calendar (2010-05-17 20:07) . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Conditional format based on other column in charts (2010-05-18 09:39) . . . . . OBIEE Playing With TopN Part 1 (2010-05-20 21:13) . . . . . . . . . . . . . . . . . . . OBIEE Playing With TopN Part 2 (2010-05-21 21:41) . . . . . . . . . . . . . . . . . . . OBIEE Brighton 2010 (2010-05-22 17:50) . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Playing with TopN part 3 the Rank Function (2010-05-22 20:16) . . . . . . . . . OBIEE 11g The GA bet (2010-05-23 23:54) . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Like to bet? (2010-05-24 22:18) . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE TimeStamp Calculations: (2010-05-25 18:00) . . . . . . . . . . . . . . . . . . . . 4.6 June . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE 11g Launch (2010-06-06 12:59) . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Guide user to help text (2010-06-14 12:36) . . . . . . . . . . . . . . . . . . . . . OBIEE PATCHES 10.1.3.4.1 part 5 (2010-06-17 08:32) . . . . . . . . . . . . . . . . . . . OBIEE11G Visualisations (2010-06-18 10:21) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Multie line tabs part 2 (2010-06-23 14:40) . . . . . . . . . . . . . . . . . . . . . OBIEE Which report uses which column (2010-06-24 18:50) . . . . . . . . . . . . . . . . OBIEE you don t want to see this&.. (2010-06-25 08:48) . . . . . . . . . . . . . . . . . OBIEE Google map redux (2010-06-26 18:03) . . . . . . . . . . . . . . . . . . . . . . . . OBIEE dynamic pivot calculations (2010-06-28 10:18) . . . . . . . . . . . . . . . . . . . OBIEE Adding Image to Column Header (2010-06-30 08:42) . . . . . . . . . . . . . . . 4.7 July . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Which connection pool user NOT to use (2010-07-02 10:52) . . . . . . . . . . . OBIEE 10G the Farewell Competition (2010-07-04 11:12) . . . . . . . . . . . . . . . . . OBIEE dynamic columns in the by statement (2010-07-04 14:34) . . . . . . . . . . . . . OBIEE 10G The Farewell Competition! (2010-07-05 11:49) . . . . . . . . . . . . . . . . OBIEE Administration Tool Options Part 1 (2010-07-06 08:13) . . . . . . . . . . . . . . OBIEE11g Launch day! (2010-07-07 16:59) . . . . . . . . . . . . . . . . . . . . . . . . . OBIEE Administration Tool Options Part 2 (2010-07-08 08:22) . . . . . . . . . . . . . . OBIEE Administration Tool Options Part 3 (2010-07-10 08:27) . . . . . . . . . . . . . . OBIEE Administration Tool Options Part 4 (2010-07-12 08:33) . . . . . . . . . . . . . . OBIEE Images Cheat Sheet (2010-07-14 00:43) . . . . . . . . . . . . . . . . . . . . . . . OBIEE remove the whole portalbanner (2010-07-16 11:23) . . . . . . . . . . . . . . . . .

14

Chapter 1

2007
1.1 December

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


Wow, Even I had to go with the ow and create my own blog. Let me introduce myself... My name is John Minkjan and Im 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) querys 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 dened 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 ll the presentation values the report comes back with: [nQSError: 27005] Unresolved column: X56GH. (HY000) The reason for this error is that ist 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 },@ {PTESTCODE } {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 inuence 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] Combo Graph 16

Then I put this into a Line Bar

[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 Oce (2007-12-06 14:14)


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

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

[2]
1. 2. http: http://bp1.blogger.com/_3AP-vNabdk4/R1f4-j2SHCI/AAAAAAAAABQ/eA_TvHp72hE/s1600-h/OBIEE_MS_OFFICE_ //bp1.blogger.com/_3AP-vNabdk4/R1f3Ij2SHBI/AAAAAAAAABI/eutaEe5giHE/s1600-h/OBIEE_MS_OFFICE_CONNECTION.JPG 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

determined

the

ColomnNumber

and

RowNumber

for

each

element.

[2]

19

[3] And nally put it in a pivot table:

[4] Dont forget to set the aggregate level for the measure to rst!
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 nd 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 cant concatenated values from a dierent 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 nd 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 coecient 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 denes 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 gering 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 doesnt 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. 5. http://bp0.blogger.com/_3AP-vNabdk4/R150dpPKGxI/AAAAAAAAACY/yzH2FTeVLZI/s1600-h/OBIEE_HideColumn_ http://bp1.blogger.com/_3AP-vNabdk4/R152-5PKG0I/AAAAAAAAACw/3oLAP4VfPok/s1600-h/OBIEE_HideColumn_ Permissions.JPG 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 (: 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 doesnt 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 its 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 o 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 rst 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 ll report (2008-01-11 13:35)


Oracle stored procedures by default dont 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 le 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 le 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 o. 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 couldnt nd it so I wrote two alternatives. If anybody has better suggestions feel free to report them! (the report builders didnt 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 DOUBLE 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 rst 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 nd the .PCXML les 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 BorderColor= #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 gure 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 le [FI:bubble2.pcxml] 3. Open the le 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 le [FI:bubble2.cxml] 6. open the le and edit in sawc:template => displayNameRef=kmsgChartCustomBubble 7. edit in sawc:seriesRules => displayNameRef=kmsgBubbleCustomSeries 8. edit in sawc:engineSpecic le=popbin/bubble2.pcxml 9. Save and close the le. 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 le 13. open charviewmessages.xml and add the name=kmsgChartCustomBubble><-TEXT>Bubble - Custom 14. Save and close the le 15. restart the Java-host and the prestationserver. entry <-WebMessage

note: replace <- with < Till Next Time

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

[1] The default graph type are rather plain a simple professional eect can be created by playing around with the gradient eect in the PCXML le: <-Chart Version=4.30.00 BorderType=None Width=491 Height=295 BGGradientColor= #cccc 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 : 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 o 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 le with the DATE/Time ECHO. ECHO SYNTAX STAMPME sh.rpd 35

ECHO. :: To change the lename format just change around the last line below GOTO :eof :s start SET le= % 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\ % le %- % 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)) cast(week(timestampadd(SQL TSI WEEK,-1,current date)) As char(2))),2)

right(0

trim(

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 le. 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 (dierent development, test, acceptance and production environment) you sometimes need to recongure 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 isnt 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 repository. 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 le 4 times as dbTst.txt, dbDev.txt, dbPrd.txt and dbAcc.txt. In each le we only changed the datasource to the apporated database. Next we created 4 .cmd les (conToTst.cmd, conToDev.cmd, conToPrd.cmd and conToAcc.cmd). Each le looks like this: :: conToTst.cmd :: recongure 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 nd 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 conned to only the predened ones:

From the OBIEE documentation: To show your own dened 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 dene connection scripts in 4 events:

Execute on connect -> Very usefull point for security logging events Execute before query -> Ideal to ll 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 dierent 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; Dont 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 arent 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

denition. dene multiple columns (Comma seperated):

If neccesary you can also

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 isnt always the most cost eective way, you might consider using the EVALUATE AGGR function 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 instancecong.xml. This le is usually found in ..\OracleBIData\web\con g Good info can be found in the Oracle Business Intelligence Presentation Services Administration Guide (b31766.pdf) If you open instancecong.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 cong 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 nd the information needed. By default the maximum size for the NQQuery.log is 10MB. This setting is found in the NQSCong.ini

under USER LOG FILE SIZE: If the log goes beyond this size OBIEE will rename it as NQQuery.log.old after it has nished 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 localedenitions.xml. You can nd this probably in \OracleBi\web\cong. 46

Restart the presentation sever.

WOW: (Word Of Warning) Do not use wordpad to edit this le 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 dont want to wait for OBIEE 11G you might want to try this alternative. Our table with fuel consumption entrys doesnt have an entry for each day after ltering:[1]

Due to this fact the graphical representation is wrong: 47

[2] port with a union query based on a calendar dimension:

One solution is to combine this re-

The executed query against 10G looks now like this:

[3] much better.

The graphical representation is no

48

[4] Be aware that a union query will inuence 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 its 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 inuence 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 le 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 le 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. le 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. le 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 its 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 xed date into dynamic dates. Put the following in a .txt le 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 TBLFUELCONSUMPTION.LICENSEPLATE, TBLFUELCONSUMPTION.MEASUREDATE, TBLFUELCONSUMPTION.FUELCONSUMPTION FROM Trucks WHERE TBLFUELCONSUMPTION.MEASUREDATE >= TIMESTAMPADD(SQL TSI YEAR, -2,NOW()); // Query 2 SELECT TBLFUELCONSUMPTION.LICENSEPLATE, TBLFUELCONSUMPTION.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 dont have a LOV (List of Values) table in your db dened 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 its 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 dierent version of the repository on dierent 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 lterview (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 lterview.

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

[3] This logically leads to Request contains no lters 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 wont use any resources. On this request put all your promptcolumns in the lter and set them on is promptedor use named

prompts { [5] } . Be sure to also incoperate your hard coded lters! Add the lterview 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 o your lter 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 rst 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 its 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 its out (2008-05-10 16:18)


OBIEE 10.1.3.3.3 is out, you can nd at [1]OTN. They havent updated there documentation yet.... Till Next Time Of course I was beaten by Venkatakrishnan : [2]http://oraclebizint.wordpress.com/2008/05/10/oraclebi-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 rst 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 lter based on a presentation variable. 60

[1]

No switch to the Advanced tab: Have a close look at the request XML especially the lter part: Periods.Year FILTER01 LEFT Now edit the FILTER XML to: @ {FILTER01 LEFT } {1 } @ {FILTER01 RIGHT } {1 } Dont 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 lter have evaluated into 1=1, which is always TRUE. Its 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 union all SELECT case when 0=1 then Markets.Region union all SELECT case when 0=1 then Markets.Region union all SELECT case when 0=1 then Markets.Region union all SELECT case when 0=1 then Markets.Region union all SELECT case when 0=1 then Markets.Region union all SELECT case when 0=1 then Markets.Region union all SELECT case when 0=1 then Markets.Region union all SELECT case when 0=1 then Markets.Region union all SELECT case when 0=1 then Markets.Region union all SELECT case when 0=1 then Markets.Region union all SELECT case when 0=1 then Markets.Region Test the result:

else 1 end FROM Paint else Markets.Total US end FROM Paint else Markets.Region end FROM Paint else Markets.District end FROM Paint else Markets.Market end FROM Paint else Products.Total Product end FROM Paint else Products.Type end FROM Paint else Products.Brand end FROM Paint else Products.UPC end FROM Paint else Products.Color end FROM Paint else Products.Finish end FROM Paint else Products.Size X end FROM Paint

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. Its a known issue on Metalink3. A simple workaround is to edit the PCXML le for this graph type. You can nd it in: ...\OracleBI\web\appbackslashres\s oracle10\popbin Open the le scatter.pcxml after the {/legend } tag and before {/graph } tag add the following:

{SeriesDenition Number=1 Color= #2175BB/ } {SeriesDenition Number=2 Color= #F4B44D/ } {SeriesDenition Number=3 Color= #A4C000/ } {SeriesDenition Number=4 Color= #F9F400/ } {SeriesDenition Number=5 Color= #82AFDD/ } {SeriesDenition Number=6 Color= #000000/ } {SeriesDenition Number=7 Color= #C8C8C8/ } {SeriesDenition Number=8 Color= #CC6600/ } {SeriesDenition Number=9 63

Color= #CC99CC/ } {SeriesDenition Number=10 Color= #EE00EE/ } {SeriesDenition Number=11/ } {SeriesDenition Number=12/ } {SeriesDenition Number=13/ } {SeriesDenition Number=14/ } {SeriesDenition Number=15/ } {SeriesDenition Number=16/ } {SeriesDenition Number=17/ } {SeriesDenition Number=18/ } {SeriesDenition Number=19/ } {SeriesDenition 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:

Lets 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 exible 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 lter (: 3) on the RANK we get:

[4] You see that the ltering is done after getting the RANK number from the db. Now save this report 5 times were you put a dierent number in each rank lter (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 lter 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 dierent 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 PORTALPATH.

[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 denition. This can be done by altering the instancecong.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 oracle10\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 le (e.g. with Notepad):

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

! Save the le Step 2: Altering charttype.cxml Now locate the charts directory usually found &.\OracleBI\web\appackslashres\s oracle10\charts

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

Alter the {?xml:namespace prex = xi / } {xi:include parse=xml href=fmap://chartSupport/imagetypes.cxml 71

} {/xi:include } {?xml:namespace prex = 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: dont 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 le includes a message named kuiCriteriaBlockingScript that can be overridden to either dene or include JavaScript that denes 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 le named : qbCriteria.xml (The name is arbitrary, the content isn t !!!)

Step 3: Enter the following XML into the le { ?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 le! In &OracleBI\web\app\restbackslashb mozilla (this is wrong in the OBIEE documentation) make a new text le 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 dont you try Paint?; if (!tValidator.dependentColumnExists(Markets,Region,Markets, District)) { // If validation script noties user, then return false alert(Region and District go so well together, dont you think?); return false; } if (!tValidator.dependentColumnExists(Sales Measures,,Periods,Year)) return You picked a measure so pick Year!; if (!tValidator.lterExists(Sales Measures,Dollars)) return Why dont you lter on Dollars?; if (!tValidator.dependentFilterExists(Markets,Market,Markets )) return Since youre showing specic Markets, please lter the markets.; var n = tValidator.lterCount(Markets,Region); if ((n <= 0) (n > 3)) return Please select 3 or fewer specic Regions; return true; } save the le: 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 variable 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 spaces in a repository name, put double quotes around it! paint 1.rpd doesnt work, paint 1.rpd does. If want to use a subdirectory you can use subdir\paint.rpd. Be aware this is relative to you ..OracleBI\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 Venkatakrishnans 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, its 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 species 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 le and restart the presentation server.

Now all the autopreview is switched o: Till Next Time

OBIEE Changing XLS (Excel) data on the y (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 nd that you can t edit the sheet on the y 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 qualied 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 stu 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)nd some of the buttons which you dont 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 nd the time......) Till Next Time

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


All whole day of working on the repository, nnaly gured 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 Oce 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-part1.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 predened 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 ll the cache with a simple query: (SH schema)

Check if the cache is actually lled:

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 inuence the gauge behavior can be found in the instancecong.xml. If they are not yet present in the

le 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 dierent portnumber or even better from the default port 80, this is what you have to do. Step 1: Navigate to your OC4J cong directory, ussally found in ..:\OracleBI\oc4j bi\j2ee\home\cong Step 2: Add a new directory called: backup orignal. Copy the whole content of the cong directory to the new directory. (better save then sorry......) Step 3: Open the le named default-web-site.xml in 84

a (XML) editor. Step 4: between the {web-site } nd the port= tag, change it to port = 80. Save

the le. Step 5: Add a new directory called: backup change YYYYMMDDNNN (:backup change 20080723001. Copy the whole content of the cong 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 cong les: ...\OracleBI\oc4j bi\j2ee\home\applicatio ns\bioce\bioice\WE BINF\bioce.xml ...\OracleBI\xmlp\XMLP textbackslashAdmin\Conguration\xmlp- server-cong.xml ...\OracleBIData\web\conf ig\instancecong.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 cong directory, ussally found in ..:\OracleBI\oc4j bi\j2ee\home\cong. Add a new directory called: backup orignal. Copy the whole content of the cong directory to the new directory. (better save then sorry......) Step 2: Creating the SSLFILE (site certicate). Open a command box and navigate to your OC4J cong directory, ussally found at: ..:\OracleBI\oc4j bi\j2ee\home\cong. Enter keytool -genkey -keyalg RSA -keystore sslle -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 cong le From the cong directory copy and paste the le default-web-site.xml rename the copy to secure-website.xml. Open the new le 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-cong tag: {ssl-cong keystore=sslle keystore-password=MySecretPassword/ } 85

[2] Step 4: Edit SERVER.XML Open the le 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 le should look something like this:

[3] save the le! Step 5: an extra backup! Add a new directory called: backup change YYYYMMDDNNN (:backup change 20080723001. Copy the whole content of the cong 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 certicate! Of course you also have to alter the port number in the OBIEE cong les: ...\OracleBI\oc4j bi\j2ee\home\applicatio ns\bioce\bioice\WE B-INF\bioce.xml ...\OracleBI\xmlp\XMLP textbackslashAdmin\Conguration\xmlp- server-cong.xml ...\OracleBIData\web\conf ig\instancecong.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 doesnt know autoll? Anyway, this is how you do it: Add / modify the following in your instancecong.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 instancecong.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 instancecong.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 le. 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 le based system. How does the OBIEE cache work? The program rst hashes the request string, looks in the cache directory is there is already a valid le 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 les. If you open the le 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/obieeand-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 rst 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 NQCong.ini. ENABLE To enable the cache set the ENABLE parameter to YES. DATA STORAGE PATHS This parameters species 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 specied should be on high performance storage systems. Each directory listed needs to be an existing, fully-qualied, 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 qualied 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 dierent 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 lls uses these directories alternating, request 1 goes to rst directory, request 2 goes to second directory, request 3 goes to rst 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 dened as a clustered server does not share cached data. The DATA STORAGE PATHS entry needs be unique for each server dened as a cluster participant. 5. Specifying more than one directory per drive does not improve performance, because le 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 dierent 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 le 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 VLANs for communication between databases and OBIEE. Most of these connections are much quiker then reading from disk. MAX ROWS PER CACHE ENTRY Species 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 specied 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 Species 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 Species 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 Species 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 rst 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 specically for cache rollup hits by setting POPULATE AGGREGATE ROLLUP HITS to YES. Nonrollup cache hits are not aected by this ag. If a query result is satised 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 qualies 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 quantied because of variable customer requirements. Customers that rely heavily on query caching and are experiencing misses might want to test the trade-o 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 noncacheable. 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 congure 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(prot)))))) misses on Prot, which is at level 7. Changing the search depth to 7 opens up Prot for a potential hit. Advice set it to 99. The [CACHE] part from your NQCong.ini le 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 specied 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 specied 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 lters for a small class I gave. Lets start with a simple report against the SH repository:

[1]

Put in a basic OR lter

[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 rst lter 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 lter part check the Protect Filter option:

Save the report and go back to your dashboard. 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 its 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 cong le.

Press

94

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

Till Next Time

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 logo, and other sessionrelated methods. First some public declarations:

LogOn:

LogO

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 stu, 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 xed it in OBIEE 10.3.4.0. Yes OBIEE nanally 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 inuence a lot by tweaking the PCXML le 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 le to linetimescatter.cxml. This le can ussaly be found in ..\OracleBI\web\appackslashres\s oracle10\charts 97

Step 2: Copy the timeline.pcxml to timelinescatter.pcxml. This le can ussaly be found in ..\OracleBI\web\appackslashres\s oracle10\popbin Step 3: In the custommessages folder for the language add the following to the custommessages.xml le (create the

folder and le if they dont exsist!)

Step 4: Edit the linetimescatter.cxml le set displaynameref=kmsgChartTimeSeriesScatter set sawc:engineSpecic le=popbin/timelinescatter.pcxml Save and close the le

Step 5: Edit the timelinescatter.pcxml le

set Graph Name=graph Type=Time SubType=Scatter Save and close the le

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 les. These le 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 les to OBIEE .RPD les. The manual for this can be found on your OBIEE 10.3.4.0 server in ..\OracleBI\server\Docume nt\DiscovererMetadataConversionAssistant.pdf. I did some prelimanary testing with and it seems to work just ne. 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 doesnt allow you to inuence it. Of course we found a workaround. You can do this by altering the PCXML le. 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 Oce 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 nd 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 oine. 101

Save as master temp.rpd From the le menu select merge.

Select you original master.RPD

102

Select the modied repository from ...\Or-

acleBI\server\Sampl e\usagetracking\

Password is empty

103

Click MERGE it, just click ok

If you get this one dont worry about

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 NQSCong.ini The le can be found in: &\OracleBI\server\Cong 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 le 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 oine Mode. Once you have opened the presentation catalog, click on the shared folder. In this folder you can nd the folder Usage Tracking, which holds all related reports, lters and the dashboard page.

Open 106

another

instance

of

the

Oracle

Business

Intelligence

Catalog

Manager. Open the destination Presentation 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 dont see the entry directly in the reports. This is because OBIEE saves the usage tracking inserts them in a batch. The amount is inuenced by the BUFFER SIZE parameter. This species the amount of memory used to temporarily store insert statements. The buer 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 buer lls up, then subsequent queries statistics are discarded until the insert threads service the buer 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 doesnt get installed

causing you to see no charts. [1] is easily solved by running two scripts: installCOMEmbedder.bat (not required but handy) installService.bat both can be found in ..\OracleBI\corda50\bin

This

[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

Conguring

Conguring

the

scheduler

on

Windows2003/Oracle

(2008-08-12 15:11)

As with many congurations on OBIEE, its in the documentation only distributed on many PDFs. 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 instancecong.xml 3 Add the Scheduler Administrator to the credential store 4 Congure 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 instancecong.xml In ..\OracleBIData\web\con g you will nd the instanceCong.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 -inle e:/OracleBIData/web/cong/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/cong/credentialstore.xml exists. Do you want to overwrite it? y/n (y): Y

4 Congure the Job Manager

From the le menu select Conguration 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 nd 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

look

at

the

entry:

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


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

for

the

Ciber

knowledge

Blog:

OBIEE Dierence 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 doesnt 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 rst 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, ags 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 , ags 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 catalog manager didnt have full control over the catalog folder (read,write,create and delete). 118

Till Next Time

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

Hi, I did an extraction of the sercret le with all the OBIEE congration tags: [1]OBIEE10340CONFIGURATIONTAGS.pdf You can nd the le at ..\OracleBI\systemsmanagementashresources\ DONT 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 congured: 119

[1] We had to dig deep in our collective brain where to nd 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 Kytes 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-collectfunct 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 dont 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 specic group and no rows if the user isnt 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 its in the string.

Now we add this formula to the lter:

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, Acceptance 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 dierent Development Street parts, so there is no SOx compliant guarantee that the report is correctly identied. 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 Dont forget to set the column data type settings: [2]

Till Next Time


1. 2. http: http:

//1.bp.blogspot.com/_qd3TDEvIh4Y/SK13pdt8DhI/AAAAAAAAAnU/iIU9qWPzNLc/s1600-h/ConditionalHyperlink002.bmp //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) Its in Spanish so I translated it into English. 126

If you dont 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 its in your customMessage folder. You can cut and paste this message from the controlmessages.xml le 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 le 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 le 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 predinend 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 [9]http://knowledge.ciber.nl/weblog/?p=128


1. http://www.argosoft.com/

written

for

the

Ciber

Knowledge

Blog:

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 OpenOce (2008-09-01 22:06)


OpenOce 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 OpenOce isn t on the current roadmap / support list of OBIEE.

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

OpenOce Calc import engine. Im not sure if this is an OBIEE or an OpenOce 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 nally 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 les ourselfs, to get dotted lines, other colors or the plus symbol. In the timeline.pcxml le look for the SeriesDenition tag: Within this tag you can set the following properties: LineColor= #0033 {the color of the line; possible colors all web RGB colors } SymbolColor= #3366 {the color of the Symbol; possible colors all web RGB colors } FillColor= #6699 {the color of the FillColor; possible colors all web RGB colors } LineWidth=1.0 {the width of the line in pixels; possible values O,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 O, Dot, SmallSquare, Square,SquareOutline, Circle, 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! Its 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 ..\OracleBI\web\appackslashres\ directory and ..\OracleBI\oc4j bi\j2ee\home\applicatio ns\analytics\analytics\ res 2. Make a copy of the s Oracle10 and rename it s MyCompagny (Capital senstive) both in ..\OracleBI\web\appackslashres\ directory and ..\OracleBI\oc4j bi\j2ee\home\applicatio ns\analytics\analytics\ res In the instancecong.xml le (&\OracleBIDate\web\con g\) 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 le 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 le. This le can be found in the s {StyleName }\popbin directory. Make sure to synchronize this le 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 rst 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: ManualTicksMajor= Month ManualTicksMinor= Week (!No ; between ManualTicksMajor and ManualTicksMinor!) If you don t want a Minor Tag make them both the same: ManualTicksMajor= Month ManualTicksMinor= 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 [1]http://knowledge.ciber.nl/weblog/?p=130
1. http://knowledge.ciber.nl/weblog/?p=130

for

the

Ciber

Knowledge

Blog:

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


One of the heritages of previous Siebel releases are the pdfstyle.fst and the pivot.fst les. These les 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 les 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 les, 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 its right:

[4] Till Next Time

OBIEE converts a NULL in double type eld to 0 if this box isnt checked.

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: dont 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....) section1 with a textblock, sections 2 & 3 with the reports.

Next I made a simple dashboard:

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 le and edit the sawc:color value=. The color is represented by a web Hex color. Save the le. Copy the le 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 le and rename it to paletteGraph.cxml. in the GraphType.cxml point the xi:include href=fmap://chartSupport/palette.cxml parse=xml to the new le. 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 nd very little:

What they meant to say is something like this: In the rst 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 nd a le called custom.css. In this le you can add your own css classes: .MyCell { background-color: #0000; font-style:italic; font-weight: bold; } See that you synchronise the le with the one in: ns\analytics\analytics\ res\s [StyleName]\b mozilla 4 In the colomn properties point to your Custom Class: ..\OracleBI\oc4j bi\j2ee\home\applicatio

[2] cell is dominant over the one in the personal class.... 140

Note1: Somehow the font-size of the

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 doesnt 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 prex 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 le locate the {ChartBitmap part:[6]

Copy and paste into the PCXML le of your OBIEE graph. between the {project } tags. Add the following reference to make the graph visible: 142

Playaround with zindex, if the image isnt fully on the background.

Till Next Time <image name=bitmap1 top=0 left=0 width=544 height=336 anchor=TopLeft visible=True zindex=3 imagename=img bitmap1><properties keepproportions=False/></image>

1. 2. 3. JPG

http://2.bp.blogspot.com/_qd3TDEvIh4Y/SNCr5METx4I/AAAAAAAAAtg/66ztZN9Hf1Y/s1600-h/sunset_wallpaper_ http://2.bp.blogspot.com/_qd3TDEvIh4Y/SNCr5METx4I/AAAAAAAAAtg/66ztZN9Hf1Y/s1600-h/sunset_wallpaper_ http://1.bp.blogspot.com/_qd3TDEvIh4Y/SNCylvOwS7I/AAAAAAAAAto/ccV-HIWmhUw/s1600-h/GraphBackGround002.

brazil-1600x1200.jpg brazil-1600x1200.jpg

4. http://www.corda.com/corda-update-archive.php 5. JPG 6. JPG http://4.bp.blogspot.com/_qd3TDEvIh4Y/SNC5nn53HQI/AAAAAAAAAt4/bW15xkRWiso/s1600-h/GraphBackGround004. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SNC1O_Q29RI/AAAAAAAAAtw/S69vPmbUhh0/s1600-h/GraphBackGround003.

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

Lets assumme that one group is allowed to see the content of a column and a other group isnt. If you simple only try todo use permissions the whole report will crash for the group which cant see the column.

[1] the CHOOSE statement. From the Oracle documentation:

You can workaround this crash with

[2] First lets 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 isnt 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 its 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 exibility 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 o messages systemmessages, found in ..\OracleBI\web\msgdbtbackslashmessage and language specic 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 ( ..:\OracleBI\web\msgdbxtbackslashcustomMessages). For the language specic messages you have to create a customMessages in each language folder (..\OracleBI\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 O screen (2008-09-24 17:45)

One of the rst 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 o screen is based on a couple of les 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 nd logon.css which controls the look and feel. In the .LogonTable part you will nd a reence 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 les in ..\OracleBI\oc4j bi\j2ee\home\applicatio ns\analytics\analytics\ res\sk MyCompagny\b mozilla 4) The rest of the screen is dieded 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 => kmsgAuthenticateRemembermyIDandpassword Logon Credentials

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

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

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

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

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

lo-

gon.css => .Subtitle, content: logonmessages.xml => kmsgAuthenticateSSOThankYouHaveLoggedO, kmsgAuthenticateThankYouHaveLoggedO, kmsgAuthenticateThankYouWereLoggedOText 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. 4. 5. http://2.bp.blogspot.com/_qd3TDEvIh4Y/SNnUoVX5FJI/AAAAAAAAAvw/JdL6u1CUlbc/s1600-h/OBIEE_CUSTOM_LOG_ON_ http://4.bp.blogspot.com/_qd3TDEvIh4Y/SNnUoqICVqI/AAAAAAAAAv4/Q3ikgqpFTN0/s1600-h/OBIEE_CUSTOM_LOG_ON_ http://1.bp.blogspot.com/_qd3TDEvIh4Y/SNnUo47Si6I/AAAAAAAAAwA/JSWeQVG00Jc/s1600-h/OBIEE_CUSTOM_LOG_ON_ OFF_002.png OFF_003.png OFF_004.png 6. http://obiee101.blogspot.com/2008/09/obiee-setting-up-custommessages-folders.html 7. 8. 9. http://4.bp.blogspot.com/_qd3TDEvIh4Y/SNnUfo5i1lI/AAAAAAAAAvA/lhcU4YBQXow/s1600-h/OBIEE_CUSTOM_LOG_ON_ http://1.bp.blogspot.com/_qd3TDEvIh4Y/SNnUfsZ_pEI/AAAAAAAAAvI/QbVOenCVPk0/s1600-h/OBIEE_CUSTOM_LOG_ON_ http://3.bp.blogspot.com/_qd3TDEvIh4Y/SNnUf_QwNLI/AAAAAAAAAvQ/VA1xwnkFes8/s1600-h/OBIEE_CUSTOM_LOG_ON_ OFF_005.png OFF_006.png 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 o screen ([1]http://obiee101.blogspot.com/2008/09/obiee-makingcustom-l og-on-and-log-o.html) its 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 => .WelcomeTextCell, Content: uimessages.xml => kmsgUIWelcome Dashboard actions: 150

[2] Appereance: portalbanner.css => .DashBarIconCell, .DashBarAlertCell, .DashBarProductCell, .DashBarActiveProductCell, .DashBarActionCell, Content: uimessages.xml => kmsgUIPortal, kmsgUIAnswers, kmsgUIProductsLink, kmsgUISettings, kmsgUILogo Till Next Time This article was original written [3]http://knowledge.ciber.nl/weblog/?p=133
2. http://www.blogger.com/$image[36].png 3. http://knowledge.ciber.nl/weblog/?p=133

for

the

Ciber

Knowledge

Blog:

1. http://obiee101.blogspot.com/2008/09/obiee-making-custom-log-on-and-log-off.html

2.10

October

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


When Im 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......

Its 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 prex of each report we default add:

(you can nd the postx block in the advanced tab of your report)

When developing your dashboard you can playaround with dierent settings to nd 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 doesnt 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 nd the original loaction in the instance151

cong.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 le 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-logo.html) and the portalbanner ([2]http://obiee101.blogspot.com/2008/09/obiee-portal-customiz ationpart-1.html) its time

for the portalcontent.[3] screenpart is controlled by portalcontent.css. Active Tab:

Most of this

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

[5] Space between tabs:

Appearance: portalcontent.css => a.TabDimFont

[6] Appearance: portalcontent.css => .TabSep Thickness of the bar below the tabs: [7] Appearance: portalcontent.css => .TabLineTable Tab Background images

[8] Minibuttons:

Appearance: .TabHiCell, .TabHiSep, .TabDimCell, .TabDimSep

[9] Dashboard Sections:

Appearance: portalcontent.css => .minibuttonOn 153

[10]

[11] Of course this posting doesnt 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. png 11. png 12. http://knowledge.ciber.nl/weblog/?p=137 http://4.bp.blogspot.com/_qd3TDEvIh4Y/SOz3iLBB0_I/AAAAAAAAAyw/0S1H0MfRB5U/s1600-h/portal_content009. http://1.bp.blogspot.com/_qd3TDEvIh4Y/SOz3h8CzISI/AAAAAAAAAyo/TxV_hWZPT5Q/s1600-h/portal_content008.

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


Discovered today that you cant use underscores or in Skin and StyleNames. so MyCompagny SKIN A and MyCompagny SKIN A are illegal . MyCompagnySKINA is allowed. (yep, I know its 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 [2]OBIEE web services part 2 154

trigger iBots writing default selection values

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 nd..... Make a copy of the productmessages.xml to its customMessages folder. Edit the entry for kmsgPoweredByAnchor 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 [2]OBIEE web services part 4 [3]OBIEE web services part 5 Till Next Time

copy reports write properties to catalog objects creating and lling dashboard pages

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/thegrape 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 Marks 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-oracle11g/ , [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. Its 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-biapps-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 ued 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 wasnt 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 prex area

?!?script src=[3]http://maps.google.com/maps?le=api &v=2.x &key=ABQIAAAAtghZliBar5ci3sjZR oGRSEtwgT n0GADCjO95K9FWMY2XE2RQZwN8F1TggjSu117aG70pYMI0GfQ 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 (GBrowserIsCompatible()) { 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 dont want users to choose any other languages then the one you have dened, goto instancecong.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 le ([1]http://obiee101.blogspot.com/2008/01/obiee-optimizing-nqqu erylog-for.html) you sometimes want a Q &D cleanup. For that I create an empty log le in the log directory called NQQuerylogEmpty.log. I made a small batle 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 dont want is waiting..... An example: a dimension with 5 levels and 25 categories on each level can give you 255 = 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 dim table level 2; dim table level 3; dim table level 4; dim table level 5;

1; level level 1, level 1, level 1, level 1,

1 level level level level

2 2, level 3 2, level 3, level 4 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 benet 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 querys 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-splitthem.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 ag fact table level 2; ag fact table level 3; ag fact table level 4; Mapping the physical layer

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

1, fact aggregate level 1 fact aggregate level 2 fact aggregate level 3 fact aggregate level 4

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 isnt 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 its 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 repository? Make a small .BAT le called NET STOP BEEP.BAT Put this in the le

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 nd here: [1]http://obiee101.blogspot.com/2008/11/obiee-making-it-aggregat e-aware.html ) The examples in this article are based on this simplied 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] gregate:

Select the logical levels for the ag-

[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 le, 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 le you can nd 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 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 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 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 pool AGGR.CP AGGR in AGGR..AGGR;

connection

connection

connection

connection

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 performance there. Till next time This article was orginally written [15]http://knowledge.ciber.nl/weblog/?p=149 for the Ciber knowledge blog:

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 dont get any indexes. Here is a small (ORACLE) script to create them on the y 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 dont 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 conguration le (instancecong.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 signicant 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: Dont 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 inuenced by CacheMinUserExpireMinutes. This means that in a 24Hour ETL cycle this shouldnt 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 [1]http://knowledge.ciber.nl/weblog/?p=150
1. http://knowledge.ciber.nl/weblog/?p=150

for

the

Ciber

knowledge

blog:

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


(Direct answer: No :-( ) Have a look at this table: 174

[1] What Im looking for is this:

[2] But I dont want to use outerjoins, since obiee messes them up anyway when you try do ltering 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 isnt executing the RAND() function on the Database side but internally. For that it rst 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 querys 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 wouldnt have a need for outerjoins, but sometimes you need to make data visible which you dont have. 176

Outerjoins in OBIEE can be a bit tricky and dont 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 joinby 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 [9]http://knowledge.ciber.nl/weblog/?p=152 for the ciber knowledge blog:

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 ([1]http://obiee101.blogspot.com/2008/11/obiee-understanding-o uterjoins-part-1.html). Outerjoins: 179

[2] This works ne until you add a lter :

[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. Lets 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 o years. Let try an in view lter: 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 Querys / Fragmented Querys (2008-11-21 23:33)


One of the power features of OBIEE is the usage of federated or fragmented querys. Being able to source dierent database at the same time can save you a lot of time because you dont have to reengineer your whole ETL every time a new system gets introduced. 182

Still it wise to put some eort in the way you map the tables in the repository, especially if you want to minimize the query response time. Lets 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] Dont forget to set levels:

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

[10] Its 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 dont restrict this grace period the numbers might not add up correctly. Lets 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 isnt picked up very eciently. OBIEE res three separated querys 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] Dont forget to set the levels:

[16] Lets 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 querys. 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 ne:

[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 message: [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 doesnt know the COUNT DISTINCT command.

You can x 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 Microsofts Internet Information Services (IIS). If your not running IIS and the OBIEE Presentation server on the same box, or didnt install IIS before the you installed OBIEE, here is a way to congure it: Open the IIS Manager 191

[1]

Create a Web Site conguration on the IIS:

[2]

[3]

Click next 192

[4]

Enter a name for your web site conguration. 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 directorys:

[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: Je 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 Lets Get Professional (2008-11-27 03:27)


Recently I was asked to have a look a some development work from some o-shore companies as part of a vendor selection. This triggered me to make a small random order check list of does and donts before your send your material to your customer. If you know any more, let me know and I will add them to the list.

Dont 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, its illegal / criminal! Do a consistency check before you send it to the customer. Dont 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 lters directly as shared lters, 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 conguring ODBC connections. Dont 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. (Dont 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 rst to cache the results. It will be far more impressive. 28/11/08: Bytus: Never try to recreate the Excel requirements specications, screenshots of old systems or Powerpoint mock-ups 1:1 at all costs. Work towards the best approximation which satises 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 dierent connection pools for dierent user groups 19/04/09: John Minkjan: Read Stephen Few: Information Dashboard Design: The Eective Visual Communication of Data 06/05/10: John Minkjan: Use display folders to organize your work. 28/06/10: John Minkjan: Dont 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 wasnt 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]

Lets create a MONTH YEAR AGO Column:

[3] Have a look at the result:

[4] 203

....some thing is not right here....

Lets investigated the date dimension:

[5]

Looks alright? Have a look again without year and month: 204

[6] We have a sorting issue here, so lets add a sorting column:

[7]

[8] OK thats xed, lets go back to our report: 205

[9] Still a problem there, lets sort the chronological key:

[10]

[11] That really xed 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 DWHs 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 lets 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 lter 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 O-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 rst birthday today, but we also passed the 1K pageview per day border for the rst 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-Oce add - in (2008-12-05 21:08)


Erik did a good one: [1]http://bidwcz.blogspot.com/2008/12/chybj c-bi-oce-add-in-me-se-to-stt-i.html But since most of you (including me :) ) dont speak or read Czech here is a translated summery: If you a missing the OBIEE oce plug in after you did an install and think it should be there, try this: In your MS Oce application grotto Help> About MS Oce> Disabled Items >

[2] 209

Press Disabled Items and check if the OBIEE Oce 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, its 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] You will get a warning like this:

, go to the pivot view:

[7] This is because the pivot view template doesnt 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 [9]http://knowledge.ciber.nl/weblog/?p=157 for the Ciber knowledge blog:

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 doesnt have a built in function for the rst 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 , TIMESTAMPADD(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 OFWEEK(CURRENT DATE) *-1,CURRENT DATE))) Last day of the previous week: TSI DAY, DAY-

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/obieepresentation-servi ces-cache.html. You sometimes you want to bypass the presentation / cache for development purposes. Or more often when you get weird write back behaviour. Add this to the instancecong le: <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 its own business model. I created a small XLS spreadsheet with a couple of LOVs:

[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 BOOLEAN ORDER BY LOV.LOV SORT

LOV WHERE LOV.LOV

TYPE =

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 conguration and implementation of the OBIEE metadata dictionary both on an OC4J and an IIS web services. (Other web services can be easily congured 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 Oine mode:

[5] Go to tools utilities: 216

[6] Select Generate Metadata Dictionary:

[7] Select a destination directory:

[8] On successful nish 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 nd the dictionary. This is congured in the INSTANCECONFIG.XML le. Usually this le is found in {OracleBIDate }\web\cong. Open the le and add: <SubjectAreaMetadata> <DictionaryURLPrex>/analytics/dictionary/</DictionaryURLPrex> </SubjectAreaMetadata> between the <WebCong> tags.

[14] WOW: Some OBIEE cong 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 le is found in {OracleBIDate }\web\cong. <SubjectAreaMetadata> 220

<DictionaryURLPrex>/analyticsDictionary/</DictionaryURLPrex> </SubjectAreaMetadata>

[21] WOW: Some OBIEE cong 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. jpg 23. http://lh4.ggpht.com/_qd3TDEvIh4Y/SUERTQk5CSI/AAAAAAAABLE/NXeShz4dc84/s1600-h/clip_image02914.jpg 24. jpg 25. file://localhost/mnt/ext/blogbooker/tmp/sm6j0byg/sm6j0byg-body.tex.lynx.html http://lh4.ggpht.com/_qd3TDEvIh4Y/SUERUZz1tMI/AAAAAAAABLM/NZjsod-qnRc/s1600-h/clip_image0311%5B1%5D. http://lh6.ggpht.com/_qd3TDEvIh4Y/SUERSCBI39I/AAAAAAAABK8/1hOyit03L-A/s1600-h/clip_image0261%5B1%5D.

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 update 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 le Create a small command le 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 rst non-beta version of Chrome. Tried it again, it now works ne with OBIEE Dashboards, didnt have any freezes. Still doesnt work right in answer if you have a metadatadictionary congured. 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 instancecong.xml le:

<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 instancecong.xml le: <Dashboard> <EnablePromptedURL>True</EnablePromptedURL> </Dashboard>

[3] The URL will look something like: [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=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 dont switch o 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 gemeenschap. 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 community. 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/). Its simple to set up, you can use it within an OAS or OC4J but also standalone. But with all Wikis, Blogs or any other form of documentation, if its not maintained / up to date people wont 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 dierent SKIN and or STYLE. One method is giving the SKIN/STYLE name in the login URL. To enable this feature you rst you have to dene a parameterlist in Auth\UserIdPassword part of the instancecong.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 rst! } 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/les/oracle bi sample app content guide ext part1.zip [2]http://www.oracle.com/technology/products/bi/les/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/les/oracle setup les.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

bi

sample

analysis

OBIEE creating large / huge PDF documents (2009-01-09 01:30)


When you try to create big PDF les 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 executing PDFRpcCall.processMessage com.siebel.analytics.utils.InputStreamWithLimit $ReadOverTheLimitException 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 instancecong.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. 230

But if we do it on a day by day level we get:[3]

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 xed 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? couldnt nd 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 variable 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 variables 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 le that runs after the dynamic variable has been updated. If the cache seeding .bat le 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 o 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 dierent oce hours. The reportbuilders work from there home oces. 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. Stu 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 querys when they take to long Answers users: create there own new request each time. Dashboard users: Only use predened querys BI-publisher: Can do a lot of querys in succession. WriteBack users: need insert/update rights on the DB. The help the DBA ask him for ve 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 ve connection pools:

[1] Create ve Groups: 233

[2] Now set the permissions for the Connection Pool:

[3] Dont 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 Consultant 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 Consultant (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 rst round and with great pleasure Ill accept the challenge for the next round. So if you follow BI news in Dutch, cast your vote! Doesnt have be on me..... but I dont 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 dierent user but you havent yet setup ACT AS functionality or you dont 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. Lets 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 prex:

[2] It doesnt seem to inuence 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: identies 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: Identies 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 rst:

[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 dont 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. Dont 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) triggered 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 ve 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]

Doesnt seem to change anything at rst glance, but works ne when you have two columns with the same name from dierent 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 querys (2009-02-12 13:41)


One of the powerful features of OBIEE is the possibility of federated querys. 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 stu and starts asking the wright/wrong questions. In this article I want to show you some of the pitfalls when trying to sell federated querys. The most common demo is we get all the data up to last night from our DWH and add todays 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 dierent 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 todays unstable data is not signicant 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: Dont count invoices from department 999). If these rules arent covered in the RPD it will lead to the wrong numbers. Does this mean you should use federated querys against an OLTP system at all? Of course not! Just think about the result your are trying to get. Try conning the federated query to a specic level. (FI: Use in only when a day to day comparison is made.) Till Next Time

OBIEE Switching between lters (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 lter 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 les dont seem to work. Most catalog administrators forget to retract this privileges until its 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 o 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

(Dont 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] Dont 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 le is found in the {OracleBI }\web\app\resashb mozillahere is an example: // MY Stu function obi popup() { alert(Hello World) }

[1] Step 1b: If you are using OC4J sync the le 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!>

Dont 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 Conguring Case Insensitive Search (2009-02-26 20:15)

If you look in the conguration guide you will nd that the CASE SENSITIVE CHARACTER COMPARISON parameter in the NQCong le 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 its 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 wont 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 dierent 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 nd a reverence to NQSSetSessionValue:

[2] But if your looking for how to use it........ (At least I couldnt nd anything on the net or in the docs.). Anyhow: after logging an SR I was pointed in a direction to nd 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 MYSESSIONVAR=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 nd a sample. But if you are just like me not up to speed C++ it takes some eort to get it working. Step 1: get a C++ compiler. (I used the Microsoft Express edition) Step 2: Locate the SampleDynFileAuth.vcproj le 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 le with the following structure: name passwordhash Groups atributes atributesjim 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 oine 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)


Im a hugh fan of the OTN fora. Problem is that it doesnt have an auto-refresh. Ive made a small script to load the page in a iFrame and reload it every 5 minutes: <! OTN OBIEE With autorefresh > <! Check if its 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 doesnt understand IFRAME. However, well still <A HREF=[2]http://forums.oracle.com/forums/forum.jspa?forumID=3 78>link</A> you to the le. </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 its 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 eld 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-qstyle.html) I was asked if its possible to add multiple addresses to a Google map. Actually this even simpler then having to create a separate map for each address. Lets get our base table: 270

[2] Now create a narrative view:

[3] In the Prex part put: // Set the Google maps api key: <script src=[4]http://maps.google.com/maps?le=api &v=2 &key=ABQIAAAAtghZliBar5ci3sjZR oGRSEtwgT n0GADCjO95K9FWMY2XE2RQZwN8F1TggjSu117aG70pYMI0GfQ 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/maples/marker.png icon0.shadow = [6]http://www.google.com/maples/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 its build dynamicly in OBIEE showAddress([7]@2, [8]@3);

In the Postx 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 lter: Press the lter 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-lters.html I showed you how to create dynamic lters. 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 Sample 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 ltername Create a new promt for the dynamic content in the column put: case when @ {ltername } {Market1 }= Market then D2 Market.M01 Market else case when @ {ltername } {Market1 } = Area then D2 Market.M02 Area else case when @ {ltername } {Market1 }= District then D2 Market.M03 District else D2 Market.M03 District end end end WOW: Its very sensitive on the place of the single quotes!

[3] Add a dynymic lter 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 elds but you cant use the normal is between because of the complex lter. 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 lter:

[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. [1]http://www.faqs.org/docs/htmltut/images/testmap.gif First get a image, I used this one:

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! TITLE=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 UNRELATED PROJECT 7488780 : DEFAULT SQL CANNOT USE PRESENTATION VARIABLE OR REQUEST VARIABLE 8251994 : HRESULT ERROR OR UNKNOWN ERROR IS COMING ON BI OFFICE WHILE INSERTING 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 REQUEST 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 arent 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 rst. ([1]http://forums.oracle.com/forums/forum.jspa?forumID=378) Altough I try, Im 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. Lets 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 rst 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 its translations: [3] Based on this column I created a prompt with no label text:

[4] Now in the dashboard its available in Dutch:

[5] In English:

[6] In French:

[7] You can use the presentation variable for your ltering. 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 zeros in a bargraph (2009-04-17 09:21)


Somebody asked me how you can show zeros (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 isnt 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 zeros (case when...):

[3] (In the nal 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 les get the FireBug for FireFox: [1]https://addons.mozilla.org/nl/refox/addon/1843 Its a very handy tool to nd 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: spa?threadID=886991 284 [3]http://forums.oracle.com/forums/thread.j-

And to be quit honest I didnt 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 les 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 eect for 1 dashboard page or when you dont 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] dont 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 nal 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 nal step, creating the dashboard, is something we often take to light hearted. Lets make a bold statement here: 60 % percent of the dashboards we create, within six months, arent used in the way we intended them or even worse arent used at all. Why? Most of them dont communicate to user in the most eective way. The user cant nd what he is looking for at glance. Either we tend to overload him with data or present it in a non eective way. If you want to master these last skills you should really read :

Information Dashboard Design: The Eective Visual Communication of Data by Stephen Few. ([1]http://www.amazon.com/Information-Dashboard-Design-Ee ctiveCommunication/dp/0596100167)

The current version of OBIEE has the (dis)advantage that it doesnt 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 ndings 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-nal-skills-cr eatinggreat.html) I will show you some tips and tricks on how the implement the ndings of Stephen Few in OBIEE. Lets 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 eect: 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] Lets compare both:

[11] Still you have to consider if a simple list:

doesnt give the user enough information, charts tend to take up [12] 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 Oce. 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 [2]http://obiee101.blogspot.com/2009/01/obiee-sample-sales.html Its alive: of the extended:

[3] BI Publisher doesnt work out of the box:

[4] (duh.... Its 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 le belonging to the Graph type: Open the le 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 le 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 le 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 franais on the dropdown list at the logon screen written as Franais:

[2] With the help of [3]Christi@n I recovered from my brain freeze and started editing a copy of languagenames.xml in the general customMessages folder:

[4] A quick reboot of the presentation server a the problem was xed:

[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 franais to Franais is actually incorrect, because it means something dierent. To be more clear: franais means French and un Franais 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 oended if there language wasnt 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://obieestu.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 %2Foracleintelligence.blogspot.com %2F2008 %2F08 %2Fobiee-enable-users-to-change-passwords.html &sl=es &tl=en works ne 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 lets give it a try: Lets 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] [5] [6] [7] [8] : X-axis : Y-axis : Dimension 1 : Dimension 2 (optional) : Comparison value

This would give us: 295

[9] Resulting in this chart:

[10] On a personal note I nd 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 inuencing 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 Brightons 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 storages. 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 dont use it, try to bring it to the DB! Venkat Janakiraman: Writer of on the most inuential 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 BIserver and the outside world. Andreas showed us how to use the dierent tools for manipulating UDML A very good meal at Due South: This place is really on its 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 stu 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 wouldnt give in :-( Emiel van Bockel: Emiel gave us the story from the architect point. He proved that you dont always need a star schema. Especially with OBIEE its possible to use other modelling technique. Emiel showed us also that storing history doesnt 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. Lots of indept discussions with some of the Oracle BI frontrunners. 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 Prex 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.obiforumlive.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 keynotespreker 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 nd 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 [1]http://essbase101.blogspot.com/2009/06/essbase-install.html Till Next Time
1. http://essbase101.blogspot.com/2009/06/essbase-install.html

install

on

VM

working:

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-getrebug.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 hidden 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 le 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 le use: cscript OBIEE GRAPHS.vbs > OBIEE GRAPHS.HTML Declarations Redim FolderList(0)A at 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 le wscript.echo <table border=1> for n = 0 to ubound(FolderList) Set fso = CreateObject(Scripting.FileSystemObject) Set f = fso.GetFolder(FolderList(n)) For Each le In f.Files if (right(le.Name,3) = jpg or right(le.Name,3) = gif) and instr(le.parentfolder,b mozilla 4) = 0 then wscript.echo <TR> wscript.echo <TD> wscript.echo le.parentfolder &\ & le.Name wscript.echo </TD> wscript.echo <TD> wscript.echo <IMG SRC= & le.parentfolder &\ & le.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 lename/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 its a small step to get users and the roles they have and put the export in an XLS: 308

Read Usergroups.VBSJohn Minkjanhttp:// [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 lename/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 kmsgAuthenticateRemembermyIDandpassword) 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 : AllowRememberPassword in the instancecong.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 congurations. 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 dont 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 prex = 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 = Brieng 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 ston : [1]http://obieestu.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,idPersonalizationMenu,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/les/oracl e bi sample analysis setup les.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 congurations into 1 directory. Till Next Time

OBIEE Enable508 (2009-07-13 21:17)


While going trough the list of conguration tags: [1]http://knowledge.ciber.nl/weblog/OBIEE/OBIEE10340CONFIGURATIO NTAGS.pdf I found this 315

{enable508 }true {/enable508 }

It changes this

[2] Into this:

[3] tag of the instancecong.xml Till Next Time Note: Have a look at Stijn his comment on 508 Compliancy

Put it between the serverinstance

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] Its 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 stu 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 nd 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-dierence-between-two-ro ws.html
1. http://lh6.ggpht.com/_qd3TDEvIh4Y/Smc2PtKMlbI/AAAAAAAACDE/-wX-mEniwns/s1600-h/image3.png

OBIEE Hide the saved lter view link (2009-07-22 19:14)

[1] In this article: [2]http://oraclebiblog.blogspot.com/2009/07/how-to-hide-saved- lter-view-link.html John Andrzejek shows a way of doing this by editing a CSS le. 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-dierence-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 rst server (2009-07-23 19:39)

[1] Had to clean the attic at my parents, and found one my rst 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 guide.html warehousing architect a beginners

Get a clean (virtual) machine and rst 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/les/orac le bi sample analysis setup les.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-Eective -Communication/dp/0596100167 Learn to create reports and dashboard which people need, which is often completely dierent of the reports and dashboard they intentionally asked for&

[15]http://www.orm.net/ 319

Congure 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/ {Je McQuigg } [17]http://greatobi.wordpress.com/2009/08/24/using-report-specs- for-requirements/ {Je McQuigg } [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 postx 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 rst entry next higher dimensional level. => TODATE(FACT, TIME.MONTH) means that it will start aggregating from the rst month it will nd 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 xed 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 important 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 isnt moderated, so its 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 lter 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 trac 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 doesnt 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 lters 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 Cong Tags (2009-08-19 20:45)


Updated the Cong Tags le and made (hopefully) better readable: [1]OBIEE 10341 Cong 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 dierent. There service is completely asynchronous, which meant a slightly dierent 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 prex 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 postx 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 nd this webservice slower then the one from Google, but maybe some better coding could x 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 u (2009-09-13 16:05)


For all of you waiting for an answer at the moment: I m having u at this moment: ( Dutch style)

[1] Please be patient or post urgent questions at the OTN forum: [2]http://forums.oracle.com/forums/forum.jspa?forumID=378 EDIT: 19/09/2009 Sort of feeling better now, still got the snies. 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 POSITION 11+ [3]8796912 Oracle BI Suite EE: Patch DISCONNECTED DOESNT 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 SELECTOR [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 redistribute 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. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8284585&aru=11758316&release= https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8796912&aru=11740894&release= https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8669206&aru=11667148&release= https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8743856&aru=11613091&release= https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8685156&aru=11602487&release= https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8650261&aru=11588395&release= https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8685120&aru=11570547&release= https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8633968&aru=11512244&release= https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8616993&aru=11446193&release= https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=6702999&aru=11446270&release= https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8611209&aru=11435901&release= https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8238481&aru=11399535&release= https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=8439796&aru=11383294&release= 922101341&plat_lang=912P&patch_num_id=1129620&email=john.minkjan%40ciber.nl&userid=ml-491067.993& 922101341&plat_lang=912P&patch_num_id=1127918&email=john.minkjan%40ciber.nl&userid=ml-491067.993& 922101341&plat_lang=912P&patch_num_id=1121595&email=john.minkjan%40ciber.nl&userid=ml-491067.993& 922101341&plat_lang=2000P&patch_num_id=1116704&email=john.minkjan%40ciber.nl&userid=ml-491067.993& 922101341&plat_lang=912P&patch_num_id=1114790&email=john.minkjan%40ciber.nl&userid=ml-491067.993& 922101341&plat_lang=912P&patch_num_id=1114789&email=john.minkjan%40ciber.nl&userid=ml-491067.993& 922101341&plat_lang=912P&patch_num_id=1112085&email=john.minkjan%40ciber.nl&userid=ml-491067.993& 922101341&plat_lang=912P&patch_num_id=1108436&email=john.minkjan%40ciber.nl&userid=ml-491067.993& 922101341&plat_lang=912P&patch_num_id=1103463&email=john.minkjan%40ciber.nl&userid=ml-491067.993& 922101341&plat_lang=912P&patch_num_id=1103471&email=john.minkjan%40ciber.nl&userid=ml-491067.993& 922101341&plat_lang=912P&patch_num_id=1102657&email=john.minkjan%40ciber.nl&userid=ml-491067.993& 922101341&plat_lang=912P&patch_num_id=1099646&email=john.minkjan%40ciber.nl&userid=ml-491067.993& 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 nd 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 eld 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 prevented 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 OSspecic. After going through many rounds of trying to gure this problem out, we led 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 specied library rst. 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 rst, 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. [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

See:

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 eort: 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 specic 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 lters. 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 lter 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 lter, but the Variance still shows 26.55. Obviously, this is incorrect, so what s going on here? The ltered amount should be reported as 100 * (220 - 130) / 130 = 69.23. If you want to show the correct variance for the ltered Grand Total amounts, you need to enable an option in your instancecong.xml le. Open the le $OracleBIData/web/cong/instancecong.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 instancecong.xml, and restart your BI Server and Presentation service. Now, the correct amount should be shown for the ltered 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 lter to lter results in Answers requests. Covers advanced usage of the Top N lter 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 lter: [3] What if you want to see the Top 5 Customers by Revenue for each Product? Using a simple Top N lter 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 lter into SQL mode. Starting with a normal Top N lter, click Advanced at the bottom of the lter window and select Convert this lter to SQL: [5] Next, edit the lter 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 eld you want to group by (Product, in this example): [6] Now, the Top N lter 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 [9]http://obiee101.blogspot.com/2009/09/obiee-blog-lost.html Till Next Time C. oraclebi blog. See:

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 lter 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 rst, I thought I could simply add a Top N lter 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 lter formula, as well as in the column denition - 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 [2]http://obiee101.blogspot.com/2009/09/obiee-blog-lost.html Till Next Time
2. http://obiee101.blogspot.com/2009/09/obiee-blog-lost.html

C.

oraclebi

blog.

See:

1. http://oraclebi.soundvoid.net/2008/09/when-the-top-n-filter-fails/2008/09/using-the-top-n-filter/

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 signicant amount of work should be done in oine 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-oneserver-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 rst 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 lter (2009-12-17 09:46)


Question I got from the blog, how to make an or lter in OBIEE. Say you want the revenue for 2008 or the 2007 Q1. First make your report including the lters:

[1]

Next click AND [2]

to change into OR [3]

. This way you can make complex lters:

[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 lter, 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 lter 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 nish 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 DOESNT 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 lter . 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 lter 347

[5] This is because the report isn t let lter aware. Go to your target report and set a lter on the Market column of the type is prompted.

[6] If you now test it again, you will see the lter 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 certain 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 ndings. 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 conguration le (instancecong.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 ( download to Excel) entries. To set DefaultRowsDisplayed, DefaultRowsDisplayedInDelivery, or DefaultRowsDisplayedInDownload to a value that exceeds the current value of ResultRowLimit, you also must increase the value of ResultRowLimit 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 prex 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 ll the array: chartDataLabels.push(@1); chartData.push(@3); In the postx 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] Hide it:

[4]

[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 &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

&chs=200x200

[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. 7. http://code.google.com/intl/nl/apis/chart/ 8. http://lh3.ggpht.com/_qd3TDEvIh4Y/S0Y2IfGbSiI/AAAAAAAACPA/Q7aB4tm664M/s1600-h/image%5B24%5D.png 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"

OBIEE Oracle support (2010-01-20 19:32)


Sometimes you have to contact oracle support ([1]https://support.oracle.com/CSP/ui/ash.html) from a machine where no ash 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: spa?threadID=1009297 &tstart=0 Simple add a static text to your report: [3]http://forums.oracle.com/forums/thread.j-

[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 rst 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 stu like address labels. With google chart you can easily integrated them in an OBIEE report. [3]http://obiee101.blogspot.com/ add the formula: http://chart.apis.google.com/chart?chs=150x150 &chl=http://obiee101.blogspot.com/ &choe=UTF-8 &cht=qr 355 Say you want to code

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 rst 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 sucient 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: Species one or more directories for temporary space. Each directory listed needs to be an existing fully-qualied, 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 qualied 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 qualied 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 dierent 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 because le I/O takes place through the same I/O controller. In general, specify only one directory per disk drive. 357

Specifying multiple directories on dierent drives improves the overall I/O throughput of the Oracle Business Intelligence Server because internally, the processing les 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: Species the maximum amount of memory to be used for each sort operation. Multiple operations can each use memory up to the value specied. 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 specied by SORT MEMORY SIZE sets the upper limit on how large the sorting buer 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 indenite 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 le. 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: Species 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 specied until it reaches the value of SORT MEMORY SIZE. Example: SORT BUFFER INCREMENT SIZE = 256 KB ; This parameter denes 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 buer 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 eciently 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 buering scheme 358

for processing these operations. When the amount of data exceeds the VIRTUAL TABLE PAGE SIZE, the remaining data is buered in a temporary le 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 buers, as each I/O still goes through the system buers Rule of thumb: Trust the documentation, more then 256 KB is not necessary. All the parameters are set in the NQSCong.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 xed 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 rst 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 -theoc4j-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 le in a text editor: (UNIX)ORACLE HOME/j2ee/home/cong/system-jazn-data.xml (Windows)ORACLE HOME\j2ee\home\congextbackslashsystem-jazn-data.xml Locate the line that denes 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 prex 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 ve 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 le. 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 dierence between: 362

Leftover vacation days male employee xed contracts age 21-30 and Leftover vacation days male employee xed 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 le name, so they are harder to nd on the le 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 conrm 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 CANT 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 conditional 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 ( 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 stu 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 le 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.htm 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 y (2010-02-15 20:22)


One of our customers wanted to see some suggested CSS changes on the y on actual reports. The wanted it on the production machine& First we copied the Demo le 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] And select the style you want to demo:

(sorry only got the Dutch version installed)

[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 rst 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 les (reports). (2010-02-21 20:39)


The ATR les 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 le when used for a report. WOW: backup the les 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 le:

[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 ; 00 00 00- No Access ) {3 } [for each grantee] Traverse

[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 le.. 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 prex 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 servercache. If you always want to bypass the Presentation server cache add this to the instancecong le of the development presentation server: 378

<WebCong> <ServerInstance> <ForceRefresh>TRUE</ForceRefresh> </ServerInstance> </WebCong> 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 le 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 nd 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 something like:

[1] The {saw:criteria } tag The {saw:criteria } starts with the subjectArea subtag The rst inner tags are: 379

[2] {saw:columns } Holding the columns information {saw:lter } Holding the lter for the subject area Next Time I will show the detailed columns and lter 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 rst inner tag is {saw:column } . The base tag contains the column formula, columnId and aggregation 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 lter structure The {saw:lter } structure

[1] To create lters OBIEE uses sawx epression engine. First it dene the type: [2] Then the right side: [3] and left side: [4] For lters 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 possibilitys 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 rst to write things down: [3](Information Dashboard Design: The Eective 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 nd 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 cong le (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 stu 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 stu ;-) 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: Ocial Database name (Microsoft) or Schema Name (Oracle) Depending on the database this can be case sensitive. 1.5 Physical Schema Name (Microsoft)

[6] Format: Ocial Schema name (Microsoft). Depending on the database version this can be case sensitive. 389

1.6 Physical table name

[7] Format: Ocial 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 + 1.8 Physical Foreign Key A + 2 digit sequence number start = 01(for each table)

[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 +Business Model Name + ) {* } +Business Model Name + ) {* }

Format Custom Display Name: VALUEOF(NQ SESSION.CN Format Custom Description: VALUEOF(NQ SESSION.CD {* } Only used for translated Repositories 1.2 Presentation Table Name

[3] Format General: For End User Logical Name VALUEOF(NQ SESSION.CN +Business Model Name + Business +Business Model Name + Business

Format Custom Display Name: Model Table Name + ) {* }

Format Custom Description: VALUEOF(NQ SESSION.CD Model Table Name + ) {* } {* } Only used for translated Repositories 1.3 Presentation Column Name 394

[4] Format General: For End User Logical Name +Business Model Name + Business +Business Model Name + Business

Format Custom Display Name: VALUEOF(NQ SESSION.CN Model Table Name + Business Model Column Name + ) {* } Format Custom Description: VALUEOF(NQ SESSION.CD 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 xes. 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 stu 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 nished 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 rst 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 prex part we rst select the size of the calendar control:

<link rel=stylesheet typetext/css href=./res/mooTools/mooECalLarge.css> or <link rel=stylesheet typetext/css href=./res/mooTools/mooECal.css> or <link rel=stylesheet typetext/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: #;>; } else { return <div style=background-color: #999900;color: #;>; } } nally 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 prex should look like this:

<link rel=stylesheet typetext/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: #;>; } else { return <div style=background-color: #999900;color: #;>; } } new Calendar( {calContainer:calBody, newDate:1/3/2007, cEvents:new Array( In the narrative part we ll the array: 400

{ title: getDiv(@3) +@4: + @5 </div>, start: @1, end: @2, location: } In the postx 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 rst 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 #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 #00FF00/></saw:visualFormats></saw:conditionRule>

color=

color=

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 rst 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 lter to request:

[2] Most manager won t be satised 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 lter 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 rst have to lock the revenue on a customer / year level:

[3] 409

[4] Okay that xed, 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 Muat (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 realistically. 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 rst 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 lter. 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 16-June-2010

Claimed By John Minkjan 413

4-July-2010 7-July-2010 27-July-2010 31-July-2010 24-August-2010 19-September-2010 27-September-2010 18-October-2010 17-November-2010 05-December-2010

Daan Bakboord John Minkjan Rich RMN1978 John Minkjan RMN1978 lost_in_space lost_in_space John Minkjan 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, CURRENT DATE) will give you the last day of the previous month... 2) TIMESTAMPADD(SQL TSI DAY,DAYOFWEEK(TIMESTAMPADD(SQL TSI DAY, (DayOfMonth(CURRENT DATE))*-1, CURRENT DATE))*-1,TIMESTAMPADD(SQL TSI DAY, (DayOfMonth(CURRENT DATE))*-1, CURRENT DATE)) will give you the Saturday prior to the last week of the month. TSI DAY,1,TIMESTAMPADD(SQL 3) TIMESTAMPADD(SQL TSI DAY,DAYOFWEEK(TIMESTAMPADD(SQL TSI DAY, (DayOfMonth(CURRENT DATE))*-1, CURRENT DATE))*-1,TIMESTAMPADD(SQL TSI DAY, (DayOfMonth(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/article/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 DONT 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 DOESNT 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-dierentiateadvanced-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. 2. http://www.perceptualedge.com/blog/?p=637 http://blogs.forrester.com/business_process/2009/11/ how-to-differentiate-advanced-data-visualisation-solutions.html

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 rst article. Next change the code to: [code] <script type=text/javascript> var allHTMLTags = new Array(); onload=function() { if (document.getElementsByClassName == undened) { 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 o-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 le location:

[5] It s saved as a tab delimited le. 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 rst one who can tell where the developer should report rst 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-againnochmal.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 stu& 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 ne:

[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 ne 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 eight:30px; [/code] Check the results: 427 oracle10/answers/abbcompound.gif);background-repeat:no-repeat;h

[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 rsts to answer: If you are using xed 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 specic 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 its 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 stu 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/les/oracle bi sample analysis setup les.zip Any restrictions?

It has to t a 1024 x 768 screen. All CSS / Javascript changes have to be from the dashboard page, not the webserver. 428

You cant use external graph engines (FI: Google Charts or Maps) Everything has to work under the repository Administrator account Its 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 : 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 rst 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 ocial 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 qualied names: Goto Tools > Options > General and check the Display qualied names box:

[2] And presto you will have the qualied 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.
agreements5.jpg

http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdNwsNMHI/AAAAAAAACoI/5chTEsehUNk/s1600-h/report_

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. 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. 15. 16. 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 http: http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hdZOB2EtI/AAAAAAAACp4/9ZacQuGf50E/s1600-h/report_cautionary_ http: //lh6.ggpht.com/_qd3TDEvIh4Y/S_hdYezwv8I/AAAAAAAACpw/eXEt8rz1EHM/s1600-h/report_cautionary_progress2.jpg percentage2.jpg //lh3.ggpht.com/_qd3TDEvIh4Y/S_hdZ9LjhYI/AAAAAAAACqA/EknTzALrbNQ/s1600-h/report_cautionary_value2.jpg http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hdU9Bv_eI/AAAAAAAACpI/IKD2hq6v6Xw/s1600-h/report_bad_percentage2.

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. 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. 30. jpg 31. 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. 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. 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. jpg 54. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hd0kLYqsI/AAAAAAAACuw/lbQNPAJRxN4/s1600-h/report_medicalResearch5. jpg 55. gif 56. 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 http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hd2EiwrhI/AAAAAAAACvA/KhX9b-hPJNI/s1600-h/actuateroxlarge%5B2%5D. http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hd1blJCtI/AAAAAAAACu4/ALdMW1O6mlI/s1600-h/actuateroilarge%5B2%5D. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hd0MwkSYI/AAAAAAAACuo/isCa2p1LLws/s1600-h/report_win_lossDeals2. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdvOuI8PI/AAAAAAAACtw/ZgVZwCCE5cw/s1600-h/report_serviceRequest2. http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hdqoRe3JI/AAAAAAAACtA/Ztxb3I67h1Y/s1600-h/report_reportsCatalog2. http://lh6.ggpht.com/_qd3TDEvIh4Y/S_hdk8wa8uI/AAAAAAAACr4/MbgOX5mfE8s/s1600-h/report_investigative2. http: http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdkcC2CMI/AAAAAAAACrw/GozwDK6kSWc/s1600-h/report_insuranceClaim2. //lh3.ggpht.com/_qd3TDEvIh4Y/S_hdjhyE3kI/AAAAAAAACro/SDwkLf_idb4/s1600-h/report_insurance_Policy2.jpg http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hdgdjiEDI/AAAAAAAACrA/OrxMJuPvbPY/s1600-h/report_good_progress2.

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. 70. 71. 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 http://lh3.ggpht.com/_qd3TDEvIh4Y/S_hd-Z_hweI/AAAAAAAACwo/VEq598qm0jA/s1600-h/europe_map_1color%5B3% http://lh5.ggpht.com/_qd3TDEvIh4Y/S_hd_A2og6I/AAAAAAAACww/JGlrvWibweM/s1600-h/europe_map_4color%5B3% http://lh4.ggpht.com/_qd3TDEvIh4Y/S_hd_-Bw5JI/AAAAAAAACw4/n10Lg5VEito/s1600-h/usa_map_1color%5B3%5D. 5D.jpg 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, A L TEX 2 & GNU/Linux. http://www.blogbooker.com Edited: July 9, 2010

Vous aimerez peut-être aussi