Road Runner написал:
2RSA1:
Как мне кажется, perishkin, имел ввиду, что в программу обновления передастся только очередной пакет. Т.е. мы можем получить в одном пакете 30 записей для одного документа и, читая ОДС, увидим, что надо удалить 40 из имеющихся 70-ти, но эти 40 реально могут быть в следующем пакете (т.е. документ не изменился на самом деле). А самое главное - когда придет второй пакет, то мы пометим на удаление 30 записей из первого пакета (мы ведь не знаем о том, что они были в первом пакете)? Гарантии ведь нет, что все записи придут в одном пакете. Или я что-то не понял?
1. Все данные хранятся в ОДС 2. Из ОДС 2 записи идут в КУБ(ы), для создания BEх-запросов.
2. Новые данные приходят в ОДС1. Перед загрузкой ВСЕ старые данные удаляются из ОДС1. ОДС1 Хранит данные за предыдущие 24 часа (или какой-там период загрузки).
3. По-хорошему, из цепочки процессов должна запускаться программа с SQL запросами, анализирующими данные в ОДС 1 и ОДС 2 (Что-то Аналогично тому, что я привёл выше). В этой программе видны ВСЕ позиции по каждому документу в обоих ОДС. И эта программа должна каким-то образом создать лог для тех позиций, которые должны быть удалены. Лог может быть своя таблица на стороне BW.
4. В правилах обновленуя МОЖНО добавить записи на удаление, причём надо тоже запоминать в таблице логов, какие позиции для каких документов уже добавлены.
Вот что я имел ввиду. Всё это требует программирования. Не ах как много, но повозиться придётся.
У нас реализовано что-то аналогичное. Из APO приходят N материалов, каждый имеет своё значение показателя (количество). Необходимо по определённому алгоритму РАСПРЕДЕЛИТь количество между ДРУГИМИ М материалами в соответствии с пропорцией и коэффициентами. (M <> N). Коэффициенты для распределения постоянно обновляются и временно-зависимы. При этом количество - величина постоянная. Сколько пришло - столько должно уйти. Это реализовано при помощи цепочек ОДС и АБАПа.