Professional Documents
Culture Documents
Business Objects Designer Advanced Topics NC Boug: Richard Foster August 29, 2002
Business Objects Designer Advanced Topics NC Boug: Richard Foster August 29, 2002
Business Objects Designer Advanced Topics NC Boug: Richard Foster August 29, 2002
Advanced Topics
NC BOUG
Richard Foster
August 29, 2002
Designer’s Dilemmas
• Quick Hits
• Table Order
• Correlated Subqueries
• Chasm
• Fan
• Aggregate Awareness
• Linking Universes
Cust Name Loan Date Loan Amount Order Date Order Value Loans.loan_date,
Paul 8/5/1998 5,000 1/12/1999 10,000 sum(Loans.loan_amount),
Paul 8/5/1998 5,000 4/14/1999 15,000 Orders.order_date,
Paul 8/5/1998 5,000 9/20/1999 18,000
sum(Orders.order_value)
Paul 6/3/1999 10,000 1/12/1999 10,000
Paul 6/3/1999 10,000 4/14/1999 15,000 FROM
Paul 6/3/1999 10,000 9/20/1999 18,000 Customer,
Loans,
Paul’s totals incorrect Orders
WHERE
Loans should be 15,000 ( Customer.cust_id=Loans.cust_id )
AND ( Customer.cust_id=Orders.cust_id )
Orders should be 43,000 GROUP BY
Customer.cust_name,
Paul’s loans and orders displayed too many times Loans.loan_date,
Orders.order_date
Mary and Cathy missing from report
Select the option Multiple SQL Only applies to measures. You force the SQL
Statements for Each Measure generation engine in Reporter to generate SQL queries
from the Universe Parameters for each measure that appears in the Query panel. You
dialog box. cannot use this solution to generate multiple SQL
statements for dimensions. Option is on by default.
Define a context for each table In our example you could define a context from
at the "many" end of the joins. CUSTOMER to ORDERS and from CUSTOMER to
LOANS. This creates two SQL statements and two
separate tables in Business Objects, avoiding the
creation of a Cartesian product. Using contexts is the
most effective way to solve Chasm traps.
Define a context for each table Multiple SQL statements for each context must be
at the "many" end of the joins. selected. It is checked by default. If not you will receive
the “Incompatible Objects” error message.
Cathy
Cust Name Total Value Quantity Sold Customer Name Product Total Value Quantity Sold
Paul 1,650,000 9 Pete Kia 23,000 3
Pete 23,000 3 Pete Sum: 23,000 3
SELECT
SELECT
Customer.cust_name, sum(Orders.total_value),
Customer.cust_name, sum(Orders.total_value),
sum(Order_Lines.qty_sold), Order_Lines.prod_id
sum(Order_Lines.qty_sold)
FROM
FROM
Customer, Orders, Order_Lines
Customer, Orders, Order_Lines
WHERE
WHERE
( Customer.cust_id=Orders.cust_id )
( Customer.cust_id=Orders.cust_id )
AND ( Orders.order_id=Order_Lines.order_id )
AND ( Orders.order_id=Order_Lines.order_id )
GROUP BY
GROUP BY
Customer.cust_name,
Customer.cust_name
Order_Lines.prod_id
Totals Summary
Cust Name Total Value Quantity Sold
Paul 550,000 9
Pete 23,000 3
SELECT
SELECT
Customer.cust_name,
Customer.cust_name,
sum(Orders.total_value)
sum(Order_Lines.qty_sold)
FROM
FROM
Customer, Orders
Customer, Order_Lines, Orders
WHERE
WHERE
( Customer.cust_id=Orders.cust_id )
( Customer.cust_id=Orders.cust_id )
GROUP BY
AND ( (Orders.order_id=Order_Lines.order_id )
Customer.cust_name
GROUP BY
Customer.cust_name
Results are correct
But…………………..
SELECT SELECT
Cust Name Prod Id Total Value Quantity Sold
Customer.cust_name, Customer.cust_name,
Pete Kia 23,000 3
Order_Lines.prod_id, Pete Sum: 23,000 Order_Lines.prod_id,
sum(Orders.total_value) sum(Order_Lines.qty_sold)
FROM FROM
Customer, Order_Lines, Orders Customer, Order_Lines, Orders
WHERE WHERE
( Customer.cust_id=Orders.cust_id ) ( Customer.cust_id=Orders.cust_id )
AND AND ( Orders.order_id=Order_Lines.order_id )
( Orders.order_id=Order_Lines.order_id )
GROUP BY
GROUP BY
Customer.cust_name,
Customer.cust_name,
Order_Lines.prod_id
Order_Lines.prod_id Detail results are still incorrect
In our example, the Prod Id is the added dimension from the many side
Select Tools /
Aggregate
Navigation from
the Designer
menu
Designer
Bring in kernel universe
From the Insert menu select Universe
As in ‘normal’ universe, right click on
an object or class and select “Hide”
Designer
Insert multiple universes
Universes must be joined by at least
two tables
Create new classes\objects