Tuesday, February 8, 2011

Use of Information and BI Maturity Levels


This is a redesign of a chart I came across, a chart that reminded me the state of BI we are in.
The original chart can be found at the excellent book “The Profit Impact of Business Intelligence”.
The aforementioned book is not a tech savvy’s choice. Its oriented towards BI project managers and for anyone who wants to create manage and leverage the BI asset on his organization.

The majority of organizations out there at level1 and struggling to move to the next league. This opens a window for opportunity that enterprises can reap in order to outperform competitors.  Unfortunately this is not the case. Most of the BI initiates are being seen as the poor relevant of the ERP/OLTP system. There is a lack in communicating the real profit of BI to the business stakeholders. Further more its gains are indirect and business process change is required in order for BI to shine in the IT portfolio.
 
Level1
It’s the most common Maturity stage. Indeed the majority of the BI initiates are just delivering information specified by the end users in a managed way.  There is no direct tie between information provided and decisions taken.
This is nothing more than a mere improvement at the process of delivering information prior the BI implementation.

Level 2
At the next level the company must provide a context of information rather than a simple list of required fields. That is we must seek why the information its being requested by the end-user community. By promoting the question “Why we need this kind of information” we can discover flaws to the process or to the information provided.  The major difference between level 1 and level 2 is that Level 2 leverages ROI by aligning supported processes and the Information provided by the BI environment.

Level 3
Based on the previous level the organization leverages the BI asset. This is the stage at witch process restructure take place. At this level we must ask how the information its being used by the end-user community. That means decisions are structured and standardized based on information rather than intuition based on the corresponding user. 

Friday, February 4, 2011

Excel Reports Formater

I have made a simple utility, that formats all reports in a folder (and) sub-folders as well. The purpose of this command line utility is to make the report width adjusted for printing.
It is written on VB .NET 2008 using express (Free) edition.
The BORF (Business Objects Report Formater :-) ) is taking 3 arguments

1. Target Path (e.g C:\Business Objects Pubication\ )
2. File pattern (e.g *.xls )
3. Include Sub-directories (Y/N)
Arguments are separated by space e.g:

BORF C:\temp *.xls Y

In the particular project we have a publication of around 1000 reports as XLS. Managers wanted the reports ready for printing. That is one button print without any modifications at the provided excel files.
Codding its not my forte so don't be harsh on me :roll:
Feel free to check it and provide changes.

Download From BOB Forums

p.s: I have combined the above with an excellent renaming utility in order to get rid of the instance ID on the published documents name. The command line utility BRC its free and can be found here http://www.bulkrenameutility.co.uk/Command.php

Sybase IQ: How to alter the size/type of an existing column


Sybase IQ does not support alter table with change column data type functionality. I don’t know if this is the case with the new version (15). If you are using a version prior 15 you must do the following:
  • First create a table similar to the source but with updated the column to the new data type.
                create table tmp_old_table_name 
                /* unchanged column definitions here */ 
                , old_column  new_type 
                ;
  • Then we must copy the contents of the original table to the newly created one.
                insert tmp_old_table
                (/* column list here */)
                select /* column list here */
                from old_table
                ;

  • Now that the data's there, create any other indexes you want.
                create index extra_index /* blah blah */
                ;
  • Drop or rename old table to backup
                drop table old_table
               
;
  • Rename new table to old table name
                sp_rename tmp_old_table, old_table
                ;

Tuesday, January 25, 2011

Monday, January 24, 2011

Faster WEBI XI Reports

::
:: Faster WEBI Reports ::
::

<< Universe Level >>

* Modifying the Array Fetch parameter (advanced parameters window of connection. Just edit connection in Universe and click twice Next. or we can control this parameter in CS.CFG file. Bigger number = faster query but it should be set up according to capacity of memory)
* Allocating table weights
* Using shortcut joins
* Using aggregate functions
* Creating and using aggregate tables
* Minimizing usage of derived tables

<< Report Level >>

* If you insert the Page Number/TotalNumberOfPages cell or the TotalNumberOfPages cell into a large report with many pages, Web Intelligence takes longer to return the data to the report.
* Opting for Refresh At-Will over Refresh-On-Open
* Not associating the List of Values (LOV) Objects which you don't want to use as a prompt
* Using universe Condition Objects, try to restrict/filter the data at universe end rather than at the report end.
* Keeping Complex Calculations at universe side.
* Minimizing usage of Report variables/formulas
* Auto height and auto width on report cells sucks in resources. setting cell sizes to fixed increases performance.

<< CMC Level >>

* Increasing Maximum Allowed Size of cache (CMC / servers / service categories / webi / Properties of webiprocessing server / Maximum Document Cache Size (KB) <<---- increase the default!!!)
* Increasing Minutes Before an Idle Connection is closed
* Increasing File Polling Interval in seconds
* Adjust Connection timeout, keep it as small as possible (webi report server attribute)

<< Config File Level >>

* freeing up unused system resources
keep the session time out as small as possible (default is 20 mins)
--XIR2--
for Java: web.xml file found here:
"..\Tomcat\webapps\businessobjects\enterprise115\desktoplaunch\WEB-INF\web.xml"
by changing the <session-timeout> 20 </session-timeout> entry.
--XIR2--
for .NET: web.config file found here:
"..\Business Objects\BusinessObjects Enterprise 11.5\Web Content\Enterprise11\InfoView\Web.config"
by changing the timeout=" 20 " entry.

* Changing the SQL works for specific RDMBS.
By default, Business Objects (Ver 4.1.3 Onwards) sorts the tables in the
‘from’ clause in ascending order of the row count i.e., the table with
minimum number of rows is placed at the beginning. Sybase uses the same order as Business Objects and so there is no effect on performance. But Oracle sorts the tables in descending order of the row count. So the table with maximum number of records is placed at the beginning. Oracle's rule-based optimizer looks at the order of table names in the FROM clause to determine the driving table. For optimum SQL execution in Oracle, the ‘from’ clause should be in order from largest to smallest which is the reverse order of that of BO and so affects the performance of the BO reports.Resolution: Table weight is a measure of number of rows in a table. To change the default Business Objects settings, the ORACLE PRM file must be modified as below:
• Browse to directory Business Objects\BusinessObjects Enterprise
XI R2\dataAccess\RDBMS\connectionServer\oracle.
• Open ORACLE.PRM file, change the REVERSE_TABLE_WEIGHT
value to N from Y.
Snippet from oracle.prm file:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE DBParameters SYSTEM
"../dbparameters.dtd"><DBParameters>
<Configuration>
<Parameter Name="REVERSE_TABLE_WEIGHT">Y</Parameter>
<Parameter Name="BACK_QUOTE_SUPPORTED">Y</Parameter>
<Parameter …
The SQL from clause of all Business Objects reports is now reverse weighted, largest to smallest rows (refer ‘After’ in figure 2.2). Now both BO and Oracle uses the same sort order and so the BO Report takes less than 10 seconds to open.

<< Server Level >>

Horizontal and Vertical Clustering. Load Balancing and Failover.

<< Hardware Level >>

Better hardware. All BOE related servers & DB Servers within the same LAN --if possible--. Gigabit Connections between servers. DB and BOE Servers on physically separate machines.

<< User Requirement Analysis >>

Stick to 6Sigma --if budget allows--. Rest of the approaches are destined to fail.

<< DW Background >>

Learn Datawarehousing methodology. There are many exchellent books on the subject.


<< Other >>

for .NET in IIS minimize the idle time out. (Application pool with Infoview, Properties, Edit the Shutdown worker processes after being idle for (time in minutes): on the Performance tab). Restart IIS, Webi App server, and Webi Rep server.



You can check the full thread at http://www.forumtopics.com/busobj/viewtopic.php?t=155190

Friday, December 10, 2010

CMS starting before repository database


In order to avoid starting CMC before repository DB at XIr3.1 Sp3 do the following


Open “Central Configuration Management”

Stop "Server Intelligence Agent" Service



Go to Server Intelligence Agent’s properties


 Add the relative repository DB




Start  "Server Intelligence Agent" Service

Monday, November 15, 2010

Publication in BOXIr3 using dynamic recipients

The requirement is for a report to be refreshed once and distributed to non BO users. The distribution is going to be performed using the file system and one report, in PDF form, per recipient is going to be created.
Moreover the aforementioned reports are going to contain  filtered data in a way that every recipient sees only his corresponding data.
In other words report bursting (almost) made simple using XIr3 SP3

OK first thing first. We need to create our test source report. This is going to be the mother of all reports! Lets use the infamous e-fashion to display sales per year, month and state.


We need to create a separate report for each state including filtered data, for the corresponding state.
Its time to create a report that provides the recipients, in this situation we need a report per state thus we must create a report that contains States.

 
Finally its time to put them together and create our publication
Click on New-> Publication
Give a name and  source report to the report list
Click on dynamic recipients and select the second report (the one with states only)
Click on profile 
Select the Dimension you want to filter, State in this case.

Assign a local profile variable, State again.



Don't forget to select "Deliver objects to each user". Otherwise variables %SI_USER% is going to be the creator of the publication and not the recipients.

Select PDF destination and schedule.