О работе в Oracle Data Integrator (ODI) и других захватывающих вещах из мира BI.
Показаны сообщения с ярлыком PL/SQL. Показать все сообщения
Показаны сообщения с ярлыком PL/SQL. Показать все сообщения
четверг, 17 октября 2013 г.
Загружаем данные.
При загрузке данных в ХД, как и, например, при загрузке данных от множества датчиков в реляционную СУБД, применяются похожие механизмы - отключение констрейнтов и индексов, кеширование последовательностей, хинт /*+ append */, отключение логгирования таблиц и настройки использования места в блоках данных. Подробнее на примере Oracle DB заметка и комментарии на хабре - http://habrahabr.ru/post/196828/.
воскресенье, 17 октября 2010 г.
Удаление временных $ таблиц.
Сегодня небольшая заметка по мотивам вот этой записи, посвященная удалению временных таблиц из БД.
Задачи по обработке данных, при которых используются стандартные модули знаний (knowledge modules) ODI предполагают создание временных таблиц и их использование в процессе ETL преобразований. Например, модуль загрузки данных из файла в таблицу, создаст в БД временную таблицу С$_MY_FILE_DATA, загрузит "сырые" данные туда, и уже после этого перенесет данные в таблицу MY_FILE_DATA.
Задачи по обработке данных, при которых используются стандартные модули знаний (knowledge modules) ODI предполагают создание временных таблиц и их использование в процессе ETL преобразований. Например, модуль загрузки данных из файла в таблицу, создаст в БД временную таблицу С$_MY_FILE_DATA, загрузит "сырые" данные туда, и уже после этого перенесет данные в таблицу MY_FILE_DATA.
четверг, 14 октября 2010 г.
Отправляем письмо из ODI (улучшенная версия).
Пакет SEND_MAIL, описанный в предыдущем сообщении меня устраивал всем. Всем, кроме невозможности отправить многострочное письмо. В принципе, отправить две и более строки из ODI совсем не сложно. Вставляем в пакет odisendmail компоненту, где пишем все, что прийдет в голову:
Но хотелось бы, все же, использовать для этой цели пакет, а вернее, сгенерированный из пакета сценарий.
Но хотелось бы, все же, использовать для этой цели пакет, а вернее, сгенерированный из пакета сценарий.
понедельник, 4 октября 2010 г.
Создаем и используем функцию PL/SQL из ODI.
Третий пост на тему использования процедур и функций PL/SQL в Oracle Data Integrator. На этот раз я попробую создать функцию PL/SQL сам, чтобы использовать ее вместо постоянной процедуры и функции СУБД.
Зачем именно в ETL коде? Это, как я уже указывал, уменьшает объем передаваемого на деплой кода, и, самое главное, это удобнее при разработке.
Ведь после каждого изменения таблицы, которая используется в процедуре или функции данная процедура, а то и весь модуль, в котором она находится, становится невалидной в СУБД Oracle. А пересоздание процедуры при каждом запуске сценария позволяет не затрагивать своими экспериментами других пользователей.
Зачем именно в ETL коде? Это, как я уже указывал, уменьшает объем передаваемого на деплой кода, и, самое главное, это удобнее при разработке.
Ведь после каждого изменения таблицы, которая используется в процедуре или функции данная процедура, а то и весь модуль, в котором она находится, становится невалидной в СУБД Oracle. А пересоздание процедуры при каждом запуске сценария позволяет не затрагивать своими экспериментами других пользователей.
суббота, 2 октября 2010 г.
Один сценарий ODI - одна сессия в СУБД Oracle.
Предыдущий пост, посвященный получению в переменную ODI результата выполнения некоторой PL/SQL процедуры через значение переменной модуля(Oracle package) натолкнул меня на мысль проверить, как этот механизм будет работать при одновременном выполнении нескольких сценариев.
Если исходить с точки зрения того, как механизм использования модулей реализован в СУБД Oracle, то получалось, что, в случае выделения каждому сценарию своей собственной сессии, для каждого сценария мы будем иметь отдельную область памяти, в которую конкретизируется (instantiated) модуль, и, таким образом, в каждом модуле мы получим свое значение переменной.
Если исходить с точки зрения того, как механизм использования модулей реализован в СУБД Oracle, то получалось, что, в случае выделения каждому сценарию своей собственной сессии, для каждого сценария мы будем иметь отдельную область памяти, в которую конкретизируется (instantiated) модуль, и, таким образом, в каждом модуле мы получим свое значение переменной.
четверг, 30 сентября 2010 г.
Как использовать PL/SQL процедуры и функции в ODI.
Сегодня хочу опубликовать перевод статьи "How to use PL/SQL procedures and functions in ODI", и, заодно, попробовать описанные там методы на практике.
В одном из пакетов, которые я разрабатывал, используется сохраненная процедура СУБД, которая сканирует таблицу в БД и возвращает некоторое значение. Было бы хорошо избавиться от нее, чтобы пакет был самодостаточным. В этом случае и отдавать на промышленную эксплуатацию пришлось бы всего один сценарий, и менять алгоритм процедуры можно было бы без администратора СУБД.
Итак, перевод:
В одном из пакетов, которые я разрабатывал, используется сохраненная процедура СУБД, которая сканирует таблицу в БД и возвращает некоторое значение. Было бы хорошо избавиться от нее, чтобы пакет был самодостаточным. В этом случае и отдавать на промышленную эксплуатацию пришлось бы всего один сценарий, и менять алгоритм процедуры можно было бы без администратора СУБД.
Итак, перевод:
Подписаться на:
Сообщения (Atom)
