пятница, 31 декабря 2010 г.

С новый годом! (Happy New Year)

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

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

ODI - это недоделанное воплощение неплохой идеи.
07-07-2007

до

Пристойный результат. Если учесть, что тот же код на PL/SQL (пишет параллельно программист) еще где-то в первой трети написания.
19-07-2007


http://www.sql.ru/Forum/actualthread.aspx?bid=26&tid=449408&hl=

среда, 29 декабря 2010 г.

ODI 11g. Реверс-инжиниринг, изучение и профилирование источников данных (Reverse-engineering, Auditing and Profiling Source Applications).

Продолжаю публикацию перевода некоторых частей документа Oracle Data Integrator Best Practices for a Data Warehouse.


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

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

Показываем в Операторе результат SQL запроса или содержимое файла.

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

Итак, базируясь на вот этой заметке об отображении результата запроса в Операторе, приступим.

Вводная часть

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

Чего нам не хватает в ODI. Опрос (polling).

Коллеги.

Многие из читающих этот блог работают с Oracle Data Integrator. Некоторые даже с его новой версией, которая 11g.
Но есть люди, готовые попробовать улучшить что-то в этом инструменте загрузки и преобразования данных.

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

Текущий список пожеланий и ошибок в Oracle Data Integrator находится на странице по ссылке.

пятница, 24 декабря 2010 г.

Генерация группы сценариев ODI (Scenario Generation).

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

Для этого в Дизайнере выберем нужную папку, и, по правой кнопке мыши, запустим команду Generate all scenarios...

четверг, 23 декабря 2010 г.

Кошмар на улице ERP.

Некоторые примеры неудачных внедрений разнообразных и сложных систем управления. С обсуждениями причин.
Хранилищ данных и ETL касаются опосредованно, но вдруг кому-то будет интересно.

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

Инсталлируем и настраиваем ODI на MS SQL Server Часть 2.

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

Дополнил страницу с описанием инсталляции ODI на MS SQL Server.
Теперь там описано, как создать физическую и логическую схемы данных, агентов, определить модель данных, сделать реверс таблиц из БД в модель данных, импортировать модули знаний в проект и т.п.

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

Как создать workflow в ODI. Часть 2.

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

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

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

ODI 11g. Организация команды (Organizing the Teams).

Приветствую.
Сегодня хочу начать публикацию перевода некоторых частей документа Oracle Data Integrator Best Practices for a Data Warehouse. Я выбрал около восьми отрывков из этого документа, и, хотя документ и нацелен на новую версию ODI, я думаю, полезен он будет многим.


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

четверг, 16 декабря 2010 г.

Методы подстановки ODI (Substitution Methods). Часть 3.

Третья часть перевода документации, описывающей методы подстановки ODI (часть 1, часть 2).


Генерация команды SELECT для источников.

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

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

Что такое сценарий ODI (Scenario).

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

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

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

Каким будет Oracle Data Integrator 12 версии.

В поисках более подробной информации о новинках в ODI 11g обнаружил вот эту заметку Андрея Пивоварова, датированную прошлым годом, в которой сообщается о планах выпустить в 2011 году единый продукт на базе ODI и OWB, которые в продуктовой линейке Oracle служат примерно одной цели.

Так же обнаружил вот этот документ, в котором говорится о том, что OWB версии 11gR2 содержит в себе часть инфраструктуры ODI, привносящий быстроту и гибкость интеграции гетерогенных данных для пользователей OWB.

Будущий релиз ODI 12g присоединит к себе функциональность OWB, а также обеспечит гладкую миграцию при переходе от OWB к ODI. Текущие пользователи могут смело вкладываться в технологии преобразования данных от Oracle (OWB 11gR2 или ODI) и знать, что их наработки не пропадут в будущем.

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

Выходит, что на вопрос вот этого поста можно теперь ответить утвердительно.

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

Новые возможности ODI 11g Часть 2.

Продолжаю переводить документ odi11g-newfeatures-wp-168152.pdf, посвященный новым возможностям Oracle Data Integrator 11g, начало вот здесь.


Новые методы автоматизации (Java API for Task Automation)
С использованием этих методов можно автоматизировать, например, следующие задачи:

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

Как создать workfow в ODI или что такое пакет?

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

Недавно на одном из форумов был задан вопрос, как в Oracle Data Integrator построить Workflow так, как это делается в Oracle Warehouse Builder с его processflow.

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

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

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

Шифрование сценария (Encrypting a Scenario).

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

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

воскресенье, 5 декабря 2010 г.

Семинар по ODI.

Всем привет.

В середине недели посетил двухдневный семинар по ODI и Golden Gate, которые проводил пресейл по интеграционным платформам Oracle Marco Ragogna.

Было нас около 25 человек из 11 организаций. К сожалению, семинар проводился по 10 версии ODI, поэтому нового для меня было не очень много. Некоторые не используемые мною ранее возможности постараюсь исследовать поподробнее и описать позднее в блоге.

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

Сравнивая содержимое семинара и этого блога, могу с радостью отметить, что процентов 70 из рассказанного на семинаре в блоге присутствует.

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

Методы подстановки ODI (Substitution Methods). Часть 2.

Продолжаю перевод документации, посвященный описанию методов подстановки (Substitution Methods API) в Oracle Data Integrator. Начало тут.


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

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

2010-12-01.


Прямая загрузка интерфесом без промежуточных (С$, I$) таблиц.
Direct load by interface with no work tables (C$, I$)
Ссылка на видео от Craig Stewart о том, как загружать данные непосредственно в таблицу, минуя промежуточные таблицы C$ и I$. Как по мне, проще всего сделать это путем модификации модуля знаний, в чем же путь Крейга - смотрите на видео.
Дата публикации: 2010-12-03, Комментариев: 4


Доступ к примапленному диску через ODI агент работающий как сервис Windows.
Accessing a mapped network drive with the ODI agent as a Windows service
Для доступа к примапленному диску из агента, который запущен как сервис Windows, необходимо подключение диска создавать во время выполнения сценария ODI.
Дата публикации: 2010-12-03, Комментариев: 0

Новые возможности Oracle Data Integrator 11g.

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

Сегодня я хочу опубликовать частичный перевод документа odi11g-newfeatures-wp-168152.pdf, посвященный новым возможностям ODI 11g. Я выбрал не все возможности, а только те, которые были мне более-менее понятны.


Интеграция в корпоративную систему безопасности (Corporate Security Integration)

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

Ошибка обновления переменной No value to affect to...

Если в пакете мы используем обновление некоторой переменной (Refresh) ODI выполняет указанный SQL скрипт для получения значения этой переменной. Но если указанный скрипт не возвращает ни одной записи появляется такая ошибка: "No value to affect to this variable for DefDate..."

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

Что такое область стейджа (Staging Area) в хранилищах данных.

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

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

Трудности перевода (Lost In Translation).

Случайно наткнулся на ссылку по продаже авторизованных курсов по ODI. Что сказать, порадовало конечно, некоторое моменты просто ставят в тупик.

Например, раздел

Oracle Data Integrator
  • Архитектура
  • Обзор архитектуры
  • Что такое Oracle Data Integrator
  • Архитектура Oracle Data Integrator

Или, вот еще:

Разработка Интерфейсов
  • Фильтрация данных
  • Фильтры и Oracle Data Integrator
  • Создание Фильтров вручную

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

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

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

P.S. Название поста совпадает с названием одного грустного фильма.

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

Методы подстановки ODI (Substitution Methods).

Сегодня я хочу рассказать о методах подстановки, которые ODI использует для построения набора команд, используемых в ETL задачах. Для общего обзора наилучшим источником, на мой взгляд, является документация, поэтому я постарался перевести некоторые части файла Knowledge Modules Developer's Guide.

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

Типология интерфейсов (Interface Typology)

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

воскресенье, 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

четверг, 26 августа 2010 г.

Как узнать значение переменной ODI во время выполнения?

Как известно, в ETL процедурах ODI можно использовать переменные. Переменные эти различаются не только по типу возвращаемого результата, но и по тому, каким образом переменная (точнее, ее значение) взаимодействует с процессом ETL преобразований. По этому поводу я планирую написать отдельный пост, а пока хочу просто отметить, что переменные всех типов в ODI хранятся в коде ETL преобразования в виде строковой ссылки вида #Project.Variable.

Если нам необходимо узнать значение переменной, мы можем найти тот Select который обновляет значение переменной, выполнить его, и узнать значение. Или найти переменную в Дизайнере и посмотреть ее значение по умолчанию. Намного удобнее было бы получать значение переменной прямо из приложения Оператор.

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

суббота, 21 августа 2010 г.

Оператор ODI: советы по работе, часть 2.

Продолжая систематизировать приемы работы в приложении Оператор приготовил следующие примеры:

Удаление нескольких логов

Для удаления нескольких логов выполнения необходимо их выделить. Выделение производится по тому же принципу, что и в проводнике Windows. Т.е. с зажатой клавишей Ctrl выделяем / снимаем выделение с отдельных логов, с помощью клавиши Shift выделяем последовательность из нескольких логов.

вторник, 10 августа 2010 г.

Оператор ODI: советы по работе, часть 1.

Небольшой перечень советов и подсказок при работе с приложением Оператор сервера приложений Oracle Data Integrator.

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

четверг, 5 августа 2010 г.

Получение текста ошибки при неправильном выполнении любого объекта ODI внутри пакета

Сегодня хочу опубликовать перевод вот этой статьи, авторства Kshitiz Devendra и Cezar Santos, которая освещает вопрос получения текстов ошибок при выполнении сценариев.

-= Начало перевода =-
Когда мы имеем несколько интерфейсов, переменных и других объектов в дочернем сценарии, и когда, при этом, дочерний сценарий завершается с ошибкой, в главном сценарии нам возвращается ошибка: "Сценарий не завершился должным образом". Чтобы узнать, что произошло, нам необходимо смотреть в Оператор.

вторник, 3 августа 2010 г.

odiRef.getSession() Недокументированные параметры.

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

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



Попробовал передать в функцию значение "SCEN_NAME" - получилось!

воскресенье, 1 августа 2010 г.

2010-08-01.


Перегенерация сценарив через OdiGenerateAllScen.
Regenerate ODI Objects using OdiGenerateAllScen
Использование команды ODI OdiGenerateAllScen для быстрой перегенерации сценариев в пакетном режиме.
Дата публикации: 2010-08-03, Комментариев: 7


ODI 11g - Часть 2/11 - Создание репозиториев.
11g Oracle Data Integrator – Part 2/11g – Creating Repositories
Описание создания мастер и рабочего репозитория для ODI 11g. В комментариях замечают, что данный подход, в отличие от использования RCU утилиты, позволяет создавать местер репозиторий и рабочий репозиторий в разных схемах.
Дата публикации: 2010-08-05, Комментариев: 5


Историческая таблица тип 2.
SCD Type 2
Как правильно использовать модуль знаний IKM Oracle Slowly Changing Dimension для построения исторической таблицы (SCD Type 2).
Дата публикации: 2010-08-10, Комментариев: 11


Внутренний ID.
Internal ID
Что такое внутренний идентификатор объекта в репозитории ODI, как избежать ошибок при операциях экспорта-импорта, связанных с одинаковыми идентификаторами или хотя бы понимать суть этих ошибок. Как внутренний идентификатор связан с идентификатором репозитория.
Дата публикации: 2010-08-17, Комментариев: 0


Проблема сверхбольшой таблицы SNP_EXP_TXT.
SNP_EXP_TXT – A “huge” table problem
Проблема переполнения таблицы SNP_EXP_TXT. Есть перевод.
Дата публикации: 2010-08-19, Комментариев: 10


Вызов OdiSqlUnload без указания пароля.
Calling OdiSqlUnload using ODI Procedure with no hardcoded password
Как использовать утилиту выгрузки данных OdiSqlUnload без явного указания пароля. Смотри также.
Дата публикации: 2010-08-25, Комментариев: 15


Функция IS_NUMBER (и IS_CHAR) в Oracle.
IS_NUMBER (and IS_CHAR) at Oracle? A workaround…
-
Дата публикации: 2010-08-26, Комментариев: 4


Типы данных - создаем недостающее для любой технологии.
Datatypes – Creating what is missing for any technology
Как добавить недостающие типы данных в технологии, присутствующие в ODI.
Дата публикации: 2010-08-28, Комментариев: 0


ODI 11g - Часть 3/11 - Графический интерфейс пользователя.
11g Oracle Data Integrator – Part 3/11g – Graphical User Interface
Описание некоторых особенностей нового интерфейса ODI 11g. Больше всего уделено внимания новым возможностям при редактировании интерфейсов, в частности, показано как разделить вкладку интерфейса на две части, и одновременно использовать их для просмотра и редактирования. В комментариях предлагают одновременно держать на экране вкладку быстрого просмотра и вкладку маппинга.
Дата публикации: 2010-08-31, Комментариев: 3

пятница, 30 июля 2010 г.

Типы репозиториев ODI.

Попытался сделать перевод статьи на тему типов репозиториев ODI, но, под конец работы, понял, что получается слишком коряво.
Поэтому решил написать свое, хоть и по мотивам.

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

вторник, 27 июля 2010 г.

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

Как известно, при генерации сценария можно выбрать, какие переменные отображать при запуске сценария в окне ввода параметров:



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



В Oracle Data Integrator версии 10.1.3.4 - 10.1.3.5 есть одна хитрость, которую я буду считать недокументированной ошибкой. Если запустить сценарий, выбрав контекст, агента и уровень логирования, а затем, на следующем диалоговом окне, именно там, где необходимо ввести значения переменных, выбрать отмену запуска, то при следующем запуске того же сценария можно будет увидеть все переменные, которые используются в этом сценарии. И не только увидеть, но и установить им некие значения!



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

См. также другие записи с ярлыком Переменные.

понедельник, 26 июля 2010 г.

Удаление логов выполнения сценариев в ODI.

Как известно, при выполнении сценария в ODI, процесс этого выполнения можно просматривать в отдельном приложении, под названием Operator. (В новой версии Oracle Data Integrator отдельного приложения, по слухам, не будет.) Но не все логи выполнения одинаково полезны. Чтобы уменьшить количество просматриваемых логов выполнения, можно ненужные логи удалить. Для этого ODI имеет специальный компонент, который называется OdiPurgeLog.


Приветствие

Всем привет।

Данный блог предназначен для публикации приёмов и методов работы с сервером приложений Oracle Data Integrator (ODI), в частности, при его использовании для построения Хранилищ Данных (Data Warehouse).

четверг, 1 июля 2010 г.

2010-07-01.

ODI 11g - Часть 1/11 - Первый экран.
11g Oracle Data Integrator – Part 1/11g – First Screen
Вышел ODI 11.
Дата публикации: 2010-07-22, Комментариев: 8


Лучшие практики использования ODI.
Best practice of ODI
9 крайне полезных советов о ньюансах при разработке ETL процессов и организации работы с ODI.
Дата публикации: 2010-07-30, Комментариев: 0


Анализируем лог ошибок.
Error Records Log
Пример скрипта для чтения данных из таблицы SNP_CHECK_TAB, содержащей регистрацию ошибок во время работы ETL процедур. Это такие ошибки как неправильность первичных ключей, неправильность внешних ключей, ограничения на NULL в колонке и т.п. Данные из таблицы записываются в файл, который после может быть отправлен по почте для дальнейшего анализа.
Дата публикации: 2010-07-30, Комментариев: 4


Получить информацию о любом проблемном шаге выполнения в пакете ODI.
Get the Error Message of any Failed ODI objects inside Package
Приведен SQL код для получения информации об ошибочно завершенных шагах пакета в переменную и вывода затем значения этой переменной в файл. Код делает выборку данных прямо из репозитория и расшифровывает закодированные типы шагов в текстовый вид. Затем полученный лог может использоваться для анализа ошибок выполнения сценария. Есть перевод.
Дата публикации: 2010-07-30, Комментариев: 3


Историческая таблица тип 3.
SCD Type 3
Преобразование модуля знаний IKM Oracle Incremental Update для построение исторических таблиц третьего типа (SCD Type 3).
Дата публикации: 2010-07-30, Комментариев: 2


Генерация названия колонок для OdiSqlUnload.
Generate Column_name Header for OdiSqlUnload
Описано, как с помощью выборки из системных таблиц получить названия для колонок при выгрузке любых таблиц из БД с помощью утилиты OdiSqlUnload.
Дата публикации: 2010-07-31, Комментариев: 5


Oracle Data Integrator: ODIInvokeWebService и Java 6.
Oracle Data Integrator: ODIInvokeWebService and Java 6
Ошибка при совместном использовании встроенного клиента SOAP из ODI и JDK 6. Рекомендуется установить предыдущую версию Java.
Дата публикации: 2010-07-16, Комментариев: 1


Веб-сервис ODI (OdiInvokeWebService) и OBIEE веб-сервис API.
Oracle Data Integrator (ODI) web services (SOAP client via ODIInvokewebservice) and the OBIEE web services API.
Как подключиться через OdiInvokeWebService к Oracle Business Intelligence API и получить через веб-сервис, например, список и иерархию групп и пользователей, перечень разрешений и т.п.
Дата публикации: 2010-07-31, Комментариев: 0

вторник, 1 июня 2010 г.

2010-06-01.


Ошибка Jython в Windows 7.
Jython OS bug in Windows 7
При работе в Windows 7 ODI Jython неверно определяет ОС и использует для Windows Unix подобные разделители папок. Рассказано, как это исправить и как запускать команды операционной системы независимо от того, Windows это или Unix подобная ОС.
Дата публикации: 2010-06-20, Комментариев: 4


Подсчитываем количество строк с помощью SQL скрипта, подготовленного через Jython.
Writing SQL counts using Jython
Выполнение SQL запроса через Jython
Дата публикации: 2010-06-20, Комментариев: 0


Автоматизация экспорта - импорта сценариев.
Automated ODI Export Import Scenarios
Подробное описание как организовать автоматическую передачу измененных сценариев из одного рабочего репозитория в другой, например, для тестирования. Сам процесс передачи организован как набор из нескольких пакетов и процедур ODI. Таким образом, переброс ODI сценариев в другой репозиторий осуществляется также с помощью сценариев. Я даже знаю проект и человека, который этот подход успешно внедрил в процесс разработки ETL на этом проекте.
Дата публикации: 2010-06-21, Комментариев: 9


Модуль знаний для выгрузки данных из любой СУБД и загрузки их в Oracle.
LKM OdiSqlUnload(File) to Oracle ( SQLLDR )
Специально разработанный модуль знаний для загрузки сверхбольших объемов данных. Для выгрузки используется OdiSqlUnload, т.е. модуль может работать с различными СУБД, для загрузки используется SQLLDR, так что целевая БД - только Oracle. Работает как в Windows так и в Unix без дополнительных модификаций. В комментариях также разбираются вопросы улучшения производительности выбранного метода выгрузки/загрузки данных.
Дата публикации: 2010-06-21, Комментариев: 20



Oracle Data Integrator (ODI) обучающее видео от Крейга Стюарта.
Craig Stewart’s Oracle Data Integrator (ODI) video tutorials
Ссылки на обучающее видео об ODI от Крейга Стюарта. Смотри также: Обучающее видео по Oracle Data Integrator.
Дата публикации: 2010-06-05, Комментариев: 10


Вызов Java класса или подключение JAR файла в ODI через Jython или Java BeanShell.
Calling custom Java classes and JAR files in ODI via Jython or Java BeanShell
Простой пошаговый пример создания класса в Java, компиляции этого класса в JAR файл и вызова этого класса из ODI.
Дата публикации: 2010-06-09, Комментариев: 2


Вложенные методы подстановки ODI. Часть 2.
Nesting ODI Substitution Methods. Part II.
Рассказано, как использовать знак кавычки (") во вложенных вызовах методов подстановки ODI.
Дата публикации: 2010-06-24, Комментариев: 0

суббота, 1 мая 2010 г.

2010-05-01.


ODI и аутентификация в MS SQL Server.
ODI and Integrated Security/Authentication with Microsoft SQL Server
Описано как настраивать подключение агента ODI к MS SQL Server с включенным режимом IntegratedSecurity.
Дата публикации: 2010-05-04, Комментариев: 0


ODI и аналитические функции (снова???)
ODI and analytic functions (again???)
Еще один способ обмануть синтаксический анализатор ODI, благодаря которому вызов в маппинге аналитической функции не попадет в команду Group By, генерируемую методом подстановки getGrpBy().
Дата публикации: 2010-05-20, Комментариев: 2

четверг, 1 апреля 2010 г.

2010-04-01.


Отобразить результат выполнения SQL запроса в Операторе.
Displaying SQL results in Operator
Как отобразить результат выполнения SQL запроса непосредственно в Операторе. Есть перевод данного подхода. Есть перевод.
Дата публикации: 2010-04-04, Комментариев: 4


Контроль потока данных и статический контроль.
Flow Control and Static Control
Описано, зачем используются E$ таблицы и как собирать ошибки в данных. Показано различие между обработкой неверных данных во время загрузки и перед выполнением актуального переноса данных, что позволяет сделать загрузку более продуктивной.
Дата публикации: 2010-04-04, Комментариев: 0


Параллельное выполнение интерфейсов - новое решение.
Interface Parallel Execution – A new solution
Как организовать загрузку данных в параллельном режиме в одну и ту же таблицу путем модификации модуля знаний и изменения наименования временных $ таблиц. Есть перевод.
Дата публикации: 2010-04-09, Комментариев: 24


Загрузить данные из любого (любых) файлов из заданной папки.
Getting one or several unknown files from a directory
Для загрузки данных из файлов, имена которых не стандартизованы, можно использовать простой трюк, при котором сначала необходимо создать файл со списком имен файлов, а затем прочитать этот список по одной строке и поместить имя файла в переменную. Далее можно, например, использовать переменную вместо имени реальной таблицы в модели.
Дата публикации: 2010-04-12, Комментариев: 4


ODI и аутентификация в MS SQL Server.
ODI and Integrated Security/Authentication with Microsoft SQL Server
Описано как настраивать подключение агента ODI к MS SQL Server с включенным режимом IntegratedSecurity.
Дата публикации: 2010-05-04, Комментариев: 0

понедельник, 1 марта 2010 г.

2010-03-01.

Март, 2010
Ручное добавление драйверов в список ODI.
Manual entry in ODI Driver List
Описание экспериментальной попытки добавления драйвера в ODI путем модификации файла DriverRefV3.xml.
Дата публикации: 2010-03-10, Комментариев: 0


Отслеживание изменений в данных.
Changed Data Capture ( CDC )
Описание режима простого (Simple CDC) отслеживания изменения в данных на источнике и переноса этих изменений в приемник данных.
Дата публикации: 2010-03-14, Комментариев: 22


Инсталляция ODI в Windows 7.
Installing ODI in Windows 7
Инсталляция ODI 10 на Windows 7.
Дата публикации: 2010-03-20, Комментариев: 1


Выполнение SQL запросов через ODI.
Querying in ODI
Как выполнить SQL запрос используя только таблицы модели ODI.
Дата публикации: 2010-03-20, Комментариев: 0


Удаление $ таблиц.
Dropping $ Tables
Пример кода для удаления временных $ таблиц, создаваемых ODI во время ETL преобразований. Есть перевод.
Дата публикации: 2010-03-23, Комментариев: 1


Модуль знаний для операции UNION на основе IKM SQL CNTRL APPEND
KM FOR UNION BASED ON IKM SQL CNTRL APPEND
Модификация модуля знаний в ODI 10 для поддержки использования команды UNION в интерфейсах.
Дата публикации: 2010-03-23, Комментариев: 0


Асинхронное (параллельное) выполнение.
Asynchronous -Parallel Execution
Как запустить несколько интерфейсов одновременно из одного пакета с помощью сценариев.
Дата публикации: 2010-03-27, Комментариев: 4


Экспорт из репозитория разработки в репозиторий выполнения [один мастер репозиторий].
Export DWR to EWR [ Common Master Rep ]
Пошаговая инструкция как создать новый репозиторий выполнения, перенести туда сценарии для тестирования, настроить схемы, агентов и т.п.
Дата публикации: 2010-03-28, Комментариев: 3


SQL запрос о деталях выполнения сессий.
Scenario Report
Пример SQL скрипта для получения результатов выполнения каждого сценария из репозитория. Выбираются данные о количестве вставленных строк, длительности, успешности завершения и т.п.
Дата публикации: 2010-03-28, Комментариев: 0


ODI переменные и Оператор.
ODI Variables and the Operator Module
Приведен код общей процедуры на Jython для отображения значения всех переменных пакета в Операторе. Имя пакета должно передаваться как параметр процедуры.
Дата публикации: 2010-03-14, Комментариев: 5


Получаем столбцы источника и приемника данных для интерфейса.
ODI snippets: Query to retrieve source and target columns in an interface
SQL запрос для получения списка таблиц и колонок источника и таблиц приемника данных для заданного интерфейса напрямую из репозитория ODI.
Дата публикации: 2010-03-17, Комментариев: 0


ODI - функция getSession(“SESS_PARAMS” ).
ODI – getSession(“SESS_PARAMS” )
Описание использования недокументированного параметра команды getSession - SESS_PARAMS. Смотри также: odiRef.getSession() Недокументированные параметры.
Дата публикации: 2010-03-17, Комментариев: 0


Вложенные методы подстановки ODI.
Nesting ODI substitution method calls. Part 1.
Первая часть описания механизма работы многоуровневого парсера для методов подстановки ODI.
Дата публикации: 2010-03-29, Комментариев: 2