О работе в Oracle Data Integrator (ODI) и других захватывающих вещах из мира BI.
воскресенье, 11 августа 2013 г.
суббота, 21 июля 2012 г.
5+1.
Для демонстрации того, как это работает, у меня как раз есть специально не для этого приготовленный пакет. Вот как выглядит его диаграмма:
четверг, 5 апреля 2012 г.
Как не узнать значение переменной в Oracle Data Integrator?
Тут как бы ничего не предвещало подвоха. А он есть. Как говорится, весь апрель никому не верь или есть ложь, наглая ложь, аналитика (бывшая статистика) и описания новых возможностей в общем-то совсем не дешевых инструментальных средств.
пятница, 24 февраля 2012 г.
Вышла следующая версия ODI - 11.1.1.6.
Коротко о новых
- Шорткаты (Shortcuts). Из описания мне не совсем пока ясно, как их использовать, но планируется что они помогут лучше управлять общими таблицами, колонками, преобразованиями. Возможно, это будет что-то похожее на хард линки в файловой системе.
- Отслеживание значений переменных и последовательностей (Tracking Variables and Sequences). Всего лишь пара-тройка лет и около 20 сообщений в разных блогах с разными вариантами того, как получить значение переменной во время выполнения сессии, и в новом релизе ODI мы имеем возможность узнать это через GUI.
- Глобальные модули знаний (Global Knowledge Modules).
- Улучшилась читабельной кода (Enhanced Session Logging), который выполняется в рамках сессии. Что там конкретно улучшилось в отображении шагов процедур и модулей знаний - надо будет смотреть.
- Появилась возможность модифицировать поведение Планов Загрузки (Handling Failed Load Plan Enhancements). В частности, если какой-то шаг падает, и убрать причину падения в данный момент невозможно, а вы не просто хотите закончить оставшуюся часть Плана загрузки сегодня, но и хотите чтобы при следующем запуске испорченая часть плана загрузки не помешала закончиться всему плану, вы легко это можете сделать.
Как именно вы можете это сделать? Вы просто открываете шаг плана с ошибкой и меняете ему статус на успешный. Дальше вы уходите в отпуск и все визуально работает без ошибок. - Можно не отображать неиспользуемые в Планах загрузки переменные (Enhanced Variable Handling in Load Plans), чтобы улучшить читабельность выполнения.
- Умный экспорт-импорт (Smart Export and Import). Улучшенный и более понятный механизм передачи кода между репозиториями разработки, тестирования и промышленного использования.
- Добавили Oracle Enterprise Data Quality к ODI. Теперь можно из пакета вызывать задачу Datanomic-а по улучшению качества данных прямо по ходу ETL процесса.
- Редактор Groovy. Позволяет создавать, изменять и запускать Груви скрипты в ODI Студии.
- Поддержка Отмены и Отмены Отмены (Support of Undo and Redo Operations). Запомните эти сокращения - CTRL+Z и CTRL+Y
- Автодополнение в именах полей и списках (Autocomplete for Text Fields and Lists). В некоторых текстовых полях ввода и списка работает автодополнение. Интересно, в каких не работает.
- Версионирование для модулей знаний (Version Numbering for Knowledge Modules). Теперь, например, можно узнать, оригинальный у вас модуль знаний (т.е. от Oracle) или вы там уже что-то изменили, в лучшую, как вам сейчас кажется, сторону.
Что тут сказать, надо качать.
Самые важные нововведения по мнению сайта BI-Quotient:
http://www.business-intelligence-quotient.com/?p=1521
понедельник, 23 января 2012 г.
Кто на новенького?
Вернее, не совсем уж так чтобы несколько, зато один из них русскоязычный, а второй без RSS.
Первый - блог Oracle разработчика. На момент написания данной заметки в наличие было две записи, касающиеся ODI. К сожалению, в некоторых вопросах автор, на мой взгляд, разобрался не до конца, в частности, насколько мне известно, передаваемые данные агент не сохраняет в репозитории, это было бы уже слишком:
Хотя, возможно, это просто ошибка при переводе, и, в дальнейшем, мы еще прочитаем много интересной информации по тэгу Oracle Data Integrator на сайте foxbase.ru.
Для тех наших коллег, которые пришли в базы данных и ETL не через программирование, читать эту заметку я все равно не порекомендую, какой-то чересчур упрощенный взгляд получился: зачем оно нужно?
Следующий блог англоязычный, и RSS, к сожалению, не имеет. Я его полистал, наполняется вроде неплохо, нашел даже один из вариантов вывода значения переменной, который раньше не использовал. Вернее, не рассматривал в таком качестве. Делается это с помощью использования параметра "-SESSION_NAME" при запуске сценария.
Полюбопытствуйте.
Сам блог находится по адресу http://www.odigurus.com/, он добавлен, также, в список блогов:
Пока все новости на сегодня.
пятница, 30 декабря 2011 г.
ODI 11g. Где всё?
Собираюсь открыть клуб ретроградов, любителей старой версии ODI. Мне, конечно же, нравятся новые возможности ODI 11g, но к интерфейсу пока не привык. А, как уже "доказали" исследователи, новое не значит лучшее.
Какие отличия удалось заметить после достаточно длительной работы с предыдущей версией ODI, когда у меня появилась возможность начать новый проект на 11g? Для интересующихся - создал такой перечень:
среда, 31 августа 2011 г.
Обманываем синтаксический анализатор ODI.
Рассмотрим интересный пример от Cezar Santos с сайта odiexperts о том, как в интерфейсе получить константу или псевдоколонку из источника.
пятница, 15 апреля 2011 г.
Уменьшаем количество переменных ODI.
Мне кажется, что я уже писал о том, что надо стремиться сдерживать рост количества переменных в проекте. Можно минимизировать этот показатель организационными методами, например, установлением правил наименования переменных или запретом на изменение переменных обычными разработчиками. Можно минимизировать необходимость использования переменных в интерфейсе с помошью новых возможностей ODI 11g по использованию lookup-ов.
пятница, 11 марта 2011 г.
Строим workflow на основе пользовательского ввода (User Input).
В комментариях к записи Что такое переменная ODI, один из наших коллег спросил, каким образом можно сравнить две переменные, одна из которых имеет тип alphanumeric, а вторая - date.
Как отмечено в указанной записи, я не знаю удачных примеров использования переменных типа даты. Теперь есть пример не очень удачного использования, но, тем не менее, с помощью исключений и использования KO перехода в пакете задача решена.
суббота, 25 декабря 2010 г.
Чего нам не хватает в ODI. Опрос (polling).
Многие из читающих этот блог работают с Oracle Data Integrator. Некоторые даже с его новой версией, которая 11g.
Но есть люди, готовые попробовать улучшить что-то в этом инструменте загрузки и преобразования данных.
Для того, чтобы донести до разработчиков наши пожелания, попробуйте в комментариях сформулировать то, что вам не нравится в ODI, или то, что хотелось бы улучшить или добавить.
Текущий список пожеланий и ошибок в Oracle Data Integrator находится на странице по ссылке.
понедельник, 29 ноября 2010 г.
Ошибка обновления переменной No value to affect to...
суббота, 23 октября 2010 г.
Поведение переменных в процедурах и интерфейсах ODI.
вторник, 19 октября 2010 г.
Изучаем поведение переменных ODI.
Недавно встретилась ситуация, когда в пакете была такая последовательность для одной переменной: Декларация -> Обновление -> Декларация.
И я решил проверить, это просто ошибка, или в этом есть какой-то смысл?
вторник, 12 октября 2010 г.
Как присвоить значение или сравнить 2 переменные ODI.
В этом пакете используется две переменные, для первой переменной устанавливается значение 10, для второй переменной попробуем установить значение, равное значению первой переменной. Затем обе переменных отобразим с помощью raise exception метода:
Как видно, значение второй переменной - строка #Variable1, а вовсе не строка 10. Для того, чтобы в пакете присвоить значение одной переменной другой переменной, необходимо указывать полное наименование, включая проект, или ключевое слово Global для глобальных переменных.
Тот же подход необходимо использовать если необходимо сравнить значение двух переменных:
среда, 6 октября 2010 г.
Устанавливаем значения переменных для сценария.
Итак, если мы выберем некий сценарий, сгенерированный из интерфейса, пакета или процедуры, мы увидим, что для сценария есть три подчиненных ветки в дереве объектов:
четверг, 30 сентября 2010 г.
Как использовать PL/SQL процедуры и функции в ODI.
В одном из пакетов, которые я разрабатывал, используется сохраненная процедура СУБД, которая сканирует таблицу в БД и возвращает некоторое значение. Было бы хорошо избавиться от нее, чтобы пакет был самодостаточным. В этом случае и отдавать на промышленную эксплуатацию пришлось бы всего один сценарий, и менять алгоритм процедуры можно было бы без администратора СУБД.
Итак, перевод:
вторник, 28 сентября 2010 г.
Из чего состоит проект ODI.
Составляющие проекта Oracle Data Integrator.
Следующие компоненты входят в дерево проекта ODI:
- Папка (Folder)
Объекты ODI могут находиться в папках или подпапках. - Пакет (Package)
Пакет это наибольший возможный выполняемый объект 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.
четверг, 16 сентября 2010 г.
Что такое Oracle Data Integrator (ODI)?
В моей работе ODI - это программа (набор из нескольких программ, сервер приложений), которая позволяет копировать данные из таблиц разных СУБД разных производителей, складывать их в нужную БД (Хранилище Данных), и, после этого, производить над этими данными некие преобразования. Чтобы, в конце этого процесса, получить нужные для пользователей отчеты.
Набор программ ODI (не полный)
среда, 1 сентября 2010 г.
Что такое переменная в Oracle Data Integrator.
Итак, что пишет нам документация, а именно, файл snps_refmanual.pdf, о переменных.
Переменные могут быть использованы в любых выражениях (SQL и других), также как и в метаданных. Значение переменная получает во время выполнения той команды, в которой она используется, когда эту команду выполняет агент. Свойства переменной отображаются в закладках Definition и Refresh в Дизайнере, глобальные переменные располагаются на том же уровне, где и проекты, проектные (локальные) переменные - внутри дерева проекта.