Top Banner
DATAWAREHOUSE BEST PRACTICES BUSINESS OBJECTS XI 3.0 1 | Page [email protected] What is BusinessObjects? BusinessObjects is a full-client decision support or business intelligence tool. It enables users to retrieve information from the corporate databases and to structure that information into sophisticated reports. What is InfoView? InfoView, which incorporates WebIntelligence, provides much of the functionality of full- client BusinessObjects. InfoView, however, is web based. To run InfoView all you require is an internet connection and a suitable web browser. InfoView will retrieve information from the corporate databases and structure it into web pages for browsing. It also includes the ability to refresh and display full-client BusinessObjects documents. To log into InfoView select InfoView on the index, then click the Log In button. BusinessObjects or InfoView: which tool do I use? InfoView (incorporating WebIntelligence) reproduces much of the functionality of full-client BusinessObjects, which prompts the question: do I use InfoView or the full-client package? When to use InfoView For general use, InfoView is preferred. There are a number of reasons for this which are summarised by the web-based nature of InfoView. Providing you have an internet connection and a suitable web browser, InfoView can be used to access the corporate databases on any computer, anywhere in the world - the full-client software does not have to be installed on the computer. Thus, InfoView can be used by MAC users. Also, it can be used when your computer is not connected to the MWS. When to use Full-Client BusinessObjects Full-client BusinessObjects can only be used when your computer is connected to the MWS and when BusinessObjects and the associated SQL*Net software is installed on your computer. If those conditions are not met, then it cannot be used. However, where it can be used it provides advantages over InfoView in the greater functionality it offers for the structuring and formatting of reports. When your proposed report is particularly demanding in this respect, for example using pre-printed stationery or adhesive labels, then full-client BusinessObjects is recommended.
18
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 1 | P a g e [email protected]

What is BusinessObjects?

BusinessObjects is a full-client decision support or business intelligence tool. It enables users to retrieve information from the corporate databases and to structure that information into sophisticated reports.

What is InfoView?

InfoView, which incorporates WebIntelligence, provides much of the functionality of full-client BusinessObjects. InfoView, however, is web based. To run InfoView all you require is an internet connection and a suitable web browser. InfoView will retrieve information from

the corporate databases and structure it into web pages for browsing. It also includes the ability to refresh and display full-client BusinessObjects documents.

To log into InfoView select InfoView on the index, then click the Log In button.

BusinessObjects or InfoView: which tool do I use?

InfoView (incorporating WebIntelligence) reproduces much of the functionality of full-client BusinessObjects, which prompts the question: do I use InfoView or the full-client package?

When to use InfoView

For general use, InfoView is preferred. There are a number of reasons for this which are

summarised by the web-based nature of InfoView. Providing you have an internet connection and a suitable web browser, InfoView can be used to access the corporate databases on any computer, anywhere in the world - the full-client software does not have to be installed on the computer. Thus, InfoView can be used by MAC users. Also, it can be used when your computer is not connected to the MWS.

When to use Full-Client BusinessObjects

Full-client BusinessObjects can only be used when your computer is connected to the MWS and when BusinessObjects and the associated SQL*Net software is installed on your computer. If those conditions are not met, then it cannot be used. However, where it can be used it provides advantages over InfoView in the greater functionality it offers for the structuring and formatting of reports. When your proposed report is particularly demanding

in this respect, for example using pre-printed stationery or adhesive labels, then full-client BusinessObjects is recommended.

Page 2: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 2 | P a g e [email protected]

@FUNCTIONS @Functions are special functions that provide more flexible methods for specifying the SQL

for an object. @Functions are available in the Functions pane of the Edit Select box for an object.

@Function Description Usually used in...

@Aggregate_Aware Incorporates columns containing aggregated and dimension data into objects

Select statement

@DerivedTable Eases building the SQL definition of derived tables Select statement

@Prompt Prompts user to enter a value for a restriction each time the object using the @Prompt function is included in a query.

Select statement Where clause

@Select Allows you to use the Select statement of another object. Select statement

@Where Allows you to use the Where clause of another object. Where clause

To insert an @function in the SQL definition for an object

1. Double click an object.

The edit properties dialog box for the object appears.

2. Click the >> button next to the Select box.

Or

Click the >> button next to the Where box.

The Edit Select statement or Edit Where clause dialog box appears.

3. Click in the Select statement or Where clause at the position where you want to add the @function. If the box is empty as above, click anywhere in the box.

The cursor automatically appears at the top left corner of the box.

4. Click the @functions node in the Functions pane.

The list of available @functions appears.

Page 3: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 3 | P a g e [email protected]

5. Double click a @function.

The syntax for the @function is added to the Select statement or Where clause. A description of the syntax appears in the Description box at the bottom of the dialog box. You can use this to help you type the parameters for the @function.

6. Type the necessary parameters. 7. Click the Parse button to verify the syntax. 8. Click OK in each of the dialog boxes.

@Aggregate_Aware

The @Aggregate_Aware function allows an object to take advantage of tables containing summary data in the database. If your database contains summary tables and you are running queries that return aggregate data, it is quicker to run a Select statement on the columns that contain summary data rather than on the columns that contain fact or event data. You can use the @Aggregate_Aware function to set up aggregate awareness in a universe. This process includes a number of other steps which are associated with the use of the @Aggregate_Aware function.

@PROMPTS

You can use the @Prompt function to create an interactive object. You use a @Prompt function in the Where clause for an object. It forces a user to enter a value for a restriction when that object is used in a query. When the user runs the query, a prompt box appears asking for a value to be entered. @Prompts are useful when you want to force a restriction in the inferred SQL but do not want to preset the value of the condition.

You can optionally define default values for prompts. A prompt containing default values behaves in the same way as a Web Intelligence prompt with default values. The syntax of the function is as follows:

@Prompt('message','type',[lov],mono/multi,free/constrained/primary_key,persistent/not_pe

rsistent, [{'default value':'default key'[,'default value':'default key',...]})

The syntax is described in the following table:

Syntax Description

'message' Text of the prompt message. The text must be enclosed between single quotes, for example, 'Choose a Region', 'Pick a time period', or 'Choose a showroom'. The text appears in the prompt box when the query is run.

'type'

Data type returned by the function. It can be one of the following:

'A' for alphanumeric 'N' for number

Page 4: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 4 | P a g e [email protected]

Syntax Description

D' for date

The specified data type must be enclosed in single quotes.

lov

List of values (optional). You can specify two types of list of values:

Hard coded list. Each value is separately enclosed in single quotes and separated by a comma. The whole list is enclosed in curly brackets. For example, {'Australia', 'France', 'Japan', 'United Kingdom', 'USA'}.

Pointer to a List of Values from an existing object. You invoke the target lov by double clicking on the object containing the lov that you want to use in the Classes and Objects panel. This gives the Class name and the Object name, separated by a backslash. It must be enclosed in single quotes. For example: 'Client\Country'.

mono User can select only one value from the list of values.

multi User can select multiple values from the list of values.

free User can enter a value, or select one from the list of values.

constrained User must select a value from the list of values.

primary key

Use the primary key parameter with "free" or "constrained". The user enters a value or selects from the list of values. If the primary key parameter is present, the entered or displayed value is not used to generate the query.

The associated key value from the Index Awareness column is used.

persistent When refreshing a document, the last values used in the prompt is displayed by default.

not persistent When refreshing a document, no values used is displayed in the prompt by default.

'default value':'key value'

The default values parameter is used to define default values presented to the user.

You can define multiple default values. The syntax for each default value is: „value‟:‟key‟. The colon (:) is the separator between the value and the key. When refreshing a document these values are displayed by default but if the persistent option is set, then the last values used in the prompt are used instead of the default values.

If you specify the primary key parameter in the prompt definition, then you must provide the key value(s).

Example

Country.country in @Prompt('Choose Customer

Country:','A','cusloc\country',multi,free,Not_Persistent,{ ' * ' },)

Prompt Persistence: Default value is “Persistent”; however, the value “Not_Persistent” is the

reason most Business Objects WebI report writers want to use this syntax. Using

“Not_Persistent” removes the last prompt used with the report; it purges the value. This

Page 5: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 5 | P a g e [email protected]

can be very important in many settings because it can be the difference between an end-

user accidentally running the report for some unwanted parameter value.

@Script The @Script function returns the result of a Visual Basic for Applications macro (VBA macro). VBA macros can only run in a Windows environment. You use the @Script function to run a specified VBA macro each time a query that includes the object is refreshed or run. Note: @Script is only supported with Designer and the client version of Desktop Intelligence or Desktop Intelligence Three-tier Mode. You are strongly advised to avoid using the @Script function for any use beyond the client version of Desktop Intelligence. It is not supported with the server version of Desktop Intelligence available in InfoView for Publishing or Scheduling Desktop Intelligence reports, and Web Intelligence. In the case of Web Intelligence, you should not use the @Script function, but stay with a simpler design using the @Prompt function for interactive objects. You would typically use a @Script function in a Where clause to run a more complex process than a simple prompt box (@Prompt function). VBA macros are stored in BusinessObjects report files (.REP). The default directory for these reports is the UserDocs folder in the BusinessObjects path, however, you can define any folder to store .REP files.

Syntax

The syntax for the @Script function is as follows: @Script('var_name', 'vartype', 'script_name')

@Where

You can use the @Where function to re-use the Where clause of another object. When the @Where

function is used in the Where clause of an object, it specifies the path of another object in the universe as a parameter of the @Where function, in the form Class_Name\Object_Name. This then acts as a pointer to the Where clause of the referenced object. Using the Where clause creates a dynamic link between two objects. When the Where clause of the original object is modified, the Where clause of the referencing object is automatically updated. Using the @Where function allows you to use existing code. This has the following advantages: • You have to maintain only one instance of the SQL code. • Ensures consistency of the code. When you use @Select and @Where functions, one object now depends on another in the universe. You have created a new object dependency. When one object is deleted, the other object using the @Select or @Where function needs to be manually updated.

Page 6: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 6 | P a g e [email protected]

Syntax The syntax of this function is the following: @Where(Classname\Objectname) • Classname is the name of a class. • Objectname is the name of the referenced object.

When you run a query with Resort Service Line, you are prompted to type the name of a resort. When you modify the Where clause for Resort, the change is automatically made in the Resort Service Line object.

@Select

You can use the @Select function to re-use the Select statement of another object. When the @Select function is used in the Select statement of an object, it specifies the path of another object in the universe as a parameter of the @Select function, in the form Class_Name\Object_Name. This then acts as a pointer to the Select statement of the referenced object. Using the @Select function allows you to use existing code, which has the following advantages:

- You have to maintain only one instance of the SQL code. - Ensures consistency of the code. -

Note: When you use @Select and @Where functions, one object now depends on another in the universe. You have created a new object dependency. When one object is deleted, the other object using the @Select or @Where function needs to be manually updated. The @Select function has the following syntax: @Select(Classname\Objectname) • Classname is the name of the class that contains the referenced object. • Objectname is the name of the referenced object.

Page 7: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 7 | P a g e [email protected]

@Variable

The @Variable function is used to call the value assigned to one of two types of variables:

Using BusinessObjects system variables You can use the @Variable function with BusinessObjects system variables to restrict data according to the identity of the currently logged in BusinessObjects user.

Note: To use the @Variable function with BusinessObjects system variables the BusinessObjects login parameters must be the same as the database login parameters. The User Name and Password assigned to each BusinessObjects user are held as the following BusinessObjects system variables: • BOUSER - the username • BOPASS - the password These two variables appear in the User Identification box when the user performs a logon to a Business Objects product. You use the @Variable function in the Where clause for an object to restrict data access for

a user and their database profile when the object is used in the query. Syntax The @Variable syntax with Business Objects system variables is as follows: @Variable('BOUSER')

Page 8: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 8 | P a g e [email protected]

You insert the @Variable on the operand side of the condition in the Where clause for an object from the Definition page of its Edit properties sheet. Example: @Variable

In the universe for a human resources database, you have an object called Employee name. You want to restrict the returned data for Employee name to the values authorized in the database for each user. This ould allow you to control what employee information each user is allowed to see. This information is defined by their database profile. You insert the

@Variable function in the Where clause as follows: Employees.Employee_Name = @Variable('BOUSER')

REPORT PERFORMANCE

What is an unbound report?

With the migration to the Business Objects XI platform many things changed. One of these changes was the method used to connect (or bind) documents to universes. In BOXI reports and universes are primarily and securely bound to each other through a set of unique identifiers of the objects: CUID and Object ID. If a report loses this relationship to its universe we call it and “unbound report”.

What causes a report to become unbound from its universe?

The basic event that occurs causing a report to become unbound from its universe is that the unique identifier of the universe is removed from the system. Some of the actions that remove this unique identifier may seem rather innocuous, but they can all be potentially deadly to your reports:

1. Deleting a Universe:, but it is the most obvious and it actually has a few variants 2. Replacing a Universe Using Designer: Many people use Designer to migrate

universes from a development environment to a production environment. If during export you are prompted to “overwrite” a universe and you accept. If you quickly delete the original universe and then upload the new one, same story.

3. Improper Use of Import Wizard: The “Merge” option causes so much trouble because it is not understood properly by many. If you use this or even if you use the much preferred “Update” option and you see that a new universe named with a “(2)” suffix was created, you haven‟t ruined your report binding yet, but you next actions might. You must manually bind each report to the new universe with the “(2)” using the Java Report Panel to transfer the binding and make it safe to remove the old version of the universe. Failure to do this will fill your day with regrets.

Page 9: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 9 | P a g e [email protected]

Unrecoverable Error - Error: WIS 00501

If your report cannot locate a universe, even with using the hidden short name stored in the report‟s meta data then this is the error you will see:

Refreshing Data Universe not found. See your Business Objects Administrator. (Error: WIS 00501) (Error: INF )

There are certain rules, tried and true practices, that you always try first before you call someone. In IT the first one is restarting an application and the second one is rebooting the computer. After those two, the order becomes debatable.

How do I clear the browser cache?

In Mozilla FireFox follow these instructions: In the drop-down top menu navigate as follows: Tools > Options > Privacy (tab) > Clear Now (button) or just Tools > Clear Private Data

Make certain that "Cache" and "Authenticated Sessions" are selected, the other options are up to you if you want to include them. You may want to add "Offline Website Data" too.

Page 10: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 10 | P a g e [email protected]

For Internet Explore follow these instructions: In the drop-down top menu navigate as follows: Tools > Internet Options > Delete Files (button) I usually select to delete off-line content too.

Page 11: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 11 | P a g e [email protected]

Sometimes You Need to Dump the Java Cache Too

There are times when the Java Query Panel won‟t load or it misbehaves on the client.

Instead of wasting time debugging or wishing you had “Full Client” back, just dump the Java Cache. Here is how to do it in my current Java version:

Open the Java Control Panel by looking in your PC's control panel or by double clicking the Java icon in your system tray. On the "General" tab click the "Settings" button. Click "Delete Files". You could also click the "View" button and then hand pick the BO related applications, resources, or deleted applications that you want to dump. Be aware that the next time you access java web components, such as the java query panel, expect the initiation to take some time.

Page 12: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 12 | P a g e [email protected]

Use Web Intelligence (WebI) Java Report Panel Structure View

Many new BO WebI users, especially former “full-client” users, complain about how slow and inefficient it is to develop reports on WebI.

BO WebI Client Server Relationship

Business Objects XI WebI is a web application that depends on the web server and CMS repository for quite a few things. This is not a stateless web application. Initially the server provides the editor, GUI, parser… to the client. Once the editor application (a.k.a. Web Intelligence Java Report Panel) loads locally the server maintains a constant communication channel with the editor. The WebI Java Report Panel starts by default in the “Results Viewer” mode.

Page 13: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 13 | P a g e [email protected]

What is the “Results Viewer” / “View Results” mode?

The results viewer mode of WebI is the complete WYSIWYG (What You See Is What You Get) mode of Web Intelligence. It present the report almost exactly as it will appear to end-

users (there are a few differences). Complete communication with the BO server is required in order to generate the WYSIWYG view as it applies all formatting, filtering, aggregation, and calculating on the report‟s variables and the query‟s results. All of this means that EVERY change made to the report while in “View Results” or “Results Viewer” mode will require communication to and from the server and this will make editing the report VERY slow.

WebI Java Report Panel’s Structure View to the Rescue

What is surprising to many is that certain mundane actions that normally would not even register with the server do require server processing when executed in the default “Results View”, but not in the “Structure View”! To switch to the “Structure View” click on the button labeled “View Structure”. This will switch you to a template of the structure of the report you are building. Now changing fonts, cell shading, column order, header titles, cell contents and much much more become instantaneous. Most of the changes you make to the report are cached on the local client; this explains the new found speed.

Additional Advantages of the Structure View

The structure view also allows you to view and easily manipulate certain elements of the report better than the “results view”. For example, table footers can be quickly accessed and section within the report are represented with gray lines that mark their beginning and end. A cell‟s object(s) or variable(s) can also be immediately visually identified in the structure view as well.

A Disadvantage of the Structure View

All of the speed of the Java Report Panel Structure View is because server communication is reduced to the minimum. This minimal level of communication means that most report formatting actions and several common report editing actions are not communicated to the server at all. this means that the server is not being reminded that you are working hard on your report and it is certainly not saving those wonderful changes you are diligently working

on.

BO InfoView WebI Session Timeout

Business Objects has been encouraging report writers/developers to stop using the “full-client” and start using WebI. There are quite a few obstacles to overcome to be able to make the switch to WebI (training, functionality adjustment, server capacity planning, etc.), but perhaps the most difficult adjustment is learning to development under a timed session.

For many reasons Business Objects administrators configure their systems to timeout a web session and an InfoView session after a certain period of inactivity. With finite resources, which we all definitely have, this is always a good idea. However, this limiting concept has

two problems. The first issue is that “full-client”, ZABO, or Desktop Intelligence developers

Page 14: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 14 | P a g e [email protected]

are used to working in a virtually limitless development environment: their own desktop PC. The second problem is that system adminstrators need to find just the right balance between flexible the valid and acceptable dormant session limits and the obvious session abandonment.

Business Objects Administrator Settings

When Business Objects system admins find that magical median, which will be different for every user community, they need to set it at a few different places:

1. The web server “connection timeout” setting should be increased first. This one is usually stored in seconds, not minutes.

2. The InfoView application within the web server should also have its “Session Timeout” value increased.

3. The web.config file also needs an update to the “” section, setting “” (using the number of seconds in place of the “#” character.

BusinessObjects Report Developer Adjustments

Report developers or writers, including ad-hoc report writers, will need to adjust their methods and habits. Initially, business objects report developers will assume that as long as they save before any periods of inactivity they are safe. However, they will face the harsh

facts of this assumption if they are working on the query the whole time.

In BO XIR2 editing the query of a Web Intelligence report does not reset the session timeout timer. Therefore it is entirely possible for a developer to be actively developing a report‟s query and find that their session is lost, along with all of their work. In fact, in the WebI java editor panel there are many actions that are registered only on the client and they are not communicated to the server until a logging action takes place such as saving a document. Among these actions you may find general formatting, query editing, and even adding fields to a report.

The safest bet is to require all of your report developers to develop a habit of saving their report every 5 minutes. This will certainly reset the timeout timer and it will ensure that no report development work is lost. I have probably lost about 10 to 20 hours of work because

of lost session.

Page 15: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 15 | P a g e [email protected]

Business Objects Query Builder

Business Objects Consultants use Query Builder quite often. It can provide the most pure, accurate, and rapid information about your BO repository

The loss of binding between reports and universes is a common problem experienced by BO XI users. The best tool for detecting of Report-Universe Binding Status is Query Builder. there is no third part tool or BO utility for this other than Query Builder, but honestly,

Business Objects Query Builder Query: Universe Binding Status

This query brings back a limited set of properties for the desired universe.

SELECT si_id, si_name,

si_webi, si_cuid FROM CI_AppObjects WHERE ( si_name = '„ OR si_id = ) AND si_kind = „Universe‟

You need to put in the universe name (upper or lower case is not important) or the Object ID of the universe (most people are more familiar with name, but object ID (si_id) provides more precise results. From this query we will see only the reports to which this universe is bound. It won‟t list the reports to which it should be bound. The report name nor the report‟s query name are given here, but the reports si_id or object ID is given here. And so you my need to do some additional queries to identify the reports listed here. Which leads us to the other way to start looking at this issue.

Business Objects Query Builder Query: Report Binding Status

For many people this is the query they will lead with in QueryBuilder. Usu SELECT si_id, si_name, si_universe, si_cuid FROM CI_InfoObjects

WHERE ( si_name = '„ OR si_id = OR si_parentid = ) AND si_kind = „WebI‟ AND si_instance = 0 Using the query will require you to provide at least one of the following: report name (si_name), report object ID (si_id), or parent folder object ID (si_parentid). This query‟s result will list all of the universes to which the report(s) is/are bound. How can a report be

Page 16: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 16 | P a g e [email protected]

bound to more than one universe? Multiple queries in the report (also called the classic name of “data providers”). This fact makes this query the most important query in my opinion. If it fails to list an expected universe then you have identified and unbound report.

What does an Unbound Report Look Like in Query Builder?

The following image show what the report Query Builder query looks like when a report is showing that it is bound to its universe (just a single universe in this example):

Query Builder output of a report properly bound to its universe

In the rather unfortunate case that a report is not bound to its universe you will see output

that looks like this:

Query Builder output for a report not bound to ANY universe

Note:This query will return only WebI or Web Intelligence reports. You will need to modify it

if you are interested in other reports in your CMS InfoStore.

A Note About the Query Builder “si_universe” Property

Many properties in Query Builder are compound in nature, meaning they have multiple values for a single object. For example and report can have multiple universe and in fact its si_universe property has multiple sub-properties (si_total and the universes‟ object IDs). We call properties like si_universe property bags. The unfortunate fact here is that in Query Builder you cannot filter on a property bag. Therefore, you cannot create a query that only returns all of the unbound reports.

What about the CUIDs?

The relationship between reports and universes is really at the CUID level and not the Object ID level. Well, the truth is that Object IDs are specific to an environment, but CUIDs

are portable between environments (with the write methods). Anyway, Query Builder and the CMS InfoStore will show the binding at the Object ID level, but this binding will look different in another environment to which you have correctly and successfully migrated the report and universe because the Object IDs will be different (but the CUIDs will be the same). Anyway, for now, just know that the CUID is very important with regards to report-universe binding; however, when detecting the status of that binding they are not important.

Page 17: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 17 | P a g e [email protected]

Important Note about Business Objects’ Import Wizard

It is possible to use Business Object‟s Import Wizard to detect unbound reports. If you select a report and the option to automatically select its universes then if Import Wizard

fails to select all of the expected universes you know that the report is in an unbound state.

Query Builder - Active User List

Sometimes you can‟t get Business Objects‟ Central Management Console (CMC) to return the “Metrics” page and you need to know how many users are logged in to the system. Other times the CMC “Metrics” page works, but in the case of system administration, you may want to know who is logged in to your Business Objects XI CMS InfoStore. In either

case, SELECT TOP 3000 * FROM CI_SystemObjects WHERE si_kind = 'Connection' AND si_parent_folder = 41 AND

si_authen_method != 'server-token' ORDER BY si_name About the Query

This query returns all of the information available in the CMS InfoStore for all users that are

currently logged in. The results are presented alphabetically by user name.

IMPORTANT NOTE: the results will not be filtered by distinct user; therefore if a user account is used by multiple people or multiple applications are used you can expect to see multiple logins. The field si_lastlogontime might be useful in making sense of multiple entries.

Page 18: @Functions

DATAWAREHOUSE BEST PRACTICES

BUSINESS OBJECTS XI 3.0 18 | P a g e [email protected]

Query Performance Concerns: Indexed Properties

It is important to remember that you are still querying a database and certain portions of that database have been indexed for improved performance in Business Objects. For

improved performance use these in your query‟s selection criteria (WHERE clause):

SI_CUID

SI_GUID

SI_HIDDEN_OBJECT

SI_ID

SI_INSTANCE_OBJECT

SI_KIND

SI_NAME

SI_NAMEDUSER

SI_NEXTRUNTIME

SI_OWNERID

SI_PARENTID

SI_PLUGIN_OBJECT

SI_RECURRING

SI_RUID

SI_RUNNABLE_OBJECT

SI_SCHEDULE_STATUS

SI_UPDATE_TS

SI_INSTANCE

Optimizing Query Builder Queries

Query performance is improved by using indexed properties in your selection criteria (WHERE clause); however, the order of these can additionally optimize your query‟s performance. All selection criteria with indexed properties should be placed first in the WHERE clause. The BusinessObjects Enterprise CMS InfoStore, and therefore Query Builder, processes queries from top to bottom and left to right. Therefore the selection criteria should also be ordered from the most restrictive to the least restrictive. For example, SI_NAME = „My Report‟ should be place before SI_KIND = „WebI‟ in the query. For example:

SELECT si_id, si_name, si_universe, si_cuid FROM CI_InfoObjects

SELECT * FROM CI_InfoObjects WHERE si_id != ALL si_parentid

SELECT * FROM CI_InfoObjects WHERE si_children >= ALL si_children