Dmitry Anoshin
BOGBUSINESS OBJECTS GUIDE
2 07/03/2012 Footer
Universe
Designer
3 07/03/2012 Footer
BusinessObjects Universe
Юниверс – семантический слой, который изолирует бизнес
пользователя от технических сложностей баз данных, в которых
хранится корпоративная информация.
Для облегчения жизни конечных пользователей, юниверс состоит из
объектов и классов, которые ссылаются на данные в базе данных.
Используя юниверс, пользователь оперирует бизнес терминологией, с
которой он привык работать.
Юниверс – это файл,
который состоит из:
• Подключения к
источнику данных
• ER диаграммы
• Объектов и классов
• Файл *.unv не
должен превышать
1mb, кол-во объектов
<=500
4 07/03/2012 Footer
Universe
5 07/03/2012 Footer
BusinessObjects Universe Designer
components
Конструктор юниверсов – приложение для создания,
редактирования юниверсов. Юниверс может иметь несколько
подключений к разным БД, но одновременно работать можеть только
с одной БД.
Дизайнер используется только с репозиторие ВО, поэтому сначало
необходимо подключиться к CMS. Для работы с юниверсом
необходимо импортировать его из CMS. После внесений изменений
эскпортировать обратно.
Панель инструментов конструктора юниверсов:
6 07/03/2012 Footer
Creating the Course Universe
После проведеннго анализа бизнес требований и разработки плана
построения юниверса, можно приступить к созданию юниверса. Для этого
необходимо:
• Создать новый источник данных
• Создать новое подключение в Конструкторе
• Создать новый юниверс
• Настроить параметры юниверсы (не обязательно)
7 07/03/2012 Footer
Database Connection
В качестве источника данных
можно использовать практически
любые СУБД.
Для подключения к источникам
данных используются следующие
драйвера:
• ODBC
• OLE DB
• JDBC
• и др.
Существет 3 основных типа
подключения:
• Secured
• Shared
• Personal
8 07/03/2012 Footer
Creating New Universe
Для создания нового юниверса необходимо нажать «New universe» и
перед вами появится следующая форма:
9 07/03/2012 Footer
Controls Tab
На вкладке управления можно ограничить:
• количество выгружаемых строк
• время выполнения запроса
• размер строки
10 07/03/2012 Footer
SQL Tab
На вкладке «SQL» настраиваются параметры связанные с SQL:
11 07/03/2012 Footer
Parameters tab
На вкладке параметров можно включать, выключать параметры:
• ANSI92
• BEGIN SQL
• END SQL
(“set query band”)
• FILTER_IN_FORM
• и другие
12 07/03/2012 Footer
Building the Universe Structure
Схема юниверса состоит из таблиц и связей между ними. Для создания
юниверса необходимо из источника данных выбрать таблицы и затем
соединить их.
При желании можно просматривать содержимое таблицы.
13 07/03/2012 Footer
Defining joins in a universe
Послед добавления таблиц в юниверс не обходима создать связи между
таблицами.
Двойным кликом по ссвязи можно открыть окно редактирование связи:
Связи:
• Equal-join
• Outer-join
• Theta join
• Shortcut join
• Self-restricting
join
Auto Detect:
SELECT count (*)
FROM table1, table2
WHERE table1.column =
table2.column
SELECT count (*)
FROM table1
SELECT count (*)
FROM table2.
14 07/03/2012 Footer
List Mode
Для просмотра всех связей юниверса можно использовать «List mode»:
15 07/03/2012 Footer
Checking integrity
После создания модели рекомендуется проверить юниверс на наличие ошибок,
для этого необходимо запустить “Integrity Check”
16 07/03/2012 Footer
Creating Dimension Objects
При создании новых объектов сначало необходимо создать «Класс» – папку, и
в ней уже создавать объекты.
17 07/03/2012 Footer
Creating Dimension Objects (cont)
Измериния можно создать двумя способами:
1. Щелкнуть правой кнопкой мыши, выбрать «объект»
В новом окне необходимо
ввести название будующего
объекта, выбрать тип данных
и ввести поле из таблицы.
18 07/03/2012 Footer
Creating Dimension Objects (cont)
2. Перетащить объект из таблиц или всю таблицу целиком в область списка
объектов:
Если мы перетащим всю
таблицу, то у нас создастся
новый класс, в котором
будут лежать все поля таблицы.
При необходимости из объекта измерения мы можем превратить наш объект
в объект – деталь:
19 07/03/2012 Footer
Creating Measure Objects
Объект мера имеет
численный тип данных. Как
уже говорилось раньше,
мера завист от контекста:
Мера всегда должна использоваться с одной из агрегативных функций:
• Sum
• Count
• Average
• Maximum
• Minimum
20 07/03/2012 Footer
The query process
В BusinessObjects существует 2 уровня агригации, которые происходят во
время выполнения запроса:
• Агригация на уровне SELECT выражения находится в микрокубе
• Агригация на уровне отчета
21 07/03/2012 Footer
Creating Measure Objects (cont)
Мера создается также, как и измерение, только во вкладке свойства необхомо
указать тип объекта – мера, или просто при написание названия поля
использовать одну из 5 агрегативных функций.
22 07/03/2012 Footer
Loops in a Universe
Во время созданию юниверса у нас могут получится циклы, то есть таблицы
соединены таким образом, что образую замкнутый круг.:
У нас есть следующая ситуация:
• один набор таблиц (Car sale
details, client, the client‟s region,
clients country)
• друго набор таблиц (Car sale
details, showroom, showroom‟s
country)
Если мы соединим эти таблицы,
то получим цикл.
WHERE
{COUNTRY.COUNTRY_ID=SHOWROOM.COUNTRY_ID}
AND {COUNTRY.COUNTRY_ID=REGION.COUNTRY_ID }
AND {REGION.REGION_ID=CLIENT.REGION_ID }
AND {CLIENT.CLIENT_ID=SALE.CLIENT_ID }
AND {SHOWROOM.SHOWROOM_ID=SALE.SHOWROOM_ID }
AND {SALE.SALE_ID=SALE_MODEL.SALE_ID }
AND {SALE.SALE_TYPE= 'S' }
При выполнение запроса в отчет попадет
не вся информация, так как согласно
запросу у нас создалось ограничение
Showroom Country =Client Country)
23 07/03/2012 Footer
Resolving Loops in a Universe
Для решения циклов существует два способа:
1. Использование альясов:
2. Использование контекстов.
24 07/03/2012 Footer
About Contexts
Контекст – это список джоинов и таблиц, которые могут вместе
учавствовать в запросе. Любые объекты, полученные из таблиц, включенных
в контекст, совместимы друг с другом.
Если в запросе учавствует объекты из разных контекстов, то BO создаст
несоклько запросов, свой для каждого контекста, а затем соединит их в одном
микрокубе. Это позволяет избежать некорректных результатов .
Допустим у нас есть юниверс Motors:
25 07/03/2012 Footer
About Contexts (cont)
У нас есть две сущности Rental и Sale. Сущность Client одновременно связана
с Rental и Sale:
1. Rental_Model:
2. Sales_Model:
26 07/03/2012 Footer
About Contexts (end)
Для того, чтобы пользователь мог использовать в одном запросе
одновременно объекты из разных контекстов, необходимо включить данную
опцию в настройках юниверса. Такой запрос называется Ambiguous query.
27 07/03/2012 Footer
Resolving SQL Traps
В дизайнере существует два вида “SQL traps”:
• chasm traps
• fan traps
Если при возникновении цикла в отчет попадает меньше строк, то при
возникновении ловушек у нас появляются лишние записи.
К счастью, существет несколько способов для идентификации и решения
таких вещей.
Chasm Traps
Chasm trap случается, когда у нас три таблички
соединяются, как показано на рисунке, тоесть 1 ко
многим.
28 07/03/2012 Footer
Chasm Traps Example
29 07/03/2012 Footer
Chasm Traps Example (end)
Запрос возвращает все возможные комбинации строк таблицы SALE и все
возможные комбинации строк таблицы RENTAL, тем самым задваивая наш
результат.
Вы можете ничего не заметить, пока не посмотрите на детализированные
данные.
Для решения данной проблемы существует 2 способа:
• Изменить параметры юниверса, чтобы ВО создавал отдельный запрос
для каждой таблицы, но это поможет только при использование мэр
• Создание контекста для каждой таблицы
30 07/03/2012 Footer
Fan traps
Fan traps случаются, когда у нас есть соединения 1 ко многим,
которое также имеет соединение 1 ко многим с другой
таблицей, как показано на рисунке.
Fan traps example
31 07/03/2012 Footer
Fan traps example (cont)
Мы не увидим ошибку, пока не посмотри на детализированную выгрузку:
Для решения fan trap мы можем сделать одно из следующих действий:
• Изменить параметры юниверса, чтобы ВО создавал отдельный запрос
для каждой таблицы, но это поможет только при использование мэр
• Использовать комбинацию из контекста и альясов
• Избежать fan trap сценария
32 07/03/2012 Footer
Applying Restrictions on Objects
Ограничения на объект можно накаладывать при его создание в дизайнере:
Теперь при использование объекта в SQL выражение будет подставляться
данное условие.
33 07/03/2012 Footer
Condition objects
В ВО можно создавать специальные объекты, которые будут содержать
условия – объекты фильтры.
Такие объекты имеют ряд преимуществ:
• Удобны для сложных условий
Self-restricting join
Такой тип ограничения создается непосредтственно на поле таблицы, и потом
автоматически появляется в SQL выражение в условие, при использование
данной таблицы в запросе:
34 07/03/2012 Footer
Using @functions with Objects
• @prompt(,,,,,,)
• @select()
• @where()
• @aggregate_aware(,)
В ВО есть специальны класс функций - @ функции:
@prompt
Синтакс функции @ptompt состоит из семи параметров, разделенных
запятой:
• сообщение
• тип данных (A-alphanumeric, N-numeric, D-Date)
• список значений
• mono (одно значение), multi (несколько значений)
• free(позволяет ввести любое значение), constrained(позволяет выбрать
только из списка значений), primary key(в запросе используется вместо
значения его ключ)
• persistent(сохраняет в промте последнее значение), not persistent
• „Default value‟:‟key‟ (значение промпта по умолчанию и ключ для PK)
Первые два параметра обязательны.
35 07/03/2012 Footer
@prompt example
SHOWROOM.SHOWROOM_NAME =
@prompt('Enter Showroom Name','A',
'ShowroomShowroom',mono,primary_key)
SELECT
sum(SALE_MODEL.SALE_QTY *
MODEL.MODEL_PRICE *(100 -
SALE.SALE_DISCOUNT )/100)
FROM
MODEL INNER JOIN SALE_MODEL ON
(SALE_MODEL.MODEL_ID=MODEL.MODEL_ID)
INNER JOIN SALE ON
(SALE.SALE_ID=SALE_MODEL.SALE_ID)
INNER JOIN SHOWROOM ON
(SALE.SHOWROOM_ID=SHOWROOM.SHOWROOM_I
D)
WHERE
(SALE.SALE_TYPE='S')
AND (SHOWROOM.SHOWROOM_ID = 2 )
SHOWROOM.SHOWROOM_NAME IN
@prompt('Enter Showroom Name','A',
'ShowroomShowroom',multi,primary_key,not_persistent,
{'Prestige Cars' : '1', 'Prestige Sports Cars' : '2','Prestige Motors' :
'3'})
SELECT
sum(SALE_MODEL.SALE_QTY * MODEL.MODEL_PRICE *(
100 - SALE.SALE_DISCOUNT )/100
)
FROM
MODEL INNER JOIN SALE_MODEL ON
(SALE_MODEL.MODEL_ID=MODEL.MODEL_ID)
INNER JOIN SALE ON
(SALE.SALE_ID=SALE_MODEL.SALE_ID)
INNER JOIN SHOWROOM ON
(SALE.SHOWROOM_ID=SHOWROOM.SHOWROOM_ID)
WHERE
(SALE.SALE_TYPE='S')
AND (SHOWROOM.SHOWROOM_ID IN (1, 2, 3) )
36 07/03/2012 Footer
@select
Функция @select используется для дублирования объектов, то есть, если вам
необходимо один и тот же код SQL использовать в нескольких объекта или в
сложных формула, то вы можете вместо SQL выражения использовать
дануню функцию.
Рассмотрим пример:
У нас есть объект «Model» (MODEL.MODEL_NAME+' '+MODEL.MODEL_TRIM+'
'+MODEL.MODEL_ENGINE)
Мы создадим еще один объект – «Model for rental» (@select(CarModel)).
При использование это объекта, в запрос будет подставляться такой же код,
как и при использование объекта «Model»
37 07/03/2012 Footer
@where
Функция @where() также заменят SQL выражение на путь к объекту:
38 07/03/2012 Footer
@agreagate_aware
Функция @agregate_aware необходима для работы с сумарными таблицами.
@aggregate_aware(<SELECT statement for highest agg level>,
<SELECT statement for second highest agg level>,
..
<SELECT statement for second lowest agg level>,
<original SELECT statement for basic agg calculation>)
39 07/03/2012 Footer
Using Hierarchies
Иерархия – упорядоченная серия
взаимовсвязанных измерений, которые
используются для многомерного анализа, на
пример, как на рисунке: Страна, Регион, Город.
В ВО иерархия может быть естественной, например (Год, Месяц, День) или
логической, то есть созданный в собственном порядке.
40 07/03/2012 Footer
Working with hierarchies
По умолчанию ирархию повторяет очередность объектов в
классе. Именно поэтому важно при созданию юниверса
организовывать объекты в классе в нужной иерархии.
Для просмотра существующей иерархии или создание
своей иерархии можно использовать Hierarchies Editor
41 07/03/2012 Footer
Automatic time hierarchy
При создание таких объектов типа дата, можно автоматически создавать
автоматическую временную иерархию:
42 07/03/2012 Footer
Using List of Values
В дизайнере при создании нового измерения или объекта деталь,
автоматически создается список значений. Сразу этот список физически не
создаются, но у вас есть возможность получить его, направив запрос к БД.
Список значений базируется на
SELECT DISTINCT. Его можно
экспортировать вместе с
юниверсов, тогда список значений
конвертируется в XML и
сохранается в файле *.unw в
репозотирий ВО.
43 07/03/2012 Footer
Cascading LOV
В дизайнере можно создать каскадный список значений, который упростит
выбор параметров для пользователей.
44 07/03/2012 Footer
Derived Tables
Производная таблица это виртуальная таблица, которую
можно создать в структуре юниверса. Такая таблица
содержит в себе SQL выражение.
Пример таблицы DT_Sales_to_Rentals:
SELECT CLIENT.CLIENT_ID, MODEL.MODEL_ID,
(CASE SALE.SALE_TYPE WHEN 'R' THEN
SALE.SALE_TOTAL ELSE 0 END) AS Rental_Total,
(CASE SALE.SALE_TYPE WHEN 'S' THEN
SALE.SALE_TOTAL ELSE 0 END) AS Sales_Total
FROM CLIENT, MODEL,SALE,SALE_MODEL
WHERE CLIENT.CLIENT_ID = SALE.CLIENT_ID
AND MODEL.MODEL_ID = SALE_MODEL.MODEL_ID
AND SALE_MODEL.SALE_ID = SALE.SALE_ID
Nested Derived Tables
45 07/03/2012 Footer
Index awareness
Index awareness позволяет нам пользоваться преимуществом primary, foreign
key, то есть, допустим у нас есть запрос:
В условие мы выбираем UK и US.
А если мы воспользуемся Index awareness, то запрос примет следующий вид:
То есть у нас из запроса исчезла таблица COUNTRY и мы отфильтровали UK
и US по foreign key – MAKER.COUNTRY, тем самым улучшив
производительность запроса.
SELECT MAKER.MAKER_NAME, max(MODEL.MODEL_PRICE)
FROM MAKER, MODEL, COUNTRY COUNTRY_MAKER
WHERE (MODEL.MAKER_ID=MAKER.MAKER_ID)
AND (MAKER.COUNTRY_ID=COUNTRY_MAKER.COUNTRY_ID)
AND COUNTRY_MAKER.COUNTRY_NAME In ( 'United Kingdom','USA' )
GROUP BY MAKER.MAKER_NAME
SELECT MAKER.MAKER_NAME, max(MODEL.MODEL_PRICE)
FROM MAKER, MODEL
WHERE (MODEL.MAKER_ID=MAKER.MAKER_ID)
AND MAKER.COUNTRY_ID In ( 44,1 )
GROUP BY MAKER.MAKER_NAME
46 07/03/2012 Footer
To set up primary key index awareness
Primary key:
COUNTRY_REGION.COUNTRY_ID
WHERE:
COUNTRY_REGION.COUNTRY_ID =
CLIENT.COUNTRY_ID
47 07/03/2012 Footer
Linking Universes
ВО позваляет соединять несколько юниверсов в обном файле *.unw, что
дает ряд преимущест (удобство при создание объектов и тп.) и не достатков
(возможно подключиться только к одному источнику данных, списки значений
хранятся только для одного из юниверсов, контексты должны быть
определены для каждого юниверса и тд.)
48 07/03/2012 Footer
Applying Universe Access Restrictions
В юниверсе можно настраивать ограничения доступа для определенных
пользователей или для груп пользователей. Существуют следующие виды
ограничений:
• Соединение
• Управление запросом
• Контроль за SQL
• Доступ на уровне объектов
• Доступ на уровне строк
• Доступ к альтернативным таблицам
49 07/03/2012 Footer
Applying Universe Access Restrictions (cont)
50 07/03/2012 Footer
Applying Universe Access Restrictions (cont)
51 07/03/2012 Footer
Managing Universes
У вас есть возможность получить всю необходимую информацию по юниверсу
(объекты, связы, таблицы, схема и тп). Для это необходимо:
File->Print Preview/Print.
В опциях юнивераса можно выбрать объекты, которые необходимо отразить в
документации.
52 07/03/2012 Footer
Importing a universe
После того, как вы закончили разрабатывать юниверс, его необходимо
импортировать в репозиторирь ВО (CMS), для этого его нужно сохранить как
файл *.unw, желательно чтобы название файла совпадало с название
юниверса в параметрах.

More Related Content

PPTX
SAP BusinessObjects 4.1 Web Intelligence Report Development
PDF
SAP BusinessObjects Web Intelligence training
PPTX
11 ms acces_приемы работыt
PPT
базы данных в Delphi
PPT
BI Pre-Sale
PPTX
Microsoft Master Data Services - Master Data Management Tool
PPT
основные понятия баз данных
PPTX
презентация услуги (медицина)
SAP BusinessObjects 4.1 Web Intelligence Report Development
SAP BusinessObjects Web Intelligence training
11 ms acces_приемы работыt
базы данных в Delphi
BI Pre-Sale
Microsoft Master Data Services - Master Data Management Tool
основные понятия баз данных
презентация услуги (медицина)

What's hot (8)

PPT
14 расширенные возможности корпоративных субд
PDF
Обзор интересного функционала из последних релизов PowerBI
PPTX
презентация энергетика
PDF
Microsoft BI User Group: Работаем с 1С эффективно
PPT
лекц2
PDF
Sales works report analyzer user guide
PPTX
Access 08
PDF
ATK_BiView - инструмент эффективной интеграции 1С и Qlik
14 расширенные возможности корпоративных субд
Обзор интересного функционала из последних релизов PowerBI
презентация энергетика
Microsoft BI User Group: Работаем с 1С эффективно
лекц2
Sales works report analyzer user guide
Access 08
ATK_BiView - инструмент эффективной интеграции 1С и Qlik
Ad

Similar to SAP BusinessObjects Universe Designer training (20)

ODP
Entity framework
PPT
Модель системы — архитектура для Agile-разработки
PDF
Применение онтологических структур в ERP-системах
PPTX
Coding like a sex
PDF
Распространенные ошибки применения баз данных (Сергей Аверин)
PDF
Распространенные ошибки применения баз данных
PDF
C# Web. Занятие 04.
PDF
Пользовательские сценарии в карточках Docsvision 5
PPTX
DDD - модель вместо требований
PPTX
DDD requirements AnalystDays-2014 Tsepkov
PDF
Domain-Driven Design: Модель вместо требований
PPTX
разработка бизнес приложений (9)
PPTX
Ddd happy dev-2013-tsepkov
PPTX
Конструктор отчетов
PDF
Архитектуре проектов на примере интеграции TourIndex, TourDealer
PDF
Низкомолекулярное проектирование: структурированные данные и UX
PDF
Распространенные ошибки применения баз данных (Сергей Аверин)
PDF
Бизнес и системный анализ весна 2013 лекция 8
PDF
Aleksey Mashanov Rit
PDF
Aleksey Mashanov Rit
Entity framework
Модель системы — архитектура для Agile-разработки
Применение онтологических структур в ERP-системах
Coding like a sex
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных
C# Web. Занятие 04.
Пользовательские сценарии в карточках Docsvision 5
DDD - модель вместо требований
DDD requirements AnalystDays-2014 Tsepkov
Domain-Driven Design: Модель вместо требований
разработка бизнес приложений (9)
Ddd happy dev-2013-tsepkov
Конструктор отчетов
Архитектуре проектов на примере интеграции TourIndex, TourDealer
Низкомолекулярное проектирование: структурированные данные и UX
Распространенные ошибки применения баз данных (Сергей Аверин)
Бизнес и системный анализ весна 2013 лекция 8
Aleksey Mashanov Rit
Aleksey Mashanov Rit
Ad

More from Dmitry Anoshin (20)

PPTX
Building Modern Data Platform with Microsoft Azure
PPTX
Building Modern Data Platform with AWS
PPTX
Cloud Analytics Use Cases and Architecture, Math Marketing Conference, Russia...
PPTX
Victoria Tableau User Group - Getting started with Tableau
PPTX
Hey, what is about data?
PPTX
Enterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
PDF
AWS User Group: Building Cloud Analytics Solution with AWS
PPTX
Tableau API
PPTX
My experience of writing technical books
PDF
Business objects activities web intelligence
PPTX
Splunk 6.2 new features
PPTX
Business Analytics Paradigm Change
PPTX
SAP BO and Teradata best practices
PPTX
Exploring Splunk
PPTX
Splunk Digital Intelligence
PDF
Role of Tableau on the Data Discovery Market
PPTX
SAP Lumira - Building visualizations
PPTX
SAP Lumira - Acquiring data
PPTX
SAP Lumira - Enriching data
PDF
Microstrategy for Retailer Company
Building Modern Data Platform with Microsoft Azure
Building Modern Data Platform with AWS
Cloud Analytics Use Cases and Architecture, Math Marketing Conference, Russia...
Victoria Tableau User Group - Getting started with Tableau
Hey, what is about data?
Enterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
AWS User Group: Building Cloud Analytics Solution with AWS
Tableau API
My experience of writing technical books
Business objects activities web intelligence
Splunk 6.2 new features
Business Analytics Paradigm Change
SAP BO and Teradata best practices
Exploring Splunk
Splunk Digital Intelligence
Role of Tableau on the Data Discovery Market
SAP Lumira - Building visualizations
SAP Lumira - Acquiring data
SAP Lumira - Enriching data
Microstrategy for Retailer Company

SAP BusinessObjects Universe Designer training

  • 3. 3 07/03/2012 Footer BusinessObjects Universe Юниверс – семантический слой, который изолирует бизнес пользователя от технических сложностей баз данных, в которых хранится корпоративная информация. Для облегчения жизни конечных пользователей, юниверс состоит из объектов и классов, которые ссылаются на данные в базе данных. Используя юниверс, пользователь оперирует бизнес терминологией, с которой он привык работать. Юниверс – это файл, который состоит из: • Подключения к источнику данных • ER диаграммы • Объектов и классов • Файл *.unv не должен превышать 1mb, кол-во объектов <=500
  • 5. 5 07/03/2012 Footer BusinessObjects Universe Designer components Конструктор юниверсов – приложение для создания, редактирования юниверсов. Юниверс может иметь несколько подключений к разным БД, но одновременно работать можеть только с одной БД. Дизайнер используется только с репозиторие ВО, поэтому сначало необходимо подключиться к CMS. Для работы с юниверсом необходимо импортировать его из CMS. После внесений изменений эскпортировать обратно. Панель инструментов конструктора юниверсов:
  • 6. 6 07/03/2012 Footer Creating the Course Universe После проведеннго анализа бизнес требований и разработки плана построения юниверса, можно приступить к созданию юниверса. Для этого необходимо: • Создать новый источник данных • Создать новое подключение в Конструкторе • Создать новый юниверс • Настроить параметры юниверсы (не обязательно)
  • 7. 7 07/03/2012 Footer Database Connection В качестве источника данных можно использовать практически любые СУБД. Для подключения к источникам данных используются следующие драйвера: • ODBC • OLE DB • JDBC • и др. Существет 3 основных типа подключения: • Secured • Shared • Personal
  • 8. 8 07/03/2012 Footer Creating New Universe Для создания нового юниверса необходимо нажать «New universe» и перед вами появится следующая форма:
  • 9. 9 07/03/2012 Footer Controls Tab На вкладке управления можно ограничить: • количество выгружаемых строк • время выполнения запроса • размер строки
  • 10. 10 07/03/2012 Footer SQL Tab На вкладке «SQL» настраиваются параметры связанные с SQL:
  • 11. 11 07/03/2012 Footer Parameters tab На вкладке параметров можно включать, выключать параметры: • ANSI92 • BEGIN SQL • END SQL (“set query band”) • FILTER_IN_FORM • и другие
  • 12. 12 07/03/2012 Footer Building the Universe Structure Схема юниверса состоит из таблиц и связей между ними. Для создания юниверса необходимо из источника данных выбрать таблицы и затем соединить их. При желании можно просматривать содержимое таблицы.
  • 13. 13 07/03/2012 Footer Defining joins in a universe Послед добавления таблиц в юниверс не обходима создать связи между таблицами. Двойным кликом по ссвязи можно открыть окно редактирование связи: Связи: • Equal-join • Outer-join • Theta join • Shortcut join • Self-restricting join Auto Detect: SELECT count (*) FROM table1, table2 WHERE table1.column = table2.column SELECT count (*) FROM table1 SELECT count (*) FROM table2.
  • 14. 14 07/03/2012 Footer List Mode Для просмотра всех связей юниверса можно использовать «List mode»:
  • 15. 15 07/03/2012 Footer Checking integrity После создания модели рекомендуется проверить юниверс на наличие ошибок, для этого необходимо запустить “Integrity Check”
  • 16. 16 07/03/2012 Footer Creating Dimension Objects При создании новых объектов сначало необходимо создать «Класс» – папку, и в ней уже создавать объекты.
  • 17. 17 07/03/2012 Footer Creating Dimension Objects (cont) Измериния можно создать двумя способами: 1. Щелкнуть правой кнопкой мыши, выбрать «объект» В новом окне необходимо ввести название будующего объекта, выбрать тип данных и ввести поле из таблицы.
  • 18. 18 07/03/2012 Footer Creating Dimension Objects (cont) 2. Перетащить объект из таблиц или всю таблицу целиком в область списка объектов: Если мы перетащим всю таблицу, то у нас создастся новый класс, в котором будут лежать все поля таблицы. При необходимости из объекта измерения мы можем превратить наш объект в объект – деталь:
  • 19. 19 07/03/2012 Footer Creating Measure Objects Объект мера имеет численный тип данных. Как уже говорилось раньше, мера завист от контекста: Мера всегда должна использоваться с одной из агрегативных функций: • Sum • Count • Average • Maximum • Minimum
  • 20. 20 07/03/2012 Footer The query process В BusinessObjects существует 2 уровня агригации, которые происходят во время выполнения запроса: • Агригация на уровне SELECT выражения находится в микрокубе • Агригация на уровне отчета
  • 21. 21 07/03/2012 Footer Creating Measure Objects (cont) Мера создается также, как и измерение, только во вкладке свойства необхомо указать тип объекта – мера, или просто при написание названия поля использовать одну из 5 агрегативных функций.
  • 22. 22 07/03/2012 Footer Loops in a Universe Во время созданию юниверса у нас могут получится циклы, то есть таблицы соединены таким образом, что образую замкнутый круг.: У нас есть следующая ситуация: • один набор таблиц (Car sale details, client, the client‟s region, clients country) • друго набор таблиц (Car sale details, showroom, showroom‟s country) Если мы соединим эти таблицы, то получим цикл. WHERE {COUNTRY.COUNTRY_ID=SHOWROOM.COUNTRY_ID} AND {COUNTRY.COUNTRY_ID=REGION.COUNTRY_ID } AND {REGION.REGION_ID=CLIENT.REGION_ID } AND {CLIENT.CLIENT_ID=SALE.CLIENT_ID } AND {SHOWROOM.SHOWROOM_ID=SALE.SHOWROOM_ID } AND {SALE.SALE_ID=SALE_MODEL.SALE_ID } AND {SALE.SALE_TYPE= 'S' } При выполнение запроса в отчет попадет не вся информация, так как согласно запросу у нас создалось ограничение Showroom Country =Client Country)
  • 23. 23 07/03/2012 Footer Resolving Loops in a Universe Для решения циклов существует два способа: 1. Использование альясов: 2. Использование контекстов.
  • 24. 24 07/03/2012 Footer About Contexts Контекст – это список джоинов и таблиц, которые могут вместе учавствовать в запросе. Любые объекты, полученные из таблиц, включенных в контекст, совместимы друг с другом. Если в запросе учавствует объекты из разных контекстов, то BO создаст несоклько запросов, свой для каждого контекста, а затем соединит их в одном микрокубе. Это позволяет избежать некорректных результатов . Допустим у нас есть юниверс Motors:
  • 25. 25 07/03/2012 Footer About Contexts (cont) У нас есть две сущности Rental и Sale. Сущность Client одновременно связана с Rental и Sale: 1. Rental_Model: 2. Sales_Model:
  • 26. 26 07/03/2012 Footer About Contexts (end) Для того, чтобы пользователь мог использовать в одном запросе одновременно объекты из разных контекстов, необходимо включить данную опцию в настройках юниверса. Такой запрос называется Ambiguous query.
  • 27. 27 07/03/2012 Footer Resolving SQL Traps В дизайнере существует два вида “SQL traps”: • chasm traps • fan traps Если при возникновении цикла в отчет попадает меньше строк, то при возникновении ловушек у нас появляются лишние записи. К счастью, существет несколько способов для идентификации и решения таких вещей. Chasm Traps Chasm trap случается, когда у нас три таблички соединяются, как показано на рисунке, тоесть 1 ко многим.
  • 28. 28 07/03/2012 Footer Chasm Traps Example
  • 29. 29 07/03/2012 Footer Chasm Traps Example (end) Запрос возвращает все возможные комбинации строк таблицы SALE и все возможные комбинации строк таблицы RENTAL, тем самым задваивая наш результат. Вы можете ничего не заметить, пока не посмотрите на детализированные данные. Для решения данной проблемы существует 2 способа: • Изменить параметры юниверса, чтобы ВО создавал отдельный запрос для каждой таблицы, но это поможет только при использование мэр • Создание контекста для каждой таблицы
  • 30. 30 07/03/2012 Footer Fan traps Fan traps случаются, когда у нас есть соединения 1 ко многим, которое также имеет соединение 1 ко многим с другой таблицей, как показано на рисунке. Fan traps example
  • 31. 31 07/03/2012 Footer Fan traps example (cont) Мы не увидим ошибку, пока не посмотри на детализированную выгрузку: Для решения fan trap мы можем сделать одно из следующих действий: • Изменить параметры юниверса, чтобы ВО создавал отдельный запрос для каждой таблицы, но это поможет только при использование мэр • Использовать комбинацию из контекста и альясов • Избежать fan trap сценария
  • 32. 32 07/03/2012 Footer Applying Restrictions on Objects Ограничения на объект можно накаладывать при его создание в дизайнере: Теперь при использование объекта в SQL выражение будет подставляться данное условие.
  • 33. 33 07/03/2012 Footer Condition objects В ВО можно создавать специальные объекты, которые будут содержать условия – объекты фильтры. Такие объекты имеют ряд преимуществ: • Удобны для сложных условий Self-restricting join Такой тип ограничения создается непосредтственно на поле таблицы, и потом автоматически появляется в SQL выражение в условие, при использование данной таблицы в запросе:
  • 34. 34 07/03/2012 Footer Using @functions with Objects • @prompt(,,,,,,) • @select() • @where() • @aggregate_aware(,) В ВО есть специальны класс функций - @ функции: @prompt Синтакс функции @ptompt состоит из семи параметров, разделенных запятой: • сообщение • тип данных (A-alphanumeric, N-numeric, D-Date) • список значений • mono (одно значение), multi (несколько значений) • free(позволяет ввести любое значение), constrained(позволяет выбрать только из списка значений), primary key(в запросе используется вместо значения его ключ) • persistent(сохраняет в промте последнее значение), not persistent • „Default value‟:‟key‟ (значение промпта по умолчанию и ключ для PK) Первые два параметра обязательны.
  • 35. 35 07/03/2012 Footer @prompt example SHOWROOM.SHOWROOM_NAME = @prompt('Enter Showroom Name','A', 'ShowroomShowroom',mono,primary_key) SELECT sum(SALE_MODEL.SALE_QTY * MODEL.MODEL_PRICE *(100 - SALE.SALE_DISCOUNT )/100) FROM MODEL INNER JOIN SALE_MODEL ON (SALE_MODEL.MODEL_ID=MODEL.MODEL_ID) INNER JOIN SALE ON (SALE.SALE_ID=SALE_MODEL.SALE_ID) INNER JOIN SHOWROOM ON (SALE.SHOWROOM_ID=SHOWROOM.SHOWROOM_I D) WHERE (SALE.SALE_TYPE='S') AND (SHOWROOM.SHOWROOM_ID = 2 ) SHOWROOM.SHOWROOM_NAME IN @prompt('Enter Showroom Name','A', 'ShowroomShowroom',multi,primary_key,not_persistent, {'Prestige Cars' : '1', 'Prestige Sports Cars' : '2','Prestige Motors' : '3'}) SELECT sum(SALE_MODEL.SALE_QTY * MODEL.MODEL_PRICE *( 100 - SALE.SALE_DISCOUNT )/100 ) FROM MODEL INNER JOIN SALE_MODEL ON (SALE_MODEL.MODEL_ID=MODEL.MODEL_ID) INNER JOIN SALE ON (SALE.SALE_ID=SALE_MODEL.SALE_ID) INNER JOIN SHOWROOM ON (SALE.SHOWROOM_ID=SHOWROOM.SHOWROOM_ID) WHERE (SALE.SALE_TYPE='S') AND (SHOWROOM.SHOWROOM_ID IN (1, 2, 3) )
  • 36. 36 07/03/2012 Footer @select Функция @select используется для дублирования объектов, то есть, если вам необходимо один и тот же код SQL использовать в нескольких объекта или в сложных формула, то вы можете вместо SQL выражения использовать дануню функцию. Рассмотрим пример: У нас есть объект «Model» (MODEL.MODEL_NAME+' '+MODEL.MODEL_TRIM+' '+MODEL.MODEL_ENGINE) Мы создадим еще один объект – «Model for rental» (@select(CarModel)). При использование это объекта, в запрос будет подставляться такой же код, как и при использование объекта «Model»
  • 37. 37 07/03/2012 Footer @where Функция @where() также заменят SQL выражение на путь к объекту:
  • 38. 38 07/03/2012 Footer @agreagate_aware Функция @agregate_aware необходима для работы с сумарными таблицами. @aggregate_aware(<SELECT statement for highest agg level>, <SELECT statement for second highest agg level>, .. <SELECT statement for second lowest agg level>, <original SELECT statement for basic agg calculation>)
  • 39. 39 07/03/2012 Footer Using Hierarchies Иерархия – упорядоченная серия взаимовсвязанных измерений, которые используются для многомерного анализа, на пример, как на рисунке: Страна, Регион, Город. В ВО иерархия может быть естественной, например (Год, Месяц, День) или логической, то есть созданный в собственном порядке.
  • 40. 40 07/03/2012 Footer Working with hierarchies По умолчанию ирархию повторяет очередность объектов в классе. Именно поэтому важно при созданию юниверса организовывать объекты в классе в нужной иерархии. Для просмотра существующей иерархии или создание своей иерархии можно использовать Hierarchies Editor
  • 41. 41 07/03/2012 Footer Automatic time hierarchy При создание таких объектов типа дата, можно автоматически создавать автоматическую временную иерархию:
  • 42. 42 07/03/2012 Footer Using List of Values В дизайнере при создании нового измерения или объекта деталь, автоматически создается список значений. Сразу этот список физически не создаются, но у вас есть возможность получить его, направив запрос к БД. Список значений базируется на SELECT DISTINCT. Его можно экспортировать вместе с юниверсов, тогда список значений конвертируется в XML и сохранается в файле *.unw в репозотирий ВО.
  • 43. 43 07/03/2012 Footer Cascading LOV В дизайнере можно создать каскадный список значений, который упростит выбор параметров для пользователей.
  • 44. 44 07/03/2012 Footer Derived Tables Производная таблица это виртуальная таблица, которую можно создать в структуре юниверса. Такая таблица содержит в себе SQL выражение. Пример таблицы DT_Sales_to_Rentals: SELECT CLIENT.CLIENT_ID, MODEL.MODEL_ID, (CASE SALE.SALE_TYPE WHEN 'R' THEN SALE.SALE_TOTAL ELSE 0 END) AS Rental_Total, (CASE SALE.SALE_TYPE WHEN 'S' THEN SALE.SALE_TOTAL ELSE 0 END) AS Sales_Total FROM CLIENT, MODEL,SALE,SALE_MODEL WHERE CLIENT.CLIENT_ID = SALE.CLIENT_ID AND MODEL.MODEL_ID = SALE_MODEL.MODEL_ID AND SALE_MODEL.SALE_ID = SALE.SALE_ID Nested Derived Tables
  • 45. 45 07/03/2012 Footer Index awareness Index awareness позволяет нам пользоваться преимуществом primary, foreign key, то есть, допустим у нас есть запрос: В условие мы выбираем UK и US. А если мы воспользуемся Index awareness, то запрос примет следующий вид: То есть у нас из запроса исчезла таблица COUNTRY и мы отфильтровали UK и US по foreign key – MAKER.COUNTRY, тем самым улучшив производительность запроса. SELECT MAKER.MAKER_NAME, max(MODEL.MODEL_PRICE) FROM MAKER, MODEL, COUNTRY COUNTRY_MAKER WHERE (MODEL.MAKER_ID=MAKER.MAKER_ID) AND (MAKER.COUNTRY_ID=COUNTRY_MAKER.COUNTRY_ID) AND COUNTRY_MAKER.COUNTRY_NAME In ( 'United Kingdom','USA' ) GROUP BY MAKER.MAKER_NAME SELECT MAKER.MAKER_NAME, max(MODEL.MODEL_PRICE) FROM MAKER, MODEL WHERE (MODEL.MAKER_ID=MAKER.MAKER_ID) AND MAKER.COUNTRY_ID In ( 44,1 ) GROUP BY MAKER.MAKER_NAME
  • 46. 46 07/03/2012 Footer To set up primary key index awareness Primary key: COUNTRY_REGION.COUNTRY_ID WHERE: COUNTRY_REGION.COUNTRY_ID = CLIENT.COUNTRY_ID
  • 47. 47 07/03/2012 Footer Linking Universes ВО позваляет соединять несколько юниверсов в обном файле *.unw, что дает ряд преимущест (удобство при создание объектов и тп.) и не достатков (возможно подключиться только к одному источнику данных, списки значений хранятся только для одного из юниверсов, контексты должны быть определены для каждого юниверса и тд.)
  • 48. 48 07/03/2012 Footer Applying Universe Access Restrictions В юниверсе можно настраивать ограничения доступа для определенных пользователей или для груп пользователей. Существуют следующие виды ограничений: • Соединение • Управление запросом • Контроль за SQL • Доступ на уровне объектов • Доступ на уровне строк • Доступ к альтернативным таблицам
  • 49. 49 07/03/2012 Footer Applying Universe Access Restrictions (cont)
  • 50. 50 07/03/2012 Footer Applying Universe Access Restrictions (cont)
  • 51. 51 07/03/2012 Footer Managing Universes У вас есть возможность получить всю необходимую информацию по юниверсу (объекты, связы, таблицы, схема и тп). Для это необходимо: File->Print Preview/Print. В опциях юнивераса можно выбрать объекты, которые необходимо отразить в документации.
  • 52. 52 07/03/2012 Footer Importing a universe После того, как вы закончили разрабатывать юниверс, его необходимо импортировать в репозиторирь ВО (CMS), для этого его нужно сохранить как файл *.unw, желательно чтобы название файла совпадало с название юниверса в параметрах.