Designer XI Presentation
Designer XI Presentation
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 [email protected].
Schmidt Ink, Inc.
Creating Universes with Business Objects XI Copyright 2006 Robert D. Schmidt
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
Desktop Icon
3 Login Parameters
Define a New Connection (Continued)
6 Custom Parameters
Saving a Universe
Summary Strategies
Controls SQL
Universe Parameters - Links and Parameters
Links Parameter
Tool Bars
Status Bar
Table Values
| File | Export |
Default Object Behavior
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
Revenue is
created by
multiplying
Price by
Numshares
Creating Counting Measures
Edit Properties Dialog for Num Transactions Edit Properties Dialog for Number of Companies
Automatic Time
Hierarchy Objects
Our Universe
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
The @Prompt
Allows User
Input at
Refresh
Time
Prompted Queries in Desktop and WEB Intelligence
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
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
Portfolio Manager
Portfolio
Industry
Company
Fact Table (Transactions)
Properties
Simple Joins
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
Many Joins (in this case) are Represented by Crows Feet on the Many Side N to 1 (Many-to-One) Join
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
Alias Dialog
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
Loop is No Problem
Loop is in Error
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
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
Call Duration
Sum( SICALLS.Call_Duration )
Num Calls
SICalls Objects Count( Distinct SICALLS.CALL_ID )
Fan Traps
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
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
(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
Default Hierarchies
Derived Tables
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
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.
SELECT DISTINCT
SIDATE.Year_Num
FROM
SIDATE
Query Panel for Cascading List of Values Prompt Dialog in Web Intelligence
Index Awareness
Properties Tab
Edit Join Dialog with Between Join Prompted Between Join in Universe Structure
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 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