Показаны сообщения с ярлыком Variable. Показать все сообщения
Показаны сообщения с ярлыком Variable. Показать все сообщения

суббота, 21 июля 2012 г.

5+1.

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

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

четверг, 5 апреля 2012 г.

Как не узнать значение переменной в Oracle Data Integrator?

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

Тут как бы ничего не предвещало подвоха. А он есть. Как говорится, весь апрель никому не верь или есть ложь, наглая ложь, аналитика (бывшая статистика) и описания новых возможностей в общем-то совсем не дешевых инструментальных средств.

пятница, 24 февраля 2012 г.

Вышла следующая версия ODI - 11.1.1.6.

Блог Oracle, посвященный интеграции данных, сообщает, что Oracle анонсировал выход следующей версии ODI.

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

  1. Шорткаты (Shortcuts). Из описания мне не совсем пока ясно, как их использовать, но планируется что они помогут лучше управлять общими таблицами, колонками, преобразованиями. Возможно, это будет что-то похожее на хард линки в файловой системе.
  2. Отслеживание значений переменных и последовательностей (Tracking Variables and Sequences). Всего лишь пара-тройка лет и около 20 сообщений в разных блогах с разными вариантами того, как получить значение переменной во время выполнения сессии, и в новом релизе ODI мы имеем возможность узнать это через GUI.


  3. Глобальные модули знаний (Global Knowledge Modules).
  4. Улучшилась читабельной кода (Enhanced Session Logging), который выполняется в рамках сессии. Что там конкретно улучшилось в отображении шагов процедур и модулей знаний - надо будет смотреть.
  5. Появилась возможность модифицировать поведение Планов Загрузки (Handling Failed Load Plan Enhancements). В частности, если какой-то шаг падает, и убрать причину падения в данный момент невозможно, а вы не просто хотите закончить оставшуюся часть Плана загрузки сегодня, но и хотите чтобы при следующем запуске испорченая часть плана загрузки не помешала закончиться всему плану, вы легко это можете сделать.

    Как именно вы можете это сделать? Вы просто открываете шаг плана с ошибкой и меняете ему статус на успешный. Дальше вы уходите в отпуск и все визуально работает без ошибок.
  6. Можно не отображать неиспользуемые в Планах загрузки переменные (Enhanced Variable Handling in Load Plans), чтобы улучшить читабельность выполнения.
  7. Умный экспорт-импорт (Smart Export and Import). Улучшенный и более понятный механизм передачи кода между репозиториями разработки, тестирования и промышленного использования.
  8. Добавили Oracle Enterprise Data Quality к ODI. Теперь можно из пакета вызывать задачу Datanomic-а по улучшению качества данных прямо по ходу ETL процесса.
  9. Редактор Groovy. Позволяет создавать, изменять и запускать Груви скрипты в ODI Студии.
  10. Поддержка Отмены и Отмены Отмены (Support of Undo and Redo Operations). Запомните эти сокращения - CTRL+Z и CTRL+Y
  11. Автодополнение в именах полей и списках (Autocomplete for Text Fields and Lists). В некоторых текстовых полях ввода и списка работает автодополнение. Интересно, в каких не работает.
  12. Версионирование для модулей знаний (Version Numbering for Knowledge Modules). Теперь, например, можно узнать, оригинальный у вас модуль знаний (т.е. от Oracle) или вы там уже что-то изменили, в лучшую, как вам сейчас кажется, сторону.

Что тут сказать, надо качать.

Самые важные нововведения по мнению сайта BI-Quotient:
http://www.business-intelligence-quotient.com/?p=1521

понедельник, 23 января 2012 г.

Кто на новенького?

Сегодня на повестке дня у нас несколько новых блогов об ODI.

Вернее, не совсем уж так чтобы несколько, зато один из них русскоязычный, а второй без 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...

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

четверг, 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. Пакет состоит из последовательности шагов огранизованных в виде цепочки выполнения.

четверг, 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.

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

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

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

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

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

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

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

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

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

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