Текущее время: Чт, апр 18 2024, 12:38

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Данные, зависимые от времени
СообщениеДобавлено: Ср, ноя 04 2015, 22:07 
Начинающий
Начинающий

Зарегистрирован:
Ср, апр 02 2014, 17:27
Сообщения: 14
Добрый день!

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

Для себя накидал два пути решения:
1) Виртуальный признак.
Можно запихнуть данные о классификации в DSO и сделать виртуальный признак, который, в свою очередь, будет заполняться непосредственно при формировании отчета в зависимости от даты, выбранной на селективном экране.
2) Зависимый от времени атрибут.
Можно создать в кубе признак и к этому признаку загрузить зависимые от времени основные данные с классификацией. А в самом отчете уже с помощью контрольной даты выбирать актуальное значение.

Виртуальный признак я сразу отмел, т.к. при формировании отчета обрабатывается порядком 1 млн. записей, что сильно увеличит время формирования отчета. Поэтому пошел по пути зависимого от времени атрибута.

При загрузке основных данных сразу же наткнулся на такую проблему:
С инициализацией приходит запись
Key_1---01.06.2012---31.12.9999---Class_1
После этого в исходной системе изменяются данные (ограничивается срок действия классификации) и с дельтой приходит запись
Key_1---01.06.2012---30.09.2015---Class_1
В результате в основных данных вижу следующую картину:
Key_1---01.06.2012---30.09.2015---Class_1
Key_1---01.10.2015---31.12.9999---Class_1
что, по сути, эквивалентно предыдущему состоянию.

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

Попробовал так же поиграться с новой настройкой для основных данных, поле 0recordmode
Изображение
Но понять, как это работает, не получилось, видать, принцип работы отличается от DSO. И самое интересное, что информации в интернете про использование этого поля для основных данных практически нету.

Учитывая вышеизложенное, прошу помочь в решении этой задачки.


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

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
Если вы собираетесь к финансовым документам добавлять некий признак, то от какого времени он будет зависеть?! Есть подозрение, что от даты проводки (или, например, от даты создания документа), а в этом случае никакими зависимыми от времени признаками тут и не пахнет. В этом случае можно признак на стадии загрузки рассчитывать.

Если же все-таки от даты проводки признак не зависит, а зависит действительно от некоторой контрольной даты, которую вы вводите с селекционного экрана, то говорить о том, что он привязан к финансовому документу некорректно. В этом случае непонятно о какой сотне возможных ситуаций идет речь?! Экстрактор для основных данных просто должен возвращать данные примерно в таком виде:
Key_1---01.06.2012---30.09.2015---Class_1---Active
Key_1---01.10.2015---31.12.9999---Class_1---Closed

Что касается виртуальных признаков и 1 млн. записей, то рассмотрим ситуацию, когда запрос возвращает 1 млн. записей (то есть после чтения из базы 1 млн. передается для обработки в OLAP) и предположим, что в отчете необходимо выводить ид. документа (что довольно странно):
ид.док Ид. признака
1 Key_1
2 Key_1
3 Key_2
4 Key_3
5 Key_2

Очевидно, что для разных фин. документов у вас повторяется ид. признака, а значит читать ид. признаков из DSO придется существенно меньше. Например, при соотношении 1:10 из DSO придется прочитать всего лишь 100.000 записей (если ключи сложить предварительно в хеш таблицу, то все 100 тыс. "форолэнтрятся" одним селектом)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Данные зависимые от времени
СообщениеДобавлено: Чт, ноя 05 2015, 10:49 
Начинающий
Начинающий

Зарегистрирован:
Ср, апр 02 2014, 17:27
Сообщения: 14
murmur написал:
Если вы собираетесь к финансовым документам добавлять некий признак, то от какого времени он будет зависеть?! Есть подозрение, что от даты проводки (или, например, от даты создания документа), а в этом случае никакими зависимыми от времени признаками тут и не пахнет. В этом случае можно признак на стадии загрузки рассчитывать.

От даты проводки не зависит. На примере покажу: финансовый документ это дебиторская задолженность, она имеет фиксированную дату проводки. А вот классификация это статус задолженности, например с 01.01.15 по 30.06.2015 - статус Мораторная, а с 01.07.2015 по 31.12.9999 - Судебная.
murmur написал:
Если же все-таки от даты проводки признак не зависит, а зависит действительно от некоторой контрольной даты, которую вы вводите с селекционного экрана, то говорить о том, что он привязан к финансовому документу некорректно. В этом случае непонятно о какой сотне возможных ситуаций идет речь?! Экстрактор для основных данных просто должен возвращать данные примерно в таком виде:
Key_1---01.06.2012---30.09.2015---Class_1---Active
Key_1---01.10.2015---31.12.9999---Class_1---Closed

Ну например приходит запись с измененной начальной датой
Key_1---01.08.2012---31.12.9999---Class_1
или же с каким то пробелом
Key_1---01.06.2012---30.03.2015---Class_1
Key_1---01.07.2015---31.12.9999---Class_2
и т.д.
Тут фантазия пользователя безгранична, а функционал исходной системы позволяет делать такие вещи. Более того позволяет делать еще и с перекрывающимися датами
Key_1---01.06.2012---31.12.9999---Class_1
Key_1---01.07.2015---31.12.9999---Class_2
и такие записи приведут к прерыванию загрузки.
Все это усугубляется, тем, что САП не позаботился о создании стандартного экстрактора, а так же тем, что изменения нужно отслеживать в двух разных таблицах.
murmur написал:
Что касается виртуальных признаков и 1 млн. записей, то рассмотрим ситуацию, когда запрос возвращает 1 млн. записей (то есть после чтения из базы 1 млн. передается для обработки в OLAP) и предположим, что в отчете необходимо выводить ид. документа (что довольно странно):
ид.док Ид. признака
1 Key_1
2 Key_1
3 Key_2
4 Key_3
5 Key_2

Очевидно, что для разных фин. документов у вас повторяется ид. признака, а значит читать ид. признаков из DSO придется существенно меньше. Например, при соотношении 1:10 из DSO придется прочитать всего лишь 100.000 записей (если ключи сложить предварительно в хеш таблицу, то все 100 тыс. "форолэнтрятся" одним селектом)

Записей будет 1 млн, т.к. классифицируется каждый документ


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

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
Jazz Man написал(а):
Ну например приходит запись с измененной начальной датойKey_1---01.08.2012---31.12.9999---Class_1или же с каким то пробеломKey_1---01.06.2012---30.03.2015---Class_1Key_1---01.07.2015---31.12.9999---Class_2
Мне непонятны проблемы, которые возникают при изменении начальной даты. Каким пробелом и где?! Непонятно

Jazz Man написал(а):
Тут фантазия пользователя безгранична, а функционал исходной системы позволяет делать такие вещи. Более того позволяет делать еще и с перекрывающимися датами
Key_1---01.06.2012---31.12.9999---Class_1
Key_1---01.07.2015---31.12.9999---Class_2
и такие записи приведут к прерыванию загрузки.
Ну так обеспечьте на стороне ERP необходимые проверки! Если пользователям разрешать вводить что угодно и как угодно в исходной системе, то никаких сил не хватит исправлять это в BW

Jazz Man написал(а):
Все это усугубляется, тем, что САП не позаботился о создании стандартного экстрактора, а так же тем, что изменения нужно отслеживать в двух разных таблицах.
САП позаботился о возможности расширять существующие экстракторы и создавать собственные.

Jazz Man написал(а):
Записей будет 1 млн, т.к. классифицируется каждый документ
Вы хотите сказать, что для каждого FI-ного документа будет строго уникальный KEY признака?! То есть признак FI-ного документа будет <= по размеру, чем признак с вашей классификацией (<=, так как он зависит от времени и на каждое значение ключа приходится несколько записей)?!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Данные, зависимые от времени
СообщениеДобавлено: Чт, ноя 05 2015, 12:11 
Начинающий
Начинающий

Зарегистрирован:
Ср, апр 02 2014, 17:27
Сообщения: 14
murmur написал:
Мне непонятны проблемы, которые возникают при изменении начальной даты. Каким пробелом и где?! Непонятно

Проблемы в сложной логике для определения промежутков, которые надо зачистить.
murmur написал:
САП позаботился о возможности расширять существующие экстракторы и создавать собственные.

В моем случае только создание собственного, в стандарте на эту тему хоть шаром покати.....
murmur написал:
Вы хотите сказать, что для каждого FI-ного документа будет строго уникальный KEY признака?! То есть признак FI-ного документа будет <= по размеру, чем признак с вашей классификацией (<=, так как он зависит от времени и на каждое значение ключа приходится несколько записей)?!

Да, именно так. В исходной таблице для каждого FI-ного документа записывается уникальный ключ.


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

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
Jazz Man написал(а):
Да, именно так. В исходной таблице для каждого FI-ного документа записывается уникальный ключ
Давайте все по порядку. Рассмотрим FI-документ. Ключом документа являются три поля BUKRS, BELNR, GJAHR.

Далее вы пишите
Jazz Man написал(а):
...А вот классификация это статус задолженности, например с 01.01.15 по 30.06.2015 - статус Мораторная, а с 01.07.2015 по 31.12.9999 - Судебная.
Из чего можно сделать вывод, что где-то есть справочник
KEY_1 Мораторная
KEY_2 Судебная
и т.п.

Теперь у вас должна быть таблица, которая связывает FI-документ со справочником. Предположим такой вариант
1000 0000000001 2015 KEY_1
Но, насколько я понял, каждый FI-документ может находиться в разных статусах. То есть таблица должна выглядеть примерно так
1000 0000000001 2015 KEY_1 01.01.15 30.06.2015
1000 0000000001 2015 KEY_2 01.07.2015 31.12.9999

1. Первый вариант, который напрашивается - в BW в признак FI-документа добавить навигационный атрибут, зависимый от времени атрибут "Статус задолженности" (ну или как-то там еще). Но этот вариант не пройдет, так как в признак FI-документ не включены признаки BUKRS и GJAHR в состав ключа (и включать их - зло). Таким образом этот вариант отпадает

2. Второй вариант - DSO и инфо-набор с временным соединением (я бы не стал так делать), но тут проблемы с производительностью будут скорее всего (особенно с учетом 1 млн. записей, хотя можно попробовать в качестве эксперимента, получится-нет - ХЗ)

3. Еще вариант DSO и виртуальный признак. (к вашему 1 млн. придется прочитать еще примерно 1 млн. записей).

4. Если же FI-экстрактор расширять и вычислять статус на стадии экстракции, то тогда FI-ные записи дробить надо - не вариант. Плюс надо добиваться, чтобы FI-ные документы считались измененными после правки вашей классификации

5. Если на стороне BW в загрузке соединять FI-DSO и DSO-классификации и формировать отдельный куб с детализацией до документа (не до позиции) и необходимыми признаками и показателями, то почему бы и нет

Короче: 3 или 5. Если третий не потянет по памяти, то тогда 5


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Данные, зависимые от времени
СообщениеДобавлено: Чт, ноя 05 2015, 14:26 
Начинающий
Начинающий

Зарегистрирован:
Ср, апр 02 2014, 17:27
Сообщения: 14
Спасибо за варианты! Пошел думать....


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

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


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

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


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

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