Використання скриптової мови Oracle Warehouse Builder. Професіоналові-розробнику

Введення


Дана стаття буде цікавою фахівцям, які займаються розробкою сховищ даних за допомогою програмного засобу Oracle Warehouse Builder (OWB). Як відомо, даний засіб являє собою графічний інструмент створення багатомірних моделей з допомогою засобів Drag and Drop і різних Wizard "ов, не вдаючись до програмування. Це дає велика перевага проектувальникам, які не володіють програмуванням, і в той же час є і недоліком, тому що при проектуванні великої моделі, що включає велику кількість показників, вимірів і ETL-процедур, сам процес проектування буде монотонним, що включає велику кількість повторюваних операцій. Така процедура не виключає появи помилок, і буде займати багато часу.
Найчастіше з OWB працюють фахівці, яким не байдуже програмування, але яких необхідність виконувати безліч однотипних операцій сильно пригнічує. Навіщо вручну проробляти однотипні операції, коли це можна запрограмувати? Тим більше, OWB представляє таку можливість – існує скриптова мова OMB Plus.

У даній статті розглядається ідея програмного створення моделі в OWB за допомогою скриптової мови. Також наведені докладні приклади використання OMB Plus.


Скриптова мова OWB


Виконувався оточення – запуск скриптів, особливості


У складі OWB є мова програмування OMB Plus, який призначений для створення сценаріїв (скриптів). OMBPlus – це розширення мови TCL, яке дозволяє писати синтаксичні конструкції загального призначення з використанням змінних, циклів, умов, обробок помилок і т.д.
Середовище, з допомогою якої відбувається виконання команд, також називається OMB Plus. Запуск середовища виконання в текстовому режимі проводиться за допомогою такої команди:

   $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:



Якщо ж такий символ використовується в імені об'єкта, то необхідно його позначати зворотним слешем ().
Наприклад,


 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.
Приклад:

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 операторів 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 оператора 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:tempvalidate_dim.log” WRITE ALL
}

У доданому файлі наведено приклад валідації вимірювань у репозитарії OWB.


Висновок


Використання OMB Plus дозволяє автоматизувати всі операції із супроводу моделі в Oracle Warehouse Builder.
Якщо визначення моделі знаходиться в зовнішньому джерелі, наприклад, у файлах формату MS Excel або в таблицях СУБД Oracle Database, То можна написати процедури на PLSQL, які б генерували скрипти OMP Plus за заздалегідь описаної моделі. У доданому архіві розглянуто випадок, коли визначення моделі зберігається в СУБД Oracle, І необхідно перенести її в OWB. Для генерації tcl-скриптів створення моделі розроблено PL / SQL-пакет, вихідний код якого також знаходиться в архіві.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*