
Евгения Качалкина
ekachalkina@hotboxl.ru
СОДЕРЖАНИЕ
Данная статья будет интересна специалистам, занимающимся разработкой хранилищ данных с помощью программного средства Oracle Warehouse Builder (OWB).
Как известно, данное средство представляет собой графический инструмент создания многомерных моделей с помощью средств Drag and Drop и различных Wizard'ов,
не прибегая к программированию. Это дает большое преимущество проектировщикам, не владеющих программированием, и в то же время является и недостатком,
т.к. при проектировании большой модели, включающей большое количество показателей, измерений и ETL-процедур, сам процесс проектирования будет монотонным,
включающим большое количество повторяющихся операций. Такая процедура не исключает появления ошибок, и будет занимать много времени.
Чаще всего с OWB работают специалисты, которым не чуждо программирование, но которых необходимость выполнять множество однотипных операций сильно удручает.
Зачем вручную проделывать однотипные операции, когда это можно запрограммировать? Тем более, OWB представляет такую возможность - существует скриптовый язык OMB Plus.
В данной статье рассматривается идея программного создания модели в OWB с помощью скриптового языка. Также приведены подробные примеры использоания OMB Plus.
В составе OWB имеется язык программирования OMB Plus, который предназначен для создания сценариев (скриптов). OMBPlus - это расширение языка TCL, которое позволяет писать
синтаксические конструкции общего назначения с использованием переменных, циклов, условий, обработок ошибок и т.д.
Среда с помощью которой происходит выполнение команд также называется OMB Plus.
Запуск среды выполнения в тектовом режиме производится с помощью следующей команды:
$OWB_HOME/owb/win32/ombplus.batгде $OWB_HOME - каталог в который установлен OWB.

Также имеется графический вариант консоли выполнения OMB Plus, - его запуск производится с помощью команды:
$OWB_HOME/owb/win32/ombpluss.bat

Чтобы не вводить команды вручную, можно написать скрипт, используя синтаксис команд OMB Plus, и оформить его в виде отдельного файла с расширением tcl.
Запуск программы осуществляется с помощью следующей команды:
$OWB_HOME/owb/win32/ombplus.bat <полный путь>/<имя файла>.tcl
Существуют некоторые особенности в использовании команд в OMB Plus:
Например, OMBCREATE TABLE 'DW\$SALES' |
OMB Plus имеет следующие группы команд:
Рассмотрим основные языковые конструкции языка.
1. Присоединение к репозиторию.
Перед выполнением любых операций в репозитарии OWB, к нему необходимо подключиться. Оператор OMBConnect производит подключение к репозитарию. Оператор OMBCC выбирает в качестве
текущего указанный проект и модуль.
OMBCONNECT <owb_owner>/<password owb_owner>@<host>:<port>:<service name> OMBCC '/<проект>/<модуль>'Пример:
OMBCONNECT owb_owner/owb_owner@test.ru:1521:orcl OMBCC '/ROLAP_TEST/RR_MART'
2. Оператор работы с циклами.
Для обработки циклов предназначен оператор foreach
Пример:
foreach tableName [OMBLIST TABLE ] {\
... команды с обработкой каждого значения переменной '$tableName'
}
3. Оператор обработки условий.
Как и в абсолютном большинстве языков программирования для обработки условий применяется оператор if.
Пример:
if {$var == "VARCHAR2"} {
} elsif {:} {
}
}
4. Оператор присваивания. set i 1
Безусловно, для разработчков наибольший интерес представляют команды для оперирования с моделью данных в OWB. Для создания метаданных модели предназначен оператор OMBCREATE; тип создаваемого объекта указывается в качестве второго аргумента этого оператора. Рассмотрим команды создания измерений и кубов.
Создание измерений
1. Создание измерений.
Для создания измерения используется вызов OMBCREATE DIMENSION .
Пример:
OMBCREATE DIMENSION 'Dim_Product'\
SET PROPERTIES (BUSINESS_NAME, DESCRIPTION)\
VALUES ('Продукт','Измерение Продукт')\
SET REF SEQUENCE 'META_SEQ'\
... ... ...
2. Определение уровней измерения.
Для определения уровней измерения используется фраза ADD LEVEL оператора OMBCREATE DIMENSION.
Пример:
ADD LEVEL 'TOTAL' SET PROPERTIES (BUSINESS_NAME) VALUES ('Итого')\
ADD LEVEL 'PRODUCT_GROUP' SET PROPERTIES (BUSINESS_NAME) VALUES \ ('Группа продуктов')\
ADD LEVEL 'PRODUCT' SET PROPERTIES (BUSINESS_NAME) VALUES ('Продукт')\
... ... ...
3. Определение атрибутов измерения.
Для определения атрибутов для уровней измерения используется фраза ADD LEVEL_ATTRIBUTE OF LEVEL оператора OMBCREATE DIMENSION.
Пример:
ADD LEVEL_ATTRIBUTE 'ID' OF LEVEL 'PRODUCT_GROUP'\
SET REF DIMENSION_ATTRIBUTE 'ID'\
ADD LEVEL_ATTRIBUTE 'NAME' OF LEVEL 'PRODUCT_GROUP'\
SET REF DIMENSION_ATTRIBUTE 'NAME'\
ADD LEVEL_ATTRIBUTE 'DESCRIPTION' OF LEVEL 'PRODUCT_GROUP'\
SET REF DIMENSION_ATTRIBUTE 'DESCRIPTION'\
... ... ...
4. Создание иерархии.
Для создания иерархии используется фраза ADD HIERARCHY оператора OMBCREATE DIMENSION.
Пример:
ADD HIERARCHY 'H1'\
SET REF LEVELS ('TOTAL','PRODUCT_GROUP','PRODUCT')\
В реальных проектах оператор создания измерения может иметь довольно большой размер. В прилагаемом файле приведен законченный пример создания 4-х уровневого измерения.
Создание кубов
1. Создание куба.
Для создания куба используется вызов OMBCREATE CUBE .
Пример:
OMBCREATE CUBE 'cube_01'\
SET PROPERTIES (BUSINESS_NAME, DESCRIPTION)\
VALUES ('Куб_01','Куб_01')\
... ... ...
2. Добавление измерений в куб.ADD DIMENSION_USE 'Dim_Product'\ SET REF LEVEL 'PRODUCT' OF DIMENSION 'Dim_Product'\ ... ... ...3. Добавление показателя в куб.
ADD MEASURE 'MES_SALES'\
SET PROPERTIES (DATATYPE)VALUES ('NUMBER')\
... ... ...
В прилагаемом файле приведен законченный пример создания куба с состоящего из 3-х измерений и содержащего два показателя.
Создание преобразований (mapping)
Чтобы осуществить преобразования данных из информационных источников и далее сохранить эти данные в аналитическом хранилище, необходимо определить, так называемые, преобразования
(mapping). Для создания преобразований в OMBPlus используется оператор OMBCREATE MAPPING
Пример:
OMBCREATE MAPPING 'LOAD_CUBE_01'\
SET PROPERTIES (DESCRIPTION) VALUES ('Загрузка показателей в куб CUBE_01')\
... ... ...
В общем случае преобразование может иметь в своем составе много операторов трансформации входящих данных. Рассмотрим эти операторы преобразования более подробно.
1. Добавление оператора <Входные параметры>.
Для добавления оператора <Входные параметры> используется фраза ADD INPUT_PARAMETER оператора OMBCREATE MAPPING.
Пример:
ADD INPUT_PARAMETER OPERATOR 'IN_PARAMS'\
ADD ATTRIBUTE 'P_START_TIME' OF GROUP 'OUTGRP1' OF OPERATOR 'IN_PARAMS' \
SET PROPERTIES (DATATYPE, LENGTH) VALUES ('VARCHAR2', '22')\
2. Добавление оператора <Таблица>.
Для добавления оператора <Таблица> используется фраза ADD TABLE OPERATOR оператора OMBCREATE MAPPING.
Пример:
ADD TABLE OPERATOR 'DIM_TIME_SOURCE' BOUND TO TABLE \ '../RR_SOURCE/DIM_TIME_SOURCE'\
В вышеописанном примере в преобразование добавляется оператор <Таблицы> со значениями справочника "Период времени".
3. Добавление оператора <Фильтр>.
Для добавления оператора <Фильтр> используется фраза ADD FILTER OPERATOR оператора OMBCREATE MAPPING.
Пример:
ADD FILTER OPERATOR 'FILTER_TIME'\
SET PROPERTIES (FILTER_CONDITION) VALUES ('DATE_VALUE between \
to_date(P_START_TIME, ''dd.mm.yyyy hh24:mi:ss'') and to_date(P_END_TIME, ''dd.mm.yyyy hh24:mi:ss'')')\
ADD ATTRIBUTE 'P_START_TIME' OF GROUP 'INOUTGRP1' OF OPERATOR 'FILTER_TIME'\
SET PROPERTIES (DATATYPE, LENGTH) VALUES ('VARCHAR2', '22') \
... ... ...
4. Добавление оператора связи между элементами.
Для добавления оператора связи между элементами используется фраза ADD CONNECTION FROM ATTRIBUTE оператора OMBCREATE MAPPING.
Пример:
ADD CONNECTION FROM ATTRIBUTE 'P_START_TIME' OF GROUP 'OUTGRP1' OF \
OPERATOR 'IN_PARAMS' \
TO ATTRIBUTE 'P_START_TIME' OF GROUP 'INOUTGRP1' OF OPERATOR 'FILTER_TIME' \
... ... ...
5. Добавление оператора представления (view) - источника исходных данных.
Для добавления оператора представления (view) используется фраза ADD VIEW OPERATOR оператора OMBCREATE MAPPING.
Пример:
ADD VIEW OPERATOR 'V_CUBE_01' BOUND TO VIEW '../RR_SOURCE/V_CUBE_01' \
... ... ...
6. Добавление оператора <Join>.
Для добавления оператора <Join> используется фраза ADD JOINER OPERATOR оператора OMBCREATE MAPPING.
Пример:
ADD JOINER OPERATOR 'JOIN' SET PROPERTIES (JOIN_CONDITION) \
VALUES ('INGRP1.ID = INGRP2.TIME_ID') \
ADD ATTRIBUTE 'ID' OF GROUP 'INGRP1' OF OPERATOR 'JOIN' SET PROPERTIES \
(DATATYPE) VALUES ('NUMBER') \
ADD CONNECTION FROM ATTRIBUTE 'ID' OF GROUP 'INOUTGRP1' OF OPERATOR \
'FILTER_TIME' TO ATTRIBUTE 'ID' OF GROUP 'INGRP1' OF OPERATOR 'JOIN' \
ADD ATTRIBUTE 'DIM_TIME' OF GROUP 'INGRP2' OF OPERATOR 'JOIN' SET PROPERTIES \
(DATATYPE, LENGTH) VALUES ('VARCHAR2', '64') \
ADD CONNECTION FROM ATTRIBUTE 'DIM_TIME' OF GROUP 'INOUTGRP1' OF \
OPERATOR 'V_CUBE_01' \
... ... ...
В вышеописанном примере в преобразование добавляется оператор <Join> для связи операторов <Фильтр> и представления "V_CUBE_01".
7. Добавление оператора <KEY_LOOKUP>. Оператор <KEY_LOOKUP> используется для получения ключа измерения (Id измерения в хранилище).
Для добавления оператора <KEY_LOOKUP> используется фраза ADD KEY_LOOKUP OPERATOR оператора OMBCREATE MAPPING.
Пример:
ADD KEY_LOOKUP OPERATOR 'L_DIM_TIME' SET PROPERTIES (BOUND_NAME, \
BOUND_LEVEL) VALUES ('DIM_TIME','MONTH') \
ADD ATTRIBUTE 'DIM_TIME' OF GROUP 'INGRP1' OF OPERATOR 'L_DIM_TIME' SET \
PROPERTIES (DATATYPE, LENGTH) VALUES ('VARCHAR2', '64') \
ADD CONNECTION FROM ATTRIBUTE 'DIM_TIME' OF GROUP 'OUTGRP1' OF \
OPERATOR 'JOIN' \
TO ATTRIBUTE 'DIM_TIME' OF GROUP 'INGRP1' OF OPERATOR 'L_DIM_TIME'\
... ... ...
В прилагаемом файле приведен пример создания преобразования. Указанный скрипт не является готовым решением, он лишь задает пример подхода к построению преобразований (в нашем примере не реализован весь алгоритм ETL , в частности, не генерируются связи между операторами KEY_LOOKUP и таблицей приемника).
Валидация модели
После прогонки скриптов в OMB Plus и генерации модели, необходимо сделать валидацию (проверку) всех объектов. Для этого также можно также воспользоваться скриптовым языком.
Для валидации используется оператор OMBVALIDATE.
Пример (валидация всех измерений):
foreach dimName [OMBLIST DIMENSIONS] {
OMBVALIDATE DIMENSION '$dimName' \
OUTPUT TO FILE 'C:\temp\validate_dim.log' WRITE ALL
}
В прилагаемом файле приведен пример валидации измерений в репозитарии OWB.
Заключение
Использование OMB Plus позволяет автоматизировать все операции по сопровождению модели в Oracle Warehouse Builder.
Если определение модели находится во внешнем источнике, например, в файлах формата MS Excel или в таблицах СУБД Oracle Database,
то можно написать процедуры на PLSQL , которые бы генерировали скрипты OMP Plus по заранее описанной модели.
В прилагаем архиве рассмотрен случай, когда определение модели хранится в СУБД Oracle, и необходимо перенести ее в OWB.
Для генерации tcl-скриптов создания модели разработан PL/SQL-пакет, исходный код которого также находится в архиве.
Основная используемая литература по подготовке данного материала - документация Oracle:
OracleR Warehouse Builder API and Scripting Reference 10g Release 2 (10.2) B28225-01
OracleR Warehouse Builder Users Guide 10g Release 2 (10.2) B28223-03