воскресенье, 21 ноября 2010 г.

Страница документации по Oracle Data Integrator 10.1.3.6

Заметка переехала на постоянное место проживания на странице Документация.

Старый текст заметки.
Страница с последней версией документации по ODI 10.1.3.6. Состоит из ссылок на документы по различным аспектам ODI. Примерно такая же документация (как и заглавная страница) включается в инсталляционный архив, именно с загрузки этой страницы я и начинал процесс инсталляции ODI.
Странно, что скачивать инсталляцию приходится версии 10.1.3.5, а документация уже по 10.1.3.6.

пятница, 19 ноября 2010 г.

Что такое интерфейс ODI?

Как уже упоминалось ранее, интерфейс это такой объект, который позволяет преобразовывать данные из источника в приемник. Или, в терминах построения ХД, это реализация маппинга. Интерфейс состоит из таких главных частей:

В документации рекомендуют создавать интерфейс согласно такому порядку:

среда, 17 ноября 2010 г.

ODI и Windows 7.

Приветствую.

Сегодня хочу рассказать о некоторых особенностях работы клиентских программ Oracle Data Integrator в ОС Windows 7.

1. Инсталляция клиентской части в Windows 7.
Инсталлятор ODI проверяет версию операционной системы перед инсталляцией, и, не поддерживая указанную ОС, не дает продолжить инсталляцию. Один из вариантов решения этой проблемы описан здесь, и заключается он в том, чтобы запускать файл инсталляции setup.bat с указанием опции -ignoresysprereqs.

понедельник, 15 ноября 2010 г.

Как разрабатывать свои модули знаний в ODI.

В продолжение этого поста о модулях знаний, перевод той части документации, где даются рекомендации по разработке своих собственных модулей знаний.

пятница, 12 ноября 2010 г.

Как работает СУБД глазами программиста.

Приветствую.

Обнаружил недавно интересные заметки о том, как работает большинство реляционных СУБД, с точки зрения программирования этих самых систем управления.
В пяти частях. Некоторые описываемые моменты я попытался выделить.

Часть 1. Оптимизация внутри СУБД - ключевой момент.
Часть 2. Запрос это некое дерево операций (проксирующие, контейнерные, смешанные операции).
Часть 3. Перестроение плана запроса в процессе его выполнения.
Часть 4. Почему нет свободных колоночных реляционных СУБД.
Часть 5. Индексы.

среда, 10 ноября 2010 г.

Небольшое описание инсталляции ODI на MS SQL Server.

Приветствую.

Попытался описать процесс инсталляции ODI на Microsoft SQL Server 2008. Это описание доступно по ссылке, а в блоге на него будет ссылка с верхнего перечня страниц блога. Там где Поиск и т.п.
Пока описано только до момента запуска Дизайнера, т.е. инсталляция самого ODI, инсталляция SQL сервера, дополнительно необходимое ПО и перечень драйверов, а также создание мастер репозитория и рабочего репозитория.
Планирую эту страницу дополнять в будущем.

понедельник, 8 ноября 2010 г.

Что такое модули знаний ODI.

Недавно получил письмо от коллеги, с просьбой помочь разобраться с тем, как работают модули знаний в ODI. Я постарался ему ответить, а для блога подготовил вольный перевод одной части файла документации odi_km_dev_guide v1.3.pdf, посвященной как раз модулям знаний.

Что такое модуль знаний?
Модуль знаний - это шаблон построения подпрограммы. Каждый модуль знаний, как и процедура, состоит из одного или более шагов. Каждый шаг модуля знаний может запускать команды определенной технологии, из тех технологий, которые поддерживает ODI.

суббота, 6 ноября 2010 г.

Создание временных таблиц процедурами ODI.

Приветствую.

Хочу рассказать о подходе, который я, как и многие мои коллеги, используют, когда необходимо создать временную таблицу, которая будет использоваться в загрузке данных.

В отличие от описанного здесь алгоритма создания временной таблицы через интерфейс, я предпочитаю использовать для этих целей процедуры Oracle Data Integrator.

четверг, 4 ноября 2010 г.

Пиктограммы в ODI.

Приветствую.

Один мой коллега заинтересовался видом пиктограмм, которые используются в ODI для интерфейсов проекта. Он прислал вот такой снимок экрана, который я немного увеличил:

вторник, 2 ноября 2010 г.

Экспорт сценариев из ODI.

Как дополнение к предыдущему рассказу о перипетиях импорта-экспорта процедуры ODI, я хочу рассказать сегодня об одном моменте, связанном с массовым экспортом сценариев из Дизайнера.

Как видно на приведенном снимке экрана, при выборе команды "экспортировать все сценарии (Export All Scenarios)" на папке или всем проекте, появится диалог с выбором тех типов объектов, сценарии которых необходимо экспортировать. При этом, также, можно указать кодировку, в которой будут сохранены файлы со сценариями:

понедельник, 1 ноября 2010 г.

2010-11-01.


ODI 11g - Часть 6/11 - операции Union, Minus, Intesect.
11g Oracle Data Integrator – Part 6/11g – Union , Minus, Intersect
Как организовать загрузку данных из нескольких источников с использованием операторов INTERSECT, MINUS, UNION в одном интерфейсе.
Дата публикации: 2010-11-12, Комментариев: 3


ODI 11g - Часть 7/11 - Создание репозиториев.
11g Oracle Data Integrator – Part 7/11g – SUNOPSIS MEMORY ENGINE
Использование SUNOPSIS MEMORY ENGINE для хранения промежуточных расчетов не в таблицах СУБД, а в памяти. Обновление переменных из таблиц HyperSQL, использование Jython, Java кода или использование HyperSQL для промежуточных данных при работе интерфейса. Теоретически, использование СУБД, которая полностью помещается в памяти может помочь в ситуации необходимости организовать загрузку сверхбольшого количества маленьких таблиц.
Дата публикации: 2010-11-16, Комментариев: 0

воскресенье, 31 октября 2010 г.

Переносим объект из одного проекта ODI в другой.

Созданная в прошлом посте копия проекта W_Project1 поможет провести эксперимент по переносу объектов из одного проекта в другой. Если мы попробуем использовать переменную Variable1 из проекта W_Project1 в пакете проекта W_Project2 Дизайнер сообщит об ошибке:

пятница, 29 октября 2010 г.

Дуплицируем папку ODI или весь проект.

Что происходит при дуплицировании единичных объектов ODI примерно ясно. Создается копия того интерфейса или процедуры или пакета, к которому применена команда Duplicate.

А что произойдет, если сделать дубликат папки ODI или даже всего проекта? В зависимости от количества объектов в папке или в проекте это может занять разное время (иногда достаточно большое).

среда, 27 октября 2010 г.

Создание временной таблицы через ODI интерфейс.

Интересный метод создания временных таблиц подсмотрел вот в этой публикации.
Я, до начала перевода статьи, так никогда сам не делал, но, возможно, это кому-нибудь будет полезно.


Как создать временную таблицу в интерфейсе ODI.
Создайте новый интерфейс, задайте его имя, выберите контекст оптимизации и выберите подходящую схему для установленной опции Стейджинговая область отлична от целевой области (Staging Area Different From Target).

понедельник, 25 октября 2010 г.

Быстрый и легкий путь создания интерфейсов в ODI.

Сегодня я хочу опубликовать перевод статьи "Faster and Easiest way to design Interfaces". Описанный там способ позволяет быстро создавать интерфейсы, имея только модель данных целевых таблиц. Хорошо применять этот метод, когда необходимо загрузить данные из систем источников в хранилище данных без преобразований.


1. Определите папку с моделью, в которой уже есть модели целевых таблиц. По нажатию правой кнопки мыши на модели выберите команду генерации загрузочных интерфейсов (Generate Interface In)

суббота, 23 октября 2010 г.

Поведение переменных в процедурах и интерфейсах ODI.

Сегодня хочу рассказать о том, как ведут себя переменные в процедурах и интерфейсах. Напомню, что значение переменной в процедуре и интерфейсе может только использоваться в каких-то командах. Установить значение переменной ODI в интерфейсе нельзя.

четверг, 21 октября 2010 г.

Быстрое редактирование параметров запуска сценария ODI.

Сегодня хочу рассказать о том, как можно быстро изменить параметры запуска сценария из пакета Oracle Data Integrator.

Рассмотрим пример запуска сценария из проверочного пакета.
Общие свойства объекта OdiStartScen:

вторник, 19 октября 2010 г.

Изучаем поведение переменных ODI.

Как я уже рассказывал, в пакете переменные могут быть объявлены, обновлены, им может быть установлено значение или они могут быть использованы для сравнения, с последующим изменением порядка выполнения пакета.

Недавно встретилась ситуация, когда в пакете была такая последовательность для одной переменной: Декларация -> Обновление -> Декларация.

И я решил проверить, это просто ошибка, или в этом есть какой-то смысл?

воскресенье, 17 октября 2010 г.

Удаление временных $ таблиц.

Сегодня небольшая заметка по мотивам вот этой записи, посвященная удалению временных таблиц из БД.

Задачи по обработке данных, при которых используются стандартные модули знаний (knowledge modules) ODI предполагают создание временных таблиц и их использование в процессе ETL преобразований. Например, модуль загрузки данных из файла в таблицу, создаст в БД временную таблицу С$_MY_FILE_DATA, загрузит "сырые" данные туда, и уже после этого перенесет данные в таблицу MY_FILE_DATA.

суббота, 16 октября 2010 г.

Организационное.

Приветствую коллеги.

Немного организационных новостей. В блоге появилась панель ссылок на страницы блога. Панель сейчас располагается в верхней части блога. Первая страница - информация о блоге и о том, как со мной связаться. Пожалуйста, если вас интересует какая-то информация об ODI и я смогу в этом помочь - обращайтесь.
Там же находится и дисклеймер.
Вторая ссылка - на страницу поиска. Поиск по статьям этого блога и другим сайтам, связанным с тематикой Oracle Data Integrator. Поиск все еще в процессе настройки, но по данному блогу уже ищет.
Ну и подписывайтесь на обновления через RSS. До конца года постов в блоге хватит.

пятница, 15 октября 2010 г.

Машины хранилищ данных.

Довольно старая статья об архитектуре специализированных программно-аппаратных комплексов для хранилищ данных.

Результаты исследований и разработок позволили в начале 1990-х годов сделать такой вывод: будущее принадлежит параллельным системам для организации баз данных, создаваемым на базе серийных процессоров, памяти и дисков. Каждый такой процессор может работать только со своей областью базы данных и обмениваться сообщениями с другими процессорами через сетевое соединение или общую память. Это позволяет разбивать большие таблицы на меньшие и проводить их обработку параллельно.

И далее полная версия статьи Александра Александрова опубликованная в Открытых Системах.

четверг, 14 октября 2010 г.

Отправляем письмо из ODI (улучшенная версия).

Пакет SEND_MAIL, описанный в предыдущем сообщении меня устраивал всем. Всем, кроме невозможности отправить многострочное письмо. В принципе, отправить две и более строки из ODI совсем не сложно. Вставляем в пакет odisendmail компоненту, где пишем все, что прийдет в голову:


Но хотелось бы, все же, использовать для этой цели пакет, а вернее, сгенерированный из пакета сценарий.

вторник, 12 октября 2010 г.

Как присвоить значение или сравнить 2 переменные ODI.

Сегодня хочу рассказать об одной особенности присваивания определенного значения переменной в пакете. Значение переменной присваивается из строкового поля Value окна свойств переменной:


В этом пакете используется две переменные, для первой переменной устанавливается значение 10, для второй переменной попробуем установить значение, равное значению первой переменной. Затем обе переменных отобразим с помощью raise exception метода:


Как видно, значение второй переменной - строка #Variable1, а вовсе не строка 10. Для того, чтобы в пакете присвоить значение одной переменной другой переменной, необходимо указывать полное наименование, включая проект, или ключевое слово Global для глобальных переменных.

Тот же подход необходимо использовать если необходимо сравнить значение двух переменных:

воскресенье, 10 октября 2010 г.

Отправляем письмо из ODI.

Отправлять письма из ODI не сложно. Для этого есть специальный компонент, который называется OdiSendMail:


Этот компонент позволяет выслать письмо на заданные адреса, указав при этом адрес почтового сервера, имя, от которого отправляется письмо, тему и тело письма, приложив, при необходимости, один или несколько файлов в аттачмент.

Использование этого компонента в случаях отладки ETL процессов позволяет ничего дальше на этот счет не придумывать. Разработчик вставляет отправку письма себе, сам формирует тело письма, заголовок и, возможно, прикладывает файл.

Но, в случае, если необходимо отправлять почту для целей мониторинга процессов загрузки, например, сообщать на электронную почту о падениях некоторых сценариев или о других нестандартных ситуациях, намного удобнее написать отдельный пакет, который будет заниматься отправкой письма.

пятница, 8 октября 2010 г.

Удаление потерянных данных в SNP_EXP_TXT.

Приветствую.

Сегодня я хочу опубликовать перевод статьи, посвященной удалению данных из одной из таблиц репозитория ODI. Почему возникла такая мысль и какие именно данные будут удаляться читайте ниже.


Привет народ. Есть небольшой "баг" в ODI, который заключается в том, что не очищается таблица SNP_EXP_TXT, когда удаляется "родительская" запись.

Так происходит потому, что в модели репозитория нет внешнего ключа между SNP_EXP_TXT и ее несколькими родительскими таблицами, именно потому, что таких таблиц несколько.

среда, 6 октября 2010 г.

Устанавливаем значения переменных для сценария.

Недавно случайно обнаружил одну особенность использования сценариев, которой спешу поделиться.
Итак, если мы выберем некий сценарий, сгенерированный из интерфейса, пакета или процедуры, мы увидим, что для сценария есть три подчиненных ветки в дереве объектов:

понедельник, 4 октября 2010 г.

Создаем и используем функцию PL/SQL из ODI.

Третий пост на тему использования процедур и функций PL/SQL в Oracle Data Integrator. На этот раз я попробую создать функцию PL/SQL сам, чтобы использовать ее вместо постоянной процедуры и функции СУБД.

Зачем именно в ETL коде? Это, как я уже указывал, уменьшает объем передаваемого на деплой кода, и, самое главное, это удобнее при разработке.
Ведь после каждого изменения таблицы, которая используется в процедуре или функции данная процедура, а то и весь модуль, в котором она находится, становится невалидной в СУБД Oracle. А пересоздание процедуры при каждом запуске сценария позволяет не затрагивать своими экспериментами других пользователей.

суббота, 2 октября 2010 г.

Один сценарий ODI - одна сессия в СУБД Oracle.

Предыдущий пост, посвященный получению в переменную ODI результата выполнения некоторой PL/SQL процедуры через значение переменной модуля(Oracle package) натолкнул меня на мысль проверить, как этот механизм будет работать при одновременном выполнении нескольких сценариев.

Если исходить с точки зрения того, как механизм использования модулей реализован в СУБД Oracle, то получалось, что, в случае выделения каждому сценарию своей собственной сессии, для каждого сценария мы будем иметь отдельную область памяти, в которую конкретизируется (instantiated) модуль, и, таким образом, в каждом модуле мы получим свое значение переменной.

пятница, 1 октября 2010 г.

Описание архитектуры Oracle Data Integrator.

Хорошая статья об архитектуре ODI с краткими описаниями и схемами взаимодействия компонентов этого сервера приложений.
Архитектура Oracle Data Integrator: краткий технический обзор

2010-10-01.


Менеджер Безопасности - Концепция и использование.
Security Module – Main concepts and use
Для чего необходим и как использовать Менеджер Безопасности (Security Manager) ODI. Как назначить права на разные объекты разным пользователям или разным ролям.
Дата публикации: 2010-10-06, Комментариев: 2


Jython в ODI для начинающих.
Jython’s Beginner Guide for ODI
Большое количество примеров использования Jython для работы со строками, файлами, массивами, командами ОС, SQL скриптами и т.п. Есть ссылки на документацию по Jython.
Дата публикации: 2010-10-15, Комментариев: 20


Послать результат SQL по почте.
Send SQL by Email
Отправка результатов выполнения SQL запроса в виде текста письма с помощью одной процедуры из двух шагов.
Дата публикации: 2010-10-19, Комментариев: 5


Преобразование временного ODI интерфейса в обычный.
ODI snippets: Converting a temp interface to a regular interface
Три простых шага, которые необходимо сделать чтобы преобразовать интерфейс заполнения временной таблицы (т.н. Желтый интерфейс) в постоянный интерфейс для заполнения целевой таблицы в БД.
Дата публикации: 2010-10-31, Комментариев: 0


ODI в примерах от Oracle.
ODI 11g: Oracle by Example
Список занятий, выложенных в разделе Oracle by Example по Oracle Data Integrator.
Дата публикации: 2010-10-31, Комментариев: 0


ODI 11g выделенный агент как Windows сервис.
ODI 11g standalone agent as a windows service
Описание проблемы, согласно которой установить агент ODI 11g как сервисную службу Windows можно только если у вас есть лицензия на Oracle Process Manager and Notification Server. Один из возможных путей решения данной проблемы - использование другой Java обертки - Tanuki Java Service Wrapper.
Дата публикации: 2010-10-19, Комментариев: 0


ODI: Timestamp с учетом локального времени и переходами на зимнее/летнее время.
Oracle Data Integrator (ODI): Timestamp with local timezone and daylights saving time
Описаны особенности (на примерах) настройки ODI для работы с типом данных timestamp с учетом временных зон.
Дата публикации: 2010-10-16, Комментариев: 2

четверг, 30 сентября 2010 г.

Как использовать PL/SQL процедуры и функции в ODI.

Сегодня хочу опубликовать перевод статьи "How to use PL/SQL procedures and functions in ODI", и, заодно, попробовать описанные там методы на практике.

В одном из пакетов, которые я разрабатывал, используется сохраненная процедура СУБД, которая сканирует таблицу в БД и возвращает некоторое значение. Было бы хорошо избавиться от нее, чтобы пакет был самодостаточным. В этом случае и отдавать на промышленную эксплуатацию пришлось бы всего один сценарий, и менять алгоритм процедуры можно было бы без администратора СУБД.

Итак, перевод:

вторник, 28 сентября 2010 г.

Из чего состоит проект ODI.

В поисках вдохновения решил почитать документацию по Oracle Data Integrator. Хотел, отталкиваясь от описания в документации, рассказать о том, что такое процедура. Но нашел более интересные части, их и переведу.

Составляющие проекта Oracle Data Integrator.
Следующие компоненты входят в дерево проекта ODI:
  1. Папка (Folder)
    Объекты ODI могут находиться в папках или подпапках.
  2. Пакет (Package)
    Пакет это наибольший возможный выполняемый объект ODI. Пакет состоит из последовательности шагов огранизованных в виде цепочки выполнения.

Новые ссылки о работе в Oracle Data Integrator.

Приветствую.

Нашел блог, где публиковалась информация "из области Data Warehouse, Business Intelligence, OLAP, ETL на платформе Oracle". К сожалению, блог не обновляется с марта 2010 года.

Привожу небольшую подборку интересного из раздела посвященного ETL:

понедельник, 27 сентября 2010 г.

Поиск одинаковых JOIN-ов в ODI.

Иногда бывает нужно найти среди множества интерфейсов определенные соединения (join-ы). Например, при тестировании одного интерфейса обнаружилась ошибка при соединении таблицы фактов с одной из таблиц размерностей. В среде разработки таблица измерений имела только одну строку, подпадающую под условие соединения, а в тестовом окружении строк оказалось больше.

В этом случае, чтобы внести исправления во все интерфейсы, которые используют эту таблицу измерений достаточно пойти в модель, найти нужную нам таблицу, и посмотреть, в каких интерфейсах она используется как источник:

четверг, 23 сентября 2010 г.

Узнаем свойства переменной через таблицу SNP_VAR.

Небольшой полезный SQL запрос, который поможет получить некоторые важные свойства переменных прямо из таблицы репозитория ODI под названием SNP_VAR. Подсмотрено вот здесь. По сравнению с оригиналом добавлена важная характеристика переменной, обозначаемая в интерфейсе как Action.

SELECT DISTINCT
CASE
WHEN SNP_VAR.I_PROJECT IS NULL
THEN 'GLOBAL'
ELSE SNP_PROJECT.PROJECT_NAME
END AS PROJECT_NAME,
SNP_VAR.VAR_NAME AS VARIABLE_NAME,
CASE
WHEN SNP_VAR.VAR_DATATYPE='A' THEN 'ALPHANUMERIC'
WHEN SNP_VAR.VAR_DATATYPE='N' THEN 'NUMERIC'
WHEN SNP_VAR.VAR_DATATYPE='D' THEN 'DATE'
ELSE 'TEXT' END AS DATATYPE,
CASE
WHEN SNP_VAR.IND_STORE = 'S' THEN 'Non persistent'
WHEN SNP_VAR.IND_STORE = 'H' THEN 'Historize'
WHEN SNP_VAR.IND_STORE = 'L' THEN 'Last value'
ELSE '?' END AS ACTION,
CASE WHEN SNP_VAR.VAR_DATATYPE='T' THEN V_TXT.TXT
ELSE SNP_VAR.DEF_v END AS DEFAULT_VALUE,
SNP_VAR.lschema_name AS VARIABLE_QUERY_SCHEMA,
SNP_TXT.TXT AS VARIABLE_QUERY,
S_TXT.TXT AS DESCRIPTION
FROM SNP_VAR
LEFT OUTER JOIN SNP_PROJECT ON SNP_VAR.I_PROJECT=SNP_PROJECT.I_PROJECT
LEFT OUTER JOIN SNP_TXT ON SNP_TXT.I_TXT=SNP_VAR.I_TXT_VAR_IN
LEFT OUTER JOIN SNP_TXT S_TXT ON S_TXT.I_TXT=SNP_VAR.I_TXT_VAR
LEFT OUTER JOIN SNP_TXT V_TXT ON V_TXT.I_TXT=SNP_VAR.i_txt_var_val_txt
ORDER BY project_name


Ну и еще один запрос, показывающий значения исторических переменных. Хотя, до конца, я в нем пока не уверен.

SELECT
d.Var_Name AS "NAME",
d.FIRST_DATE AS "DATE",
CONTEXT_CODE AS "CONTEXT",
CASE
WHEN v.VAR_DATATYPE='A' THEN d.VAR_V
WHEN v.VAR_DATATYPE='N' THEN to_char(d.VAR_N)
WHEN v.VAR_DATATYPE='D' THEN to_char(d.VAR_D)
ELSE 'RUN: select TXT from snp_exp_txt where I_TXT = ' || to_char(d.i_txt_var_t) END AS "VALUE"
FROM snp_var v LEFT OUTER JOIN snp_project p ON v.I_PROJECT=p.I_PROJECT,
SNP_VAR_DATA d
WHERE d.var_name = UPPER(nvl(p.PROJECT_NAME, 'GLOBAL')) || '.' || v.Var_Name


См. также: структура таблиц рабочего репозитория ODI.

среда, 22 сентября 2010 г.

IBM покупает Netezza.

Сегодня день, богатый на ссылки на новостные заметки. В статье немного упоминаются различные СУБД для Хранилищ данных. А для построения ХД лучше всего, по моему мнению, подходит ODI.
http://ko.com.ua/node/52423

Обучающее видео по Oracle Data Integrator.

Из сообщения Андрея Пивоварова ссылка на демо ролики по ODI от Крейга Стюарта. Я насчитал 16 роликов, возможно, они окажутся полезными для вас.
http://www.business-intelligence-quotient.com/?p=933
Язык - английский.

вторник, 21 сентября 2010 г.

Скрытые переменные сценария починили.

Сегодня обнаружил, что описанное в этом посте поведение Дизайнера ODI, в версии 10.1.3.6.4 исправили. Теперь, если при запуске сценария, сделать отмену в диалоговом окне ввода значений параметров, повторный запуск этого же сценария не приведет к показу всех переменных сценария.

Значит, это все же была ошибка.

воскресенье, 19 сентября 2010 г.

Диаграмма выполнения пакета в Oracle Data Integrator.

Готовя предыдущий пост о советах по работе в приложении Дизайнер намеренно пропустил одну функцию этого приложения, которая помогает делать диаграмму выполнения пакета более стройной.

С самого начала работы с ODI я настойчиво упорядочивал пакеты, стараясь делать диаграмму "прямой и стройной". И делал это всегда вручную. Обнаружив описываемую ниже функциональность я попробовал ее использовать, разочаровался, и решил вообще о ней не упоминать. Но, спустя время, понял, что в 80% случаев она может быть полезна для разработчика.

Что я имею ввиду? Обычно диаграмма пакета это графическое отображение объектов пакета в виде пиктограмм и связей между ними, в виде стрелок. Направление стрелки показывает порядок выполнения действий над объектами пакета, разные цвета этих стрелок обозначают переход выполнения в случае успешного и неуспешного завершения текущего шага.


Прямая и стройная диаграмма это расположение объектов пакета на одной прямой. С этой задачей может справиться специальная функция Дизайнера, которая называется Reorganize:


К сожалению, эта возможность хорошо работает только для последовательных запусков переменных, процедур и интерфейсов в пакете. Если попытаться воспользоваться этой функцией для чего-то более сложного, с условными переходами или циклами - получится совершенно запутанный клубок из объектов и переходов между ними.

Вот как выглядит упорядоченный вручную пакет:


Вот что происходит после использования функции Reorganize:


Как видно, первый вариант был более удобочитаемым. С другой стороны это, возможно, и правильно. Выстраивая диаграмму пакета вручную, разработчик имеет возможность еще раз проверить алгоритм работы пакета основываясь на его визуальном представлении, практически, имея перед глазами блок-схему программы. С этой точки зрения неудобство заключается только в отсутствии возможности привязывать объекты диаграммы к направляющим или сетке. Остается только пользоваться возможностью взаимного упорядочивания объектов по вертикали или горизонтали:


Update:
Подробнее о диаграмме пакета как схеме выполнения загрузки (workflow)

пятница, 17 сентября 2010 г.

Дизайнер ODI: советы.

Сегодня я подготовил несколько советов по работе в программе Дизайнер, одной из четырех клиентских оболочек Oracle Data Integrator.

Совет 1. Именование объектов.
Начнем с совсем простого, т.е. с того, как называть свои пакеты, интерфейсы и функции. Хорошей практикой считается подход, когда интерфейс называется так же, как и целевая таблица, которая этим интерфесом заполняется. По названию процедуры должно быть понятно, что она и примерно как делает. Пакет именуется по тем же принципам.
Совсем недавно я обнаружил, что наименование сценария для объекта автоматически генерируется в верхнем регистре:

четверг, 16 сентября 2010 г.

Что такое Oracle Data Integrator (ODI)?

Подумал, что сложно, наверное, найти в сети ответ на этот вопрос, тем более ответ без стандартных маркетинговых фраз.

В моей работе ODI - это программа (набор из нескольких программ, сервер приложений), которая позволяет копировать данные из таблиц разных СУБД разных производителей, складывать их в нужную БД (Хранилище Данных), и, после этого, производить над этими данными некие преобразования. Чтобы, в конце этого процесса, получить нужные для пользователей отчеты.

Набор программ ODI (не полный)

вторник, 14 сентября 2010 г.

ODI лучше OWB?

Небольшое сравнение Oracle Data Intagrator и Oracle Warehouse Builder в виде 11 сформулированных тезисов:
Oracle Data Integrator и Oracle Warehouse Builder 11 тезисов сравнения.
Запись довольно старая, но все же.

Параллельное выполнение интерфейсов – новое решение.

Сегодня я хочу предложить перевод статьи Cezar Santos об одновременной загрузке данных в одну таблицу несколькими интерфейсами.


Описание проблемы:
Oracle Data Integrator использует имя целевой таблицы как базу для названия временных таблиц ($I, $E, C$), и, поэтому, если больше одного интерфеса, загружающего одну и ту же таблицу, работают одновременно, операции создания, добавления строк или удаления этих временных таблиц могут выполняться вразброд, ломая таким образом весь процесс загрузки.

Решение:

воскресенье, 12 сентября 2010 г.

Добавляем keywords-ы к дочерним сессиям.

Процесс загрузки данных в ХД можно описывать с разных сторон. В данной статье я хотел бы рассмотреть две такие характеристики, как количество источников данных и периодичность. Рассмотреть не с точки зрения общих принципов построения ХД, а с точки зрения того, как, используя Oracle Data Integrator как инструмент ETL, немного упростить работу по разработке и сопровождению процесса ежедневной загрузки данных в хранилище данных.

Фактически, keywords-ы похожи на облако тэгов, или ярлыков, используя которые можно выбирать из всего множества запущенных сессий только определенные.

Для добавления тэгов к запускаемым сценариям необходимо выполнить следующие шаги:

пятница, 10 сентября 2010 г.

Oracle Data Integrator 11g доступен для скачивания.

Всем привет.
Короткое сообщение, Oracle на своем сайте выложил архив новой версии Oracle Data Integrator. Размер - 1.74Gb.
Если я не ошибаюсь, вчера его там еще не было.
Вчера же, поздно вечером, Oracle проводил по новому ODI вебкаст.

Из доступного на сайте pdf файла с презентацией новых возможностей 11 версии я, после беглого просмотра, выбрал только одну - теперь можно немедленно останавливать выполнение сессий, а не просто не выполнять следующий после текущей команды шаг. Т.е. теперь зависшие SQL запросы можно будет обрывать прямо из клиента, что не может не радовать.

Ссылка: http://www.oracle.com/technetwork/middleware/data-integrator/overview/index.html, дальше на страницу Download.

Собираюсь скачать.

среда, 8 сентября 2010 г.

Как узнать время выполнения дочерних сессий из таблицы SNP_SESSION.

Все - таки, при достаточно большом количестве сессий, которые необходимо проанализировать (проверить время выполнения, например), пользоваться клиентским приложением, даже с использованием кнопки Back, достаточно затратно по времени.

Хорошо, если у разработчика или администратора ETL процесса есть доступ на чтение из таблиц репозитория ODI.

вторник, 7 сентября 2010 г.

Используем кнопку Back в Операторе.

Небольшая заметка о удобстве использования кнопки Back, которая имеет вот такое изображение в Операторе:

при ежедневной работе. Как дополнение к вот этим постам (часть 1, часть 2) с советами по работе в этом приложении.

Недавно мне понадобилось проверить время работы некоторого набора сессий. Как часть ежедневного расчета данных в ХД эти сессии запускались из одного главного сценария.

Порядок работы после запуска Оператора был следующим:
1. Находим в закладках Hierarchical Sessions лог нашего главного процесса загрузки и выбираем его дочерние сессии (Child Session). Нажимаем на значок + и раскрываем список дочерних сессий.

пятница, 3 сентября 2010 г.

Один сценарий для ежедневного и выборочного расчета.

В моей практике ODI используется для ежедневной загрузки и преобразования данных в Хранилище Данных. Обычно такое преобразование имеет одним из параметров дату загрузки.

Например, каждый день могут расчитываться ежедневные отчеты, соответственно, в сценариях загрузки таблиц отчетов должен присутствовать параметр даты. Если загрузка происходит в штатном режиме, в ETL пакете используется некая переменная, назовем ее #Loading_Date, которая обновляется (refresh) из параметров текущей загрузки (из некоторой таблицы в БД) и на эту дату производится расчет.

Если есть необходимость пересчитать отчет за произвольную дату, можно поступить двумя путями.

среда, 1 сентября 2010 г.

Что такое переменная в Oracle Data Integrator.

Изначально этот пост должен был рассказать о некоторых свойствах исторических переменных, которые могут привести к довольно любопытным и трудноуловимым багам в ETL. Но, со временем, показалось хорошей идеей рассказать немного больше о переменных ODI.

Итак, что пишет нам документация, а именно, файл snps_refmanual.pdf, о переменных.

Переменные могут быть использованы в любых выражениях (SQL и других), также как и в метаданных. Значение переменная получает во время выполнения той команды, в которой она используется, когда эту команду выполняет агент. Свойства переменной отображаются в закладках Definition и Refresh в Дизайнере, глобальные переменные располагаются на том же уровне, где и проекты, проектные (локальные) переменные - внутри дерева проекта.

2010-09-01.


Первый год из многих. Спасибо друзья!
First year of many…. Thank you Friends!
-
Дата публикации: 2010-09-01, Комментариев: 1


ODI 11g - Часть 4/11 - Обновление с версии 10.
11g Oracle Data Integrator – Part 4/11g – Upgrading from 10g
Как сделать апгрейд с 10 версии ODI на версию 11g с помощью клонирования репозиториев и использования утилиты Oracle Fusion Middleware Upgrade Assistant.
Дата публикации: 2010-09-07, Комментариев: 16


Секреты ODI - Конструктор моделей от Крейга Стюарта.
Using one of ODI’s lesser-known secrets: the Common Format Designer (CFD) – by Craig Stewart
Использование Конструктора Моделей (Common Format Designer (CFD)) от Крейга Стюарта.
Дата публикации: 2010-09-10, Комментариев: 5


ODI 11g - Часть 5/11 - odiConsole, новый Metadata Navigator.
11g Oracle Data Integrator – Part 5/11g – odiConsole, the new Metada Navigator
Пошаговая инструкция как настроить odiconsole для работы в Oracle Weblogic Server и как установить внешнего агента для запуска сценариев из консоли.
Дата публикации: 2010-09-15, Комментариев: 3


ODI 11g - независимые агенты и использование агента как сервиса.
11g Oracle Data Integrator – Standalone Agent but, and about the Windows Service???
Особенности настройки агентов ODI, в том числе настройка работы агентов как сервисов Windows.
Дата публикации: 2010-09-21, Комментариев: 5


Расположение файлов драйверов в ODI 11g.
Drivers Location in ODI 11g
Где располагаются JDBC драйверы ODI на Unix и Windows серверах. В комментариях также затрагивается тема нахождения драйверов в Windows 7.
Дата публикации: 2010-09-29, Комментариев: 14


Подзапросы и производные таблицы в ODI 11g.
Subselect, derived tables, and subqueries in ODI 11G
Показан механизм, позволяющий использовать интерфейс для заполнения временной таблицы в другом интерфейсе в качестве производной (derived) таблицы, при этом запрос, заполняющий производную таблицу автоматически трансформируется в подзапрос в основном интерфейсе.
Дата публикации: 2010-09-09, Комментариев: 2


Примеры кода для ODI 11g SDK.
Oracle Data Integrator (ODI) 11g SDK code samples
Ссылки на примеры кода для ODI 11g SDK на сайте Oracle, а также ссылки на описание Java API на том же сайте.
Дата публикации: 2010-09-11, Комментариев: 1