|
|
|||||||||||||||||||||||||||||
|
Использование скриптового языка Oracle Warehouse Builder. Профессионалу-разработчикуИсточник: realcoding
Данная статья будет интересна специалистам, занимающимся разработкой хранилищ данных с помощью Oracle Warehouse Builder (OWB). Чаще всего с OWB работают специалисты, которым не чуждо программирование. Зачем вручную проделывать однотипные операции, когда это можно запрограммировать? Тем более, OWB представляет такую возможность - существует скриптовый язык OMB Plus. ВведениеДанная статья будет интересна специалистам, занимающимся разработкой хранилищ данных с помощью программного средства Oracle Warehouse Builder (OWB). Как известно, данное средство представляет собой графический инструмент создания многомерных моделей с помощью средств Drag and Drop и различных Wizard'ов, не прибегая к программированию. Это дает большое преимущество проектировщикам, не владеющих программированием, и в то же время является и недостатком, т.к. при проектировании большой модели, включающей большое количество показателей, измерений и ETL-процедур, сам процесс проектирования будет монотонным, включающим большое количество повторяющихся операций. Такая процедура не исключает появления ошибок, и будет занимать много времени. Скриптовый язык OWB
В составе OWB имеется язык программирования OMB Plus, который предназначен для создания сценариев (скриптов). OMBPlus - это расширение языка TCL, которое позволяет писать синтаксические конструкции общего назначения с использованием переменных, циклов, условий, обработок ошибок и т.д. $OWB_HOME/owb/win32/ombplus.bat где $OWB_HOME - каталог в который установлен OWB. Рис.1 Текстовая консоль выполнения OMB Plus Также имеется графический вариант консоли выполнения OMB Plus, - его запуск производится с помощью команды: $OWB_HOME/owb/win32/ombpluss.bat Рис.2 Графическая консаль выполнения OMB Plus Чтобы не вводить команды вручную, можно написать скрипт, используя синтаксис команд OMB Plus, и оформить его в виде отдельного файла с расширением tcl. $OWB_HOME/owb/win32/ombplus.bat <полный путь>/<имя файла>.tcl Существуют некоторые особенности в использовании команд в OMB Plus:
Основные командыOMB Plus имеет следующие группы команд:
Рассмотрим основные языковые конструкции языка. 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 tableName [OMBLIST TABLE ] { ... команды с обработкой каждого значения переменной '$tableName' } 3. Оператор обработки условий. if {$var == "VARCHAR2"} { } elsif {:} { } }4. Оператор присваивания. Для присвоания значений переменным использется оператор set. Пример: set i 1Команды создания модели Безусловно, для разработчков наибольший интерес представляют команды для оперирования с моделью данных в OWB. Для создания метаданных модели предназначен оператор OMBCREATE; тип создаваемого объекта указывается в качестве второго аргумента этого оператора. Рассмотрим команды создания измерений и кубов. Создание измерений1. Создание измерений. OMBCREATE DIMENSION 'Dim_Product' SET PROPERTIES (BUSINESS_NAME, DESCRIPTION) VALUES ('Продукт','Измерение Продукт') SET REF SEQUENCE 'META_SEQ' ... ... ... 2. Определение уровней измерения. 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 '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 'H1' SET REF LEVELS ('TOTAL','PRODUCT_GROUP','PRODUCT') В реальных проектах оператор создания измерения может иметь довольно большой размер. В прилагаемом файле приведен законченный пример создания 4-х уровневого измерения. Создание кубов1. Создание куба. OMBCREATE CUBE 'cube_01' SET PROPERTIES (BUSINESS_NAME, DESCRIPTION) VALUES ('Куб_01','Куб_01') ... ... ...2. Добавление измерений в куб. Для добавления измерения в куб используется фраза ADD DIMENSION операторов OMBCREATE CUBE. Пример: ADD DIMENSION_USE 'Dim_Product' SET REF LEVEL 'PRODUCT' OF DIMENSION 'Dim_Product' ... ... ...3. Добавление показателя в куб. Для добавления показателя в куб служит фраза ADD DIMENSION_USE операторов OMBCREATE CUBE. Пример: 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 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:tempvalidate_dim.log' WRITE ALL } В прилагаемом файле приведен пример валидации измерений в репозитарии OWB. ЗаключениеИспользование OMB Plus позволяет автоматизировать все операции по сопровождению модели в Oracle Warehouse Builder. Основная используемая литература по подготовке данного материала - документация Oracle: Ссылки по теме
|
|