Текущее время: Чт, мар 28 2024, 18:31

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Выборочное удаление старых данных
СообщениеДобавлено: Чт, мар 02 2006, 10:10 
Гость
Существует сценарий, по которому в BW загружаются новые данные из исходной системы. Загружаются не дельты, а именно новые данные, изменившиеся с момента последней загрузки. Среди них могут быть

- просто новые данные
- обновленные данные, которые уже ранее загружались и, следовательно, должны быть перезаписаны
- данные, которые требуется удалить

Вся эта информация размещается в ODS1. Далее, идут обновления через ряд ODSi в целевой куб. То есть схема примерно следующая

ODS1 -> ODS2 -> ... -> ODSn -> CUBE

Все ODS перед каждой новой загрузкой отчищаются.

Основная сложность - удаление уже загруженных данных из куба.
То есть перед приведенной выше цепочкой надо выполнить

ODS1 --удаление--> CUBE

Структура ODS1 в общем случае выглядит примерно так

K1 K2 ... Kn V1 V2 ... Vm

где Ki - признаки, Vi - показатели

Структура CUBE в общем случае выглядит примерно так
K1 K2 ... Ks V1 V2 ... Vt

где Ki - признаки, Vi - показатели

Пусть в ODS1 и CUBE только признаки K1 и K2 являются идентичными, остальные признаки (и показатели) не совпадают. Требуется удалить из CUBE все записи, удовлетворяющие условию

DELETE CUBE WHERE
(K1 K2) IN (SELECT DISTINCT K1 K2 FROM ODS1)

Синтаксис не корректен, приведен просто для наглядности.

А вот теперь вопрос, какие варианты удаления лучше применять для решения данной задачи. Хотелось бы получить в итоге универсальный ФМ типа

FUNCTION CUBE_DEL
IMPORTING
p_ods_src_name
p_cube_dst_name
p_char_tab

где параметры - имя ODS-источника

ну или некий механизм, позволяющий сделать это.

У меня варианты такие

1) Написать отчет, в котором физически удалить данные из таблиц фактов E, F и таблиц измерений. Основная проблема здесь - не уверен, что после такого удаления сохраниться целостность куба. Ведь в нем в общем случае могут быть некуммулятивные показатели, агрегаты и т.п.

2) Сторнирующие проводки. Считать данные из E, F таблиц в программе инициализации пакета правил обновления. А вот дальше что?! Показателей у куба несколько. В правилах каждого из них возвращать таблицу с инверсией показателя?! А что будет с некуммулятивными показателями. Да и для других кубов приходится в каждое правило обновления показателя вставлять код. Хотелось бы избежать такой рутины.

3) Может есть еще способы?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения: Re: Выборочное удаление старых данных
СообщениеДобавлено: Чт, мар 02 2006, 12:06 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пт, окт 21 2005, 09:24
Сообщения: 832
Откуда: от верблюда...тоже:)
Пол: Мужской
SAP-мучитель написал(а):
3) Может есть еще способы?

есть ФМ который удаляет данные в кубе - RSDRD_SEL_DELETION
там есть параметр в котором указываешь по какому признаку и по какому условию выносить данные. а в таблицы лучше не соваться...ибо это крайний комсомольский метод не сулящий ничего доброго.

_________________
а подпись...а подписи не будет :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 06 2006, 16:48 
Гость
2 all

Все бы ничего в модуле RSDRD_SEL_DELETION, но мне надо, чтобы выполнялось условие удаления для каждой пары значений инфо-объектов, а именно

DELETE CUBE WHERE
(K1 K2) IN (SELECT DISTINCT K1 K2 FROM ODS1)

а удаление через этот модуль происходит по условию

DELETE CUBE WHERE
K1 IN (SELECT DISTINCT K1 FROM ODS1) AND
K2 IN (SELECT DISTINCT K2 FROM ODS1)

Для моего случая мне придется вызывает этот ФМ многократно для
кадой пары значений K1 и K2. Можно ли этого избежать?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 12 2006, 18:10 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Code:
DATA:
    lt_thx_sel TYPE rsdrd_thx_sel,
    ls_thx_sel TYPE rsdrd_sx_sel,
    ls_range TYPE rsdrd_s_range.

  REFRESH: ls_thx_sel-t_range.
  CLEAR: ls_range, ls_thx_sel.

  ls_thx_sel-iobjnm = 'Z'.
  ls_range-sign = 'I'.
  ls_range-option = 'EQ'.
  ls_range-low = 'AAA'.
  ls_range-keyfl = 'X'.

  APPEND ls_range TO ls_thx_sel-t_range.
  INSERT ls_thx_sel INTO TABLE lt_thx_sel.

  CALL FUNCTION 'RSDRD_SEL_DELETION'
  EXPORTING
    i_datatarget = 'ZCUBE'
    i_thx_sel = lt_thx_sel
*    i_transactional_ods = rs_c_true
*   I_AUTHORITY_CHECK = 'X'
    i_threshold = '1.0000E-01'
    i_mode = 'C'
    i_no_logging = ''
    i_parallel_degree = 1
    i_no_commit = ''
  CHANGING
    c_t_msg = ct_msg.


В дальнейших коментариях нуждаешься? :)

_________________
Глаза боятся, а руки крюки


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 13 2006, 11:49 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Вс, июн 26 2005, 22:41
Сообщения: 1135
Откуда: Москва
Пол: Мужской
текс ниасилил - многа букав.
а установка в инфопакете в свойстве "Автоматическое удаление похожих/одинаковых запросов из инфо-куба" значений "Удалять существующие запросы" - "идентичные или более объемные" что, не помогает???


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 02 2007, 14:48 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июл 18 2006, 22:25
Сообщения: 160
Откуда: Москва
Пол: Мужской
Bkmz написал:
текс ниасилил - многа букав.
а установка в инфопакете в свойстве "Автоматическое удаление похожих/одинаковых запросов из инфо-куба" значений "Удалять существующие запросы" - "идентичные или более объемные" что, не помогает???

Не нашел, но очень хотел, подобную штуку при загрузке через Процесс переноса данных. Кто-нибудь ускал?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 02 2007, 15:18 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, апр 19 2007, 08:03
Сообщения: 197
Пол: Мужской
EdSin написал:
Bkmz написал:
текс ниасилил - многа букав.
а установка в инфопакете в свойстве "Автоматическое удаление похожих/одинаковых запросов из инфо-куба" значений "Удалять существующие запросы" - "идентичные или более объемные" что, не помогает???

Не нашел, но очень хотел, подобную штуку при загрузке через Процесс переноса данных. Кто-нибудь ускал?

А чего ее "ускать" :) ? В пакете на закладке "Цели данных" после названия целей третий столбик - настройка авт. удаления предыдущих запросов. Или имеется в виду что-то другое?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 02 2007, 15:28 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июл 18 2006, 22:25
Сообщения: 160
Откуда: Москва
Пол: Мужской
Имеется ввиду если я хочу загрузить инфо-куб с помощью процесса переноса данных из ОДС. В этом случае пакета просто нет. Или я что-то путаю?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 02 2007, 15:29 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, авг 10 2005, 09:24
Сообщения: 1023
EdSin написал:
Имеется ввиду если я хочу загрузить инфо-куб с помощью процесса переноса данных из ОДС. В этом случае пакета просто нет. Или я что-то путаю?


Дык сделай его...
Думаю, пакеты всегда лучше делать самостоятельно, и в цепочках использовать именно их, а не процесс "обновления в цели данных". Особенно если когда нибудь предполагается использовать дельты...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 02 2007, 17:16 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июл 18 2006, 22:25
Сообщения: 160
Откуда: Москва
Пол: Мужской
Где-то мы ходим с вами по параллельным улицам :)
BW7, ODS -> Info-cube через DTP. Захожу в DTP, запускаю. Начинается процесс загрузки данных из ОДС в Куб. Все :) Где, в данном случае пакет? Он где-то есть?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 02 2007, 17:51 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, авг 10 2005, 09:24
Сообщения: 1023
EdSin написал:
Где-то мы ходим с вами по параллельным улицам :)
BW7, ODS -> Info-cube через DTP. Захожу в DTP, запускаю. Начинается процесс загрузки данных из ОДС в Куб. Все :) Где, в данном случае пакет? Он где-то есть?


Э, батенька, так сразу надо сообщать, что BW7...

Если не пользоваться DTP, то можно сделать пакет...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, май 03 2007, 09:17 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июл 18 2006, 22:25
Сообщения: 160
Откуда: Москва
Пол: Мужской
В общем интересует конкретно про DTP. Иногда проще с DTP работать, иногда кроме как через DTP не загрузить.
Но, насколько я понял, такого там никто не видел. Наверно нет. В хелпе тоже конкретно указывалось про куб и про инфо-пакет.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 30 2008, 16:31 
Начинающий
Начинающий

Зарегистрирован:
Вт, фев 19 2008, 12:01
Сообщения: 7
EdSin написал:
В общем интересует конкретно про DTP. Иногда проще с DTP работать, иногда кроме как через DTP не загрузить.
Но, насколько я понял, такого там никто не видел. Наверно нет. В хелпе тоже конкретно указывалось про куб и про инфо-пакет.


Если используете DTP, то возможность настроить это есть в цепочке, в rspc.
Там в группе "Load process and post-processing" есть такой элемент: Delete Overlapping Requests from InfoCube.

Вот только работает он не всегда корректно.

Кто-нибудь сталкивался с ситуацией, когда Selection Conditions у реквеста заданы нормально, но удаляет он не только перекрывающийся запрос, а и все остальные, имевшиеся до этого в кубе?
Уже несколько раз сталкивались с этим -- долго всё работает стабильно, и вдруг при очередной загрузке весь куб стирается, остается только свежий пришедший запрос.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выборочное удаление старых данных
СообщениеДобавлено: Чт, май 07 2015, 10:04 
Начинающий
Начинающий

Зарегистрирован:
Пт, апр 10 2015, 15:40
Сообщения: 4
Добрый день!
Помогите, пожалуйста!
Необходимо удалять измененные данные из куба и подгружать новые. Куб не транзакционный.
Использую ФМ RSDRD_SEL_DELETION для выборочного удаления данных из куба. В режиме отладки все проходит и данные удаляются.
При запуске в фоновом режиме выходит ошибка обработки записей. В sm37 посмотрела ошибку "Блокировкадля НЕ установлена для: Выборочное удаление переменных данных". Подскажите, пожалуйста, как решить эту проблему?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выборочное удаление старых данных
СообщениеДобавлено: Чт, май 07 2015, 10:33 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
Не надо использовать RSDRD_SEL_DELETION. Есть три надежных способа удаления данных из куба:

1. Полное удаление данных (полная перезагрузка)
2. Удаление запросов с перекрывающимися критериями выбора (псевдо-дельта)
3. Сторнирование из DSO в куб (дельта)

Выберите то, что вам больше подходит


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB