О работе в Oracle Data Integrator (ODI) и других захватывающих вещах из мира BI.
четверг, 30 сентября 2010 г.
Как использовать PL/SQL процедуры и функции в ODI.
В одном из пакетов, которые я разрабатывал, используется сохраненная процедура СУБД, которая сканирует таблицу в БД и возвращает некоторое значение. Было бы хорошо избавиться от нее, чтобы пакет был самодостаточным. В этом случае и отдавать на промышленную эксплуатацию пришлось бы всего один сценарий, и менять алгоритм процедуры можно было бы без администратора СУБД.
Итак, перевод:
вторник, 28 сентября 2010 г.
Из чего состоит проект ODI.
Составляющие проекта Oracle Data Integrator.
Следующие компоненты входят в дерево проекта ODI:
- Папка (Folder)
Объекты ODI могут находиться в папках или подпапках. - Пакет (Package)
Пакет это наибольший возможный выполняемый объект ODI. Пакет состоит из последовательности шагов огранизованных в виде цепочки выполнения.
Новые ссылки о работе в Oracle Data Integrator.
Нашел блог, где публиковалась информация "из области Data Warehouse, Business Intelligence, OLAP, ETL на платформе Oracle". К сожалению, блог не обновляется с марта 2010 года.
Привожу небольшую подборку интересного из раздела посвященного ETL:
- Некоторые особенности реверса таблиц с Identity колонками из MS SQL.
- Исправление репозитория ODI для реверса таблиц из MS SQL 2005.
- Использует ли докачку добавленный в версии ODI 10.1.3.5 компонент FtpGet?
- Как импортировать дата сервер в ODI.
- Короткое описание версии 10.1.3.4.0 ODI.
- Проблема при реверсе полей текстового файла решается отключением автоматической блокировки объектов ODI.
- Подключаем ODI к Microsoft SQL Server 2005.
- Создание репозитория Oracle Data Integrator.
понедельник, 27 сентября 2010 г.
Поиск одинаковых JOIN-ов в ODI.
В этом случае, чтобы внести исправления во все интерфейсы, которые используют эту таблицу измерений достаточно пойти в модель, найти нужную нам таблицу, и посмотреть, в каких интерфейсах она используется как источник:
четверг, 23 сентября 2010 г.
Узнаем свойства переменной через таблицу SNP_VAR.
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.
http://ko.com.ua/node/52423
Обучающее видео по Oracle Data Integrator.
http://www.business-intelligence-quotient.com/?p=933
Язык - английский.
вторник, 21 сентября 2010 г.
Скрытые переменные сценария починили.
Значит, это все же была ошибка.
воскресенье, 19 сентября 2010 г.
Диаграмма выполнения пакета в Oracle Data Integrator.
С самого начала работы с ODI я настойчиво упорядочивал пакеты, стараясь делать диаграмму "прямой и стройной". И делал это всегда вручную. Обнаружив описываемую ниже функциональность я попробовал ее использовать, разочаровался, и решил вообще о ней не упоминать. Но, спустя время, понял, что в 80% случаев она может быть полезна для разработчика.
Что я имею ввиду? Обычно диаграмма пакета это графическое отображение объектов пакета в виде пиктограмм и связей между ними, в виде стрелок. Направление стрелки показывает порядок выполнения действий над объектами пакета, разные цвета этих стрелок обозначают переход выполнения в случае успешного и неуспешного завершения текущего шага.
Прямая и стройная диаграмма это расположение объектов пакета на одной прямой. С этой задачей может справиться специальная функция Дизайнера, которая называется Reorganize:
К сожалению, эта возможность хорошо работает только для последовательных запусков переменных, процедур и интерфейсов в пакете. Если попытаться воспользоваться этой функцией для чего-то более сложного, с условными переходами или циклами - получится совершенно запутанный клубок из объектов и переходов между ними.
Вот как выглядит упорядоченный вручную пакет:
Вот что происходит после использования функции Reorganize:
Как видно, первый вариант был более удобочитаемым. С другой стороны это, возможно, и правильно. Выстраивая диаграмму пакета вручную, разработчик имеет возможность еще раз проверить алгоритм работы пакета основываясь на его визуальном представлении, практически, имея перед глазами блок-схему программы. С этой точки зрения неудобство заключается только в отсутствии возможности привязывать объекты диаграммы к направляющим или сетке. Остается только пользоваться возможностью взаимного упорядочивания объектов по вертикали или горизонтали:
Update:
Подробнее о диаграмме пакета как схеме выполнения загрузки (workflow)
пятница, 17 сентября 2010 г.
Дизайнер ODI: советы.
Совет 1. Именование объектов.
Начнем с совсем простого, т.е. с того, как называть свои пакеты, интерфейсы и функции. Хорошей практикой считается подход, когда интерфейс называется так же, как и целевая таблица, которая этим интерфесом заполняется. По названию процедуры должно быть понятно, что она и примерно как делает. Пакет именуется по тем же принципам.
Совсем недавно я обнаружил, что наименование сценария для объекта автоматически генерируется в верхнем регистре:
четверг, 16 сентября 2010 г.
Что такое Oracle Data Integrator (ODI)?
В моей работе ODI - это программа (набор из нескольких программ, сервер приложений), которая позволяет копировать данные из таблиц разных СУБД разных производителей, складывать их в нужную БД (Хранилище Данных), и, после этого, производить над этими данными некие преобразования. Чтобы, в конце этого процесса, получить нужные для пользователей отчеты.
Набор программ ODI (не полный)
вторник, 14 сентября 2010 г.
ODI лучше OWB?
Oracle Data Integrator и Oracle Warehouse Builder 11 тезисов сравнения.
Запись довольно старая, но все же.
Параллельное выполнение интерфейсов – новое решение.
Описание проблемы:
Oracle Data Integrator использует имя целевой таблицы как базу для названия временных таблиц ($I, $E, C$), и, поэтому, если больше одного интерфеса, загружающего одну и ту же таблицу, работают одновременно, операции создания, добавления строк или удаления этих временных таблиц могут выполняться вразброд, ломая таким образом весь процесс загрузки.
Решение:
воскресенье, 12 сентября 2010 г.
Добавляем keywords-ы к дочерним сессиям.
Фактически, 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.
Хорошо, если у разработчика или администратора ETL процесса есть доступ на чтение из таблиц репозитория ODI.
вторник, 7 сентября 2010 г.
Используем кнопку Back в Операторе.
при ежедневной работе. Как дополнение к вот этим постам (часть 1, часть 2) с советами по работе в этом приложении.
Недавно мне понадобилось проверить время работы некоторого набора сессий. Как часть ежедневного расчета данных в ХД эти сессии запускались из одного главного сценария.
Порядок работы после запуска Оператора был следующим:
1. Находим в закладках Hierarchical Sessions лог нашего главного процесса загрузки и выбираем его дочерние сессии (Child Session). Нажимаем на значок + и раскрываем список дочерних сессий.
пятница, 3 сентября 2010 г.
Один сценарий для ежедневного и выборочного расчета.
Например, каждый день могут расчитываться ежедневные отчеты, соответственно, в сценариях загрузки таблиц отчетов должен присутствовать параметр даты. Если загрузка происходит в штатном режиме, в ETL пакете используется некая переменная, назовем ее #Loading_Date, которая обновляется (refresh) из параметров текущей загрузки (из некоторой таблицы в БД) и на эту дату производится расчет.
Если есть необходимость пересчитать отчет за произвольную дату, можно поступить двумя путями.
среда, 1 сентября 2010 г.
Что такое переменная в Oracle Data Integrator.
Итак, что пишет нам документация, а именно, файл 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