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

пятница, 15 июля 2011 г.

Используем аналитические функции SQL в ODI.

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

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

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

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

понедельник, 30 мая 2011 г.

Переполнение главной таблицы SNP_EXP_TXT.

Привет всем.

Как известно, таблица SNP_EXP_TXT содержит текстовые части команд ODI.
В старых версиях, с 10.1.3.2.0 по 10.1.3.5.1 для ключевой колонки I_TXT из этой таблицы выделялось недостаточно места, таким образом, с течением времени могла возникнуть ситуация, когда свободные номера в колонке заканчивались, и она начинала выделять значения с 0, что приводило к ошибке ORA-00001: unique constraint (SDS1.PK_EXP_TXT) violated.

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

Удаление потерянных данных в SNP_EXP_TXT.

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

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


Привет народ. Есть небольшой "баг" в ODI, который заключается в том, что не очищается таблица SNP_EXP_TXT, когда удаляется "родительская" запись.

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

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

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

Как узнать время выполнения дочерних сессий из таблицы SNP_SESSION.

Все - таки, при достаточно большом количестве сессий, которые необходимо проанализировать (проверить время выполнения, например), пользоваться клиентским приложением, даже с использованием кнопки Back, достаточно затратно по времени.

Хорошо, если у разработчика или администратора ETL процесса есть доступ на чтение из таблиц репозитория ODI.