Vous êtes sur la page 1sur 96

Schmidt Ink, Inc.

Creating Universes with Business Objects XI Copyright 2006 Robert D. Schmidt

Trademark Disclaimer

Trademarks referred to within this presentation are the property of their respective trademark holders.
These trademarks include, but may not be limited to Business Objects, Web Intelligence, Desktop
Intelligence, and Designer. Business Objects is not affiliated with Schmidt Ink, Inc., our products, or our
website.

Copyright Notice

This presentation is copyrighted by Robert D. Schmidt 2006, 2007. It is intended for viewing by the purchaser
of the book Business Objects XI: Creating Universes with Designer XI. Any unauthorized duplication or
distribution is in violation of the federal copyright laws.

To obtain rights for any duplication, please contact Robert D. Schmidt at RSchmidt@Schmidtink.com.
Schmidt Ink, Inc.
Creating Universes with Business Objects XI Copyright 2006 Robert D. Schmidt

Chapter 1: Build a Basic Universe

In this chapter, we are going to build a one table universe with no


condition objects. We will define our connection, insert a table, and
then create objects from the fields in the table. We will be able to
create queries with this universe in any application that uses
Business Objects Universes. In fact, this is how we test the universe
to make sure that it is working. If all of our universes were to use
only one table, then this chapter, and the next chapter, would be all
we need to create professional universes.

One Table Universe


Create a ODBC Data Source

1 Name the data source and select server 2 Assign the Login type and values

3 Assign the Login type and values 4 New DSN in System Data Sources
Using Windows NT Network Login ID

Hard-coded User Name and Password Windows NT using the Network Login ID

Users seen in Database Users seen in Database


bo_service rschmidt
bo_service ctimmons
bo_service lrichards
... ...
Start and Login to Designer

Desktop Icon

User Identification Dialog


The Quick Design Wizard - Quick Universe Design?

Quick Design Wizard


Universe Parameters - Definition

Universe Parameters Dialog


Define a New Connection

1 Displayed After Clicking New... 2 Select Middleware

3 Login Parameters
Define a New Connection (Continued)

4 Test the connection 5 Advanced Parameters

6 Custom Parameters
Saving a Universe

Default File Location

1 Select |File| |Save| or |File| |Save As|

2 Name the File and Click Save


Universe Parameters (Continued)

Summary Strategies

Controls SQL
Universe Parameters - Links and Parameters

Links Parameter

Parameters in Dialog DISTINCT_VALUES


ANSI92 END_SQL
AUTO_UPDATE_QUERY EVAL_WITHOUT_PARENTHESIS
BLOB_COMPARISON FILTER_IN_FROM
BOUNDARY_WEIGHT_TABLE FIRST_LOCAL_CLASS_PRIORITY
COLUMNS_SORT FORCE_SORTED_LOV
COMBINED_WITH_SYNCHRO MAX_INLIST_VALUES
CORE_ORDER_PRIORITY REPLACE_COMMA_BY_CONCAT
CORRECT_AGGREGATED_CONDITIONS_IF_DRILL SHORTCUT_BEHAVIOR
CUMULATIVE_OBJECT_WHERE THOROUGH_PARSE
DECIMAL_COMMA UNICODE_STRINGS
The Designer Workspace

Tool Bars

The Classes and Objects


(Universe)pane. This is
where we create the
objects that people will
use to create queries Structure pane where we
from our universes will define our universe
structure. This is where
we add tables and views,
and define their
relationships

Status Bar

The Designer Application


Table Browser

Table Browser Button

Our First Table


Viewing Table and Column Values

Table Values

Number of Rows Displayed


Default Classes and Objects

Classes and Objects Made From Table

Class Folder Dimension Object


Organizes objects in the Universe Defines contexts in a report
Helps to organize Contexts in the Universe Allows queries to be linked (merged) in a report
No two Classes can share the same name Not compatible with unlinked dimensions from other queries
Can be used to define filters in reports
Can be used to create Master-Detail (Section) reports
Can be used to define breaks in a table
Automatically aggregate to unique values in a table
Usually the proper nouns in the company
Examples: Employee ID, State, Product, Department,...
Dimension Properties

Definition tab of Edit Properties Dialog


Edit Formula in Formula Bar

Edit Object Name in Place

Properties tab of Edit Properties Dialog


List of Values

Query Panel for Editing and Building List of Values

List of Values Dialog


Exporting a Universe

Export Universe Dialog

| File | Export |
Default Object Behavior

3 Data Manager from Desktop Intelligence


1 Launch Desktop Intelligence from Designer

2 Query Panel from Desktop Intelligence 4 Default Table Behavior


Measure Object Definition

To turn The Sum


Numshares function
into a usually sets
measure, add the object
the Sum Qualification
function to to Measure
the Select on the
Properties tab.

Measure Object
Conforms to contexts in a report
If defined with aggregate function, causes a Group by
The Group by summarizes queries by aggregating data
Does not have to be linked to other queries to be compatible
Creating a Measure

Edit Properties Dialog Edit Properties Dialog

Sum(@Select(Portfoliotransactions\Price) * PORTFOLIOTRANSACTIONS.NUMSHARES * (-1))


Or
Sum(@Select(Portfoliotransactions\Price) * @Select(Portfoliotransactions\Number of Shares (Dem)) * (-1))

Revenue is
created by
multiplying
Price by
Numshares
Creating Counting Measures

Edit Properties Dialog for Num Transactions Edit Properties Dialog for Number of Companies

Count( ALL PORTFOLIOTRANSACTIONS.TRANSID ) Count( Distinct @Select( Portfoliotransactions\Ticker ) )


The ALL The Distinct
Keyword causes keyword causes
the Count to the Count to
return the count count only
of all Non-Null unique
Values Non-Null values
Automatic Time Hierarchy

Automatic Time Hierarchy Dialog

Automatic Time
Hierarchy Objects

Automatic Time Hierarchy Button

Formulas for Automatic Time Hierarchy Objects


Year: {fn year(PORTFOLIOTRANSACTIONS.TRANSDATE)}
Quarter: datepart(qq,PORTFOLIOTRANSACTIONS.TRANSDATE)
Month: {fn month(PORTFOLIOTRANSACTIONS.TRANSDATE)}

Formula Templates in the sqlsrv.prm File


<DateOperations>
<DateOperation Name="YEAR">{fn year($D)}</DateOperation>
<DateOperation Name="QUARTER">datepart(qq,$D)</DateOperation>
<DateOperation Name="MONTH">{fn month($D)}</DateOperation>
</DateOperations>
Explicitly Creating the Time Hierarchy

DatePart to Create Year Object DateName to Create Month Name Object

Message When Wrong Type

Object Formula Type


Trans Year DatePart( yyyy, @Select(Portfoliotransactions\Trans Date)) Number
Trans Quarter DatePart( q, @Select(Portfoliotransactions\Trans Date)) Number
Trans Month Num DatePart( m, @Select(Portfoliotransactions\Trans Date)) Number
Trans Month Name DateName( mm, @Select(Portfoliotransactions\Trans Date)) Character
Trans Day Name DateName( dw, @Select(Portfoliotransactions\Trans Date)) Character
Preformatting Object Output

DatePart to Create Year Object

DatePart to Create Year Object

Transdate Mmm dd, YYYY Sep 03, 2006


Trans Quarter 0 3
Trans Month 0 11
Number of Shares 0 230
Revenue #,##0, (#,##0)[RED], 0, 0 2,300 or (2,300)
Num Transactions #,##0, (#,##0), 0, 0 5
Number of Companies #,##0, (#,##0), 0, 0 10
Checking the Universe Integrity

Integrity Check Dialog

Select Check Integrity

Integrity Check Results Dialog


Edit Properties Dialog for Num Transactions
Our Universe, So Far...

Integrity Check Results Dialog

Our Universe

Object Qualification Formula


Trans Year Dimension DatePart( yyyy, @Select(Portfoliotransactions\Transdate))
Trans Quarter Dimension DatePart( q, @Select(Portfoliotransactions\Transdate))
Trans Month Num Dimension DatePart( m, @Select(Portfoliotransactions\Transdate))
Trans Month Name Dimension DateName( mm, @Select(Portfoliotransactions\Transdate))
Trans Day Name Dimension DateName( dw, @Select(Portfoliotransactions\Transdate))
Num Transactions Measure Count( ALL PORTFOLIOTRANSACTIONS.TRANSID )
Number of Companies Measure Count( Distinct @Select( Portfoliotransactions\Ticker ) )
Revenue Measure Sum(@Select(Portfoliotransactions\Price) * PORTFOLIOTRANSACTIONS.NUMSHARES * (-1))
Number of Shares Measure Sum(PORTFOLIOTRANSACTIONS.Numshares)
Testing the Universe

Query Panel in Desktop Intelligence

SQL Query Analyzer to Test Query Results Table Created in Desktop Intelligence
Schmidt Ink, Inc.
Creating Universes with Business Objects XI Copyright 2006 Robert D. Schmidt

Chapter 2: Conditions in Our Universe

In this chapter, we are going to learn how to create


conditions in our universe. Conditions that are
defined at the universe level make our universes more
friendly and complete. People appreciate having a
variety of conditions to use in their queries.

While universe-defined conditions are convenient for


people to use in their queries, it is also important to
note that some universe-defined conditions can not be
created on the query side and must be defined in the
universe.

In this chapter, we will also learn to create a variety of


conditions, including prompted conditions that
prompt for user input when a query is refreshed and
subquery conditions that allow us to use a summary
condition that is separate from the main query.

This chapter is called Conditions in our Universe.


However, it is important to note that these conditions
are also known as Query Filters in WEB Intelligence.
We will continue to call them conditions throughout The @Prompt Funtion is Found in the @Functions Section
this book.
Conditions Defined

Opps, forgot to place


conditions on a query!

Reports with No Conditions are Overwheming


Creating Conditions

To access the Conditions pane in the


Designer, click on the Yellow Filter Funnel
located beneath the Classes and Objects
(Universe) pane.

Edit Properties Dialog Edit Condition Dialog


Creating Prompted Conditions

Edit Condition Dialog for Company Ticker

The @Prompt Funtion is Found in the @Functions Section

@Select(Portfoliotransactions\Ticker) IN @Prompt('Enter Ticker(s)', 'A', 'Portfoliotransactions\Ticker', multi, free)

The @Prompt
Allows User
Input at
Refresh
Time
Prompted Queries in Desktop and WEB Intelligence

The Prompt Dialog in Desktop Intelligence

Desktop Intelligence List of Values

Web Intelligence Prompt and List of Values


Create All or Selected Conditions

All or Selected Condition

@Select(Portfoliotransactions\Ticker) IN @Prompt('Enter Ticker(* for All)', 'A', 'Portfoliotransactions\Ticker', multi, free)


Or
'*' IN @Prompt('Enter Ticker(* for All)', 'A', 'Portfoliotransactions\Ticker', multi, free)
Using a Subquery Condition

Revenue Greater Than 2001 Average Edit Dialog

@Select(Portfoliotransactions\Price) * @Select(Portfoliotransactions\Number of Shares (Dem)) * (-1) >


(Select Avg(PORTFOLIOTRANSACTIONS.PRICE * PORTFOLIOTRANSACTIONS.NUMSHARES * (-1))
From PORTFOLIOTRANSACTIONS
Where Year(PORTFOLIOTRANSACTIONS.TRANSDATE) = 2001 )
Date Conditions

Prompted YTD

@Select(Portfoliotransactions\Transdate) BETWEEN
'1/1/' + Cast(Year( @Prompt('Enter Date', D, 'Portfoliotransactions\Transdate',,)) As Varchar(4)) AND
@Prompt('Enter Date', D, 'Portfoliotransactions\Transdate',,)

@Select(Portfoliotransactions\Transdate) BETWEEN
Date Range @Prompt('Enter Begin Date','D','Portfoliotransactions\Transdate',,) AND
@Prompt('Enter End Date','D','Portfoliotransactions\Transdate',,)

@Select(Portfoliotransactions\Transdate) BETWEEN
Rolling 90 Days Prompted DateAdd(dd, -90, @Prompt('Enter Date', 'D, 'Portfoliotransactions\Transdate',,)) AND
@Prompt('Enter Date', 'D, 'Portfoliotransactions\Transdate',,)
Chapter Summary

Revenue Greater Than 2001 Average Edit Dialog


Schmidt Ink, Inc.
Creating Universes with Business Objects XI Copyright 2006 Robert D. Schmidt

Chapter 3: Inserting Tables and Joins

In this chapter, we are going to expand our one-table universe into a professional level universe. We are going to insert more tables and
work with joins to relate the tables. We are going to implement a properties table solution that will allow us to use all of the properties
in a table with no special business logic on the query side. We are also going to create and organize the objects that we derive from the
fields of the tables.
Table Types - Fact and Dimesion

Dimension Tables (Look up)

Portfolio Manager
Portfolio

Industry

Company
Fact Table (Transactions)

Properties
Simple Joins

Portfolioid PortfolioName PortfolioMgrID InitialCash


100 DOW 30 1 5,000,000.00
101 Biotech 2 525,000.00
102 Media 3 500,000.00
103 Finance 4 625,000.00
104 Technology 5 1,250,000.00
105 Alternative Energy 6 275,000.00

Joins Link a Key to a Table of Data


Table Field Types

Field Types and Row Counts


Field Types and Row Counts

Table Row Count Dialog


Create Classes and Objects

We Now Have Three Classes and Many More Objects

Portfolio Transactions Portfolio Company


Ticker Trans Month Name Portfolio Name Industry
Trans Date Trans Day Name Mgr Name Ticker
Price Number of Shares Mgr Phone Company
Number of Shares (Dem) Revenue Initial Cash Dow30
Trans Year Num Transactions
Trans Quarter Number of Companies
Trans Month Num
Organize and Create New Objects

Edit Properties Dialog for a Class

Create a Subclass

@Select(!Unknown\!Unknown) IN
@Prompt('Enter Ticker(* for All)', 'A', 'Portfolio Transactions\Ticker', multi, free) Or
Broken'*' IN @Prompt('Enter Ticker(* for All)', 'A', 'Portfolio Transactions\Ticker', multi, free)
Current Organization

@Select(Company\Ticker) IN
@Prompt('Enter Ticker(* for All)', 'A', 'Company\Ticker', multi, free) Or
Fixed '*' IN @Prompt('Enter Ticker(* for All)', 'A', 'Company\Ticker', multi, free)
Detail Objects

Current Organization

Manager Phone the Dimension Manager Phone the Detail


* Assumes that there will be more than one * Assumes that each manager has only one
phone number per manager. phone number.
* Assumes that reports will be created, * It will not be used to Link (Merge) data
where the information will be grouped providers in a document.
by phone number. * Will not be as restrictive as a dimension object.
* Are owned by a dimension.
Join Cardinalities

Many Joins (in this case) are Represented by Crows Feet on the Many Side N to 1 (Many-to-One) Join

TRANSID PORTFOLIONUM TICKER TICKER COMPANY


106 100 XOM UAL UAL Corporation
105 100 XOM UTX United Technologies Corporation
103 100 XOM VIA Viacom Inc.
102 100 XOM WCOM WorldCom Group
101 100 MRK WMT Wal-Mart Stores, Inc.
100 100 XOM X USX-U.S. Steel Group
99 100 IBM XOM Exxon Mobil Corporation
98 100 XOM YHOO Yahoo! Inc.

Rows from Portfolio Transactions Rows from Company Table


Dealing with Property Tables

Adding the Property Table Creates a Chasm Trap (Many-to-One : One-to-Many)

TICKER PROPERTYID PROPERTYDESC PROPERTYTYPE PROPERTYCHAR PROPERTYINT PROPERTYDATE


AA 1 DOW30 1 Y 0
AA 2 RISKLEVEL 2 1
AA 3 BUYSELL 2 1
AAPL 1 DOW30 1 Y 0
AAPL 2 RISKLEVEL 2 2
AAPL 3 BUYSELL 2 1
Some Rows from the Property Table
Using Detail Objects with Where Statements to Solve Property Table Chasm Trap

Rows from Company Table Edit Properties Dialog for Property ID Dimension

DOW 30
Select: SIPROPERTIES.PROPERTYCHAR
Where: @Select(Company - Advanced\Property ID) = 1
Risk Level
Select: SIPROPERTIES.PROPERTYINT
Where: @Select(Company - Advanced\Property ID) = 2
Buy Sell Rec
Select: SIPROPERTIES.PROPERTYINT
Where: @Select(Company - Advanced\Property ID) = 3

Property Detail Formulas Property Objects


Aliasing Tables

Alias Dialog

Root Table Alias Tables


Aliasing Tables to Solve Property Table Chasm Trap

Edit Join Dialog for SIPROPERTIES_RISK Join

Property Tables with Outer Joins to the Company Table Property Objects
More on Join Types

Ticker
MSFT Ticker Risk
Ticker Risk
INTC MSFT 1
Inner Join MSFT 1 Equals
MSFT BOBJ 2
BOBJ 2
MOT MSFT 1
BOBJ

Ticker Ticker Risk


MSFT MSFT 1
Ticker Risk
INTC INTC
Outer Join MSFT 1 Equals
MSFT MSFT 1
BOBJ 2
MOT MOT
BOBJ BOBJ 2

SELECT COMPANY.COMPANY, SIPROPERTIES_RISK.PROPERTYINT


FROM
SIPROPERTIES SIPROPERTIES_RISK RIGHT OUTER JOIN COMPANY ON
(COMPANY.TICKER=SIPROPERTIES_RISK.TICKER AND SIPROPERTIES_RISK.PROPERTYID = 2)
Using the Case Statement to Decode Property Flags

SIPROPERTIES_RISK.PROPERTYINT Case SIPROPERTIES_RISK.PROPERTYINT


When 1 Then 'Low'
When 2 Then 'Moderate'
When 3 Then 'High'
End
Our Universe, So Far
Schmidt Ink, Inc.
Creating Universes with Business Objects XI Copyright 2006 Robert D. Schmidt

Chapter 4: Working with Multiple Fact Tables

In this chapter we are going to address


the issues that arise when we insert
additional fact tables into a universe.
We will discuss how defining a
universe context will solve the
possible chasm trap that occurs when
adding an additional fact table. We are
going to talk about how fact tables can
share dimension tables within these
defined contexts.

We are also going to discuss how to


organize the objects in the universe
after another fact table is introduced
and contexts are defined. It is
important that the people creating
queries from the universe know which
objects are in the contexts, so that
their reports will be accurate.

We will also demonstrate how to


create building-block universes and
then link them together to create larger
universes. We will do this by isolating
the Company structure and creating an
independent universe from it. Loop in SIEquity Universe
Add a Second Fact Table

Equity Prices Fact Table and Default Class and Objects


New Fact Table Chasm Trap

Equity Prices Fact Table Joined Into Our Universe

Chasm Formed by Many-to-One-to-Many Join Cardinality


Universe Context

Portfolio Transactions Table and Supporting Structure

Equity Prices Table Company Table and Supporting Structure


Automatically Defining a Universe Context

Candidate Contexts Dialog and Candidate Path for Portfolio Transactions


Viewing Defined Contexts (List Mode)

List Mode with a Context Selected


Deleting and Manually Inserting Contexts

New Context Dialog

Manually Defining a Context


Arranging the Universe Section

Old Universe Structure New Universe Structure


Working with Common Fields
Using SIDate Objects

SIDate Condition Objects Formulas SIDate Objects


Rolling 90 Days
Before @Select(Portfolio Transactions\Trans Date) BETWEEN
DateAdd(dd, -90, @Prompt('Enter Date','D','Portfolio Transactions\Trans Date',,)) AND
@Prompt('Enter Date','D','Portfolio Transactions\Trans Date',,)
After @Select(SI Date\Full Date) <= @Prompt('Enter Date','D','SI Date\Full Date',,) And
@Select(SI Date\Full Date) >
(Select SIDATE.Rolling_90_Days From SIDATE Where SIDATE.Full_Date = @Prompt('Enter Date','D','SI Date\Full Date',,))
Prompted YTD
Before @Select(Portfolio Transactions\Trans Date) BETWEEN
'1/1/' + Cast(Year(@Prompt('Enter Date','D','Portfolio Transactions\Trans Date',,)) As Varchar(4)) AND
@Prompt('Enter Date','D','Portfolio Transactions\Trans Date',,)
After @Select(Sidate\Full Date) <= @Prompt('Enter Date','D','Sidate\Full Date',,) AND
@Select(Sidate\Full Date) >
(Select SIDATE.First_of_Year From SIDATE Where SIDATE.Full_Date = @Prompt('Enter Date','D','Sidate\Full Date',,))
Date Range
Before @Select(Portfolio Transactions\Trans Date) BETWEEN
@Prompt('Enter Begin Date','D','Portfolio Transactions\Trans Date',,) AND
@Prompt('Enter End Date','D','Portfolio Transactions\Trans Date',,)
After @Select(Sidate\Full Date) BETWEEN
@Prompt('Enter Begin Date','D','Sidate\Full Date',,) AND
@Prompt('Enter End Date','D','Sidate\Full Date',,)
Completed Universe
Create a Separate Company Universe

Company Class and Objects

Company Universe Structure Company Class and Condition


Linking the Universe

Edit Context Dialog

SICompany Universe Linked into SIEquity

Universe Parameters Dialog


Loops in a Universe

Loop is No Problem

Loop is in Error

Loop in SIEquity Universe


Dimension Table Loops

Loop Caused by PAYROLL Joining to Same Dimension

Loop Removed by Aliasing EMPLOYEE table

Edit Properties for Manager ID


Chapter Summary

Summary Tab for SIEquity - Designer Class

9 Classes
34 Objects
5 Conditions
8 Tables
3 Alias
10 Joins
Schmidt Ink, Inc.
Creating Universes with Business Objects XI Copyright 2006 Robert D. Schmidt

Chapter 5: More Design Considerations

Okay, I will take the heat on the title of this chapter. I just couldnt think of anything else to call it. This is a great chapter, because we
will talk about some very important topics that we just could not fit into the design of our universe. We will talk about Fan Traps and
how they affect our queries. We will offer a few solutions that include Aggregate Awareness. Aggregate Awareness is a great feature
that allows the use summary (pre-aggregated) measures that will calculate faster than the detail measures that we have been using.

We will discuss Universe hierarchies and how to define them. In addition, we will discuss derived tables, which are very similar to
views in a database.
Add a Third Fact Table

Calls Context Definition

Call Duration
Sum( SICALLS.Call_Duration )
Num Calls
SICalls Objects Count( Distinct SICALLS.CALL_ID )
Fan Traps

Universe Structure with CallCompanyContacts

Simplified View of SICalls and Joins


Multiple SQL Statements for Each Measure

Multiple SQL Statements for Each Measure Option

Select Statement for SICalls Measures Select Statement for CallCompanyContacts Measures

SELECT SELECT
Sum(SICALLS.Call_Duration), Count(Distinct CALLCOMPANYCONTACTS.ContactID)
Count( Distinct SICALLS.CALL_ID) FROM
FROM CALLCOMPANYCONTACTS
SICALLS
Unsolvable Fan Traps

Contact ID Object

... ... ...


Query Panel From Desktop Intelligence

SELECT
SICALLS.CALL_ID, Calls Measures
CALLCOMPANYCONTACTS.ContactID,
Sum(SICALLS.Call_Duration)
FROM
SICALLS INNER JOIN CALLCOMPANYCONTACTS ON (SICALLS.CALL_ID=CALLCOMPANYCONTACTS.CallID)
GROUP BY
SICALLS.CALL_ID,
CALLCOMPANYCONTACTS.ContactID
Invoice Type Fan Traps

Possible Fan Trap on INV_AMOUNT

Universe Section Alt Universe Section


Aggregate Awareness

(Invoice Num)
(Inv Amount)
SELECT
XBINVOICE.INVOICE_NUM,
Sum(XBINVOICE.INV_AMOUNT)
FROM
XBINVOICE
GROUP BY
XBINVOICE.INVOICE_NUM

(Inv Linenum)
(Inv Amount) Aggregate Navigation Dialog

SELECT
XBINVOICEITEM.INV_LINENUM,
Sum(XBINVOICEITEM.LINE_AMOUNT)
FROM
XBINVOICEITEM
GROUP BY
XBINVOICEITEM.INV_LINENUM

Universe Section

(Inv Amount)
@Aggregate_Aware( Sum(XBINVOICE.INV_AMOUNT), Sum(XBINVOICEITEM.LINE_AMOUNT))
Universe Heirarchies

Aggregate Navigation Dialog

Default Hierarchies
Derived Tables

Company and Industry Form Company_Industry

Derived Tables Editor

SELECT
COMPANY.COMPANY,
INDUSTRY.INDUSTRYID,
COMPANY.TICKER,
INDUSTRY.INDUSTRY
FROM
COMPANY INNER JOIN INDUSTRY ON (INDUSTRY.INDUSTRYID=COMPANY.INDUSTRYID)
SQL for Derived Table Company Industry
Joins on Different Data Types

CUSTOMER DATA TYPE SALES DATA TYPE


CUTST_ID NUMBER DATE DATE
ADDRESS CHARACTER CUST_ID CHARACTER
PHONE CHARACTER PRODUCT_ID CHARACTER
CITY CHARACTER QUANTITY NUMBER

CUSTOMER.CUST_ID = CAST(SALES.CUST_ID AS INT)


Chapter Summary
Schmidt Ink, Inc.
Creating Universes with Business Objects XI Copyright 2006 Robert D. Schmidt

Chapter 6: Additional Topics

This is the final chapter of the course. Here, we will learn a few
more tricks and how to print our universe definitions. We will start
with creating custom list of values for objects in our universe.
These lists of values will make it easier for people to locate values
in the list. I have noticed that one of the most popular complaints
about Business Objects is that people cannot find the values in the
lists quick enough. If we solve this problem, then we have made a
large step towards making our clients satisfied.

Next, we will talk about hiding objects in the universe. Then,


another join topic. We are going to discuss how to join tables to
dimension tables that have valid date ranges. In todays demanding
world, many dimension tables have such ranges.

Lastly, we are going to discuss how to print the universe definitions.


We will find out that we can customize the printing so we can print
only the aspects that we are interested in.
Editing Lists of Values

Edit Button on Properties Tab

Query for Year Num List of Values (LOV)

SELECT DISTINCT
SIDATE.Year_Num
FROM
SIDATE

Edit Button in Lists of Values Dialog


Hierarchical Display

Hieracrchical LOV View Options for Hierarchical View LOV

Query for Hierarchical View LOV


Cascading Lists of Values

Create Cascading List of Values

Query Panel for Cascading List of Values Prompt Dialog in Web Intelligence
Index Awareness

PortfolioMgr and Portfolio Tables

Query Panel Using MgrName in the Condition

With Index Awareness Without Index Awareness


SELECT SELECT
PORTFOLIOMGR.MGRNAME PORTFOLIOMGR.MGRNAME
FROM FROM
PORTFOLIOMGR PORTFOLIOMGR
WHERE WHERE
PORTFOLIOMGR.PORTFOLIOMGRID IN (2, 6) PORTFOLIOMGR.MGRNAME IN ('Maria Castro', 'David Balkcom')
Using a Hierarchical LOV to Provide Index Awareness

Full Client LOV with Key Values

Properties Tab

Query Panel for LOV

WEB Intelligence using Portfolio Mgr ID LOV


Hiding Items

Hidden Objects in Universe


Between Joins

Edit Join Dialog with Between Join Prompted Between Join in Universe Structure

Between Join in Universe Structure


Prompted Between Join in Universe Structure

XBINVOICE.CUST_ID=XBCUSTOMER.CUST_ID AND XBCUSTOMER.CUST_ID=XBMANAGER.CUST_ID AND


XBINVOICE.INV_DATE between @Prompt('Enter Valid Customer Date', 'D',,,) BETWEEN
XBCUSTOMER.VALID_FROM_DATE AND XBMANAGER.VALID_FROM_DATE AND
XBCUSTOMER.VALID_TO_DATE XBMANAGER.VALID_TO_DATE
Advanced Join Properties

Advaned button Advanced


in Edit Join Join
Dialog Properties
Dialog

ANSI92 Option in the


Universe Parameters
Dialog
Refreshing the Structure

Highlights Tables to be Refreshed


Refresh Structure in the Tools Menu

Notifies When Complete

Integrity Check Dialog


Arranging the Tables in the Structure
Printing the Universe Definitions

Set Print Options on the Print/PDF Tab

Sample from First Page of Print


Chapter Summary

The Summary of Our Universe


Course Summary

This has been a very comprehensive and sometimes very creative course. We have learned how to create universes for our companies, which is a
tremendous responsibility. Even though it is a large responsibility, I hope that you feel confident to take on this effort. I have seen too many smart
people yield to others, because they feel that others could do a better job.

I have tried to put almost everything that can happen when creating universes into this course. So, if you feel confident with this course, then you
should be able to handle almost any job. Just remember that there is almost always a fact table and supporting dimension tables. Just find and identify
them and start joining. Create some objects and conditions and then make some reports. If the reports are correct, then you are doing a good job.

Always try to think like the people that will be using the universe. How will they like the objects organized? What conditions do they need? Do they
want custom lists of values? I have worked at a few places where the universe designers absolutely refuse to create a report. If they do not create a
report, then how can they know that their universes work? They did not know and many times the universes did not work. What a strain this was on
everybody and how foolish were those IT managers that insisted that is not their job to test the universes.

My suggestion is to test all of your universes by creating documents and comparing the results to expected results. They should match exactly, unless
the data or rules have changed from the older systems. I have seen many rookie designers explain every discrepancy with some kind of weird business
rule that nobody knows about or understands. It has been my experience that not many older systems are inaccurate. Therefore, we should strive to get
the same results out of our new systems.

One more piece of advice - Keep a good relationship with both the database people and the business people. Many times we work right in between
these two groups and it is very important that we can freely communicate with them. Try to address all issues and keep reassuring your business
people. Also, try to thank the database people as much as possible. They are often forgotten and you as the designer are often given the credit for the
system. Remember that the database people make it possible for you to create great universes. I have never made a great universe on a bad database. It
just doesnt work.

I hope that if you get stuck, you dont quit. There are too many quitters in this world and we will not add to this population. If you get stuck, please
email me. You can get the address from my web site: www.schmidtink.com. There is also a great WEB site that has helped me many times. People call
it BOB, I call it the best thing that ever happened to Business Objects. I guess calling it BOB is just more compact. Anyway, it is at this URL:
http://www.forumtopics.com/busobj/index.php.
Thanks for Listening and Learning

Thanks for Listening and Learning

Thanks for staying with this course and giving it your best. I appreciate your effort and hope that you are rewarded with a great career. I write these
books for people just like you, and knowing that you will be able to enhance your career, thus improving your life is such motivation for me. As long
as you all continue to read, I will continue to write. Thank you so much.

Best Regards,
Robert D. Schmidt
www.SchmidtInk.com

Notes

Vous aimerez peut-être aussi