powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите составить историческую таблицу
4 сообщений из 29, страница 2 из 2
Помогите составить историческую таблицу
    #39402637
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

авторВообщем с MODEL пришлось некоторое время помучаться, но зато результат мне нравится больше, чем аналитические функции или использование присоединений с ODCINumberList
очень сильно я сомневаюсь. но это Ваше решение.

Вячеслав в свое время писал про хинты, которые очень мне пригодились. Даже не думал о них, но каким-то образом вышел на них. Главное чтобы не было равно магическому числу 3... :)
...
Рейтинг: 0 / 0
Помогите составить историческую таблицу
    #39402667
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K790это же чистый DDL, какая там конкуренция?Насчет DDL совсем не понял
Возможно, речь про DML?
Честно говоря, не очень понимаю, чем это сильно отличается от PL/SQL-цикла, за исключением того, что это выполняется в контексте SQL
Завышенное потребление CPU? -- ну дык как правило с этим как раз избыток
Если правила составлены нормально, то и с этим проблемы нет

PS. Думаю, человек, который этим занимался (dbms_photoshop) мог бы рассказать больше
...
Рейтинг: 0 / 0
Помогите составить историческую таблицу
    #39404582
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Финальная версия запроса работает хорошо и быстро.
Но не охватывает 2-3% записей, по которым операторы вносили данные некорректно.
Суть проблемы в том, что в журнале действий операторов фиксируются не все возможные варианты изменения группы клиента, возможны варианты задания/изменения группы, которые не фиксируются в журнале, такие как:
1. При создании нового клиента его группа нигде не фиксируется. Эту ситуацию я обрабатываю следующим образом: если после создания клиента его группа более не редактировалась, то в журнале записей не будет и можно полагать, что текущая группа клиента была задана при его создании; если же записи в журнале есть, то у первой записи будет OLD_VALUE.
2. При активации клиента для него задается группа и эта группа нигде не фиксируется. Тут я исхожу из допущения, что до активации все неактивированные клиенты находились в предопределенной группе, а после активации ситуация схожа с пунктом 1 (если записей в журнале нет, он был активирован с текущей группой, иначе в журнале нужно использовать OLD_VALUE).
Эти допущения покрывают более 95% случаев, но есть ситуации, когда операторы отходили от регламента и делали например так:
1. Клиент создан в предопределенной группе (группа0).
2. Клиента переместили в группу1.
3. С клиентом сделали некоторые операции.
4. Клиента переместили в группу2.
5. С клиентом сделали некоторые операции.
6. Клиента переместили в группу3.
7. Клиента активировали, при активации выбрали группу1.

В результате мой запрос считает, что клиент находится в группе3.
Просто отфильтровать записи в журнале, предшествующие активации, нельзя: клиент может быть не активирован и тогда нужно учитывать всю его историю, а если в критерии join добавлять что-то вроде and (log.MOMENT >= client.ACTIVATE_DATE or client.ACTIVATE_DATE is null), то очень серьезно падает производительность.

И тут я подумал, что возможно пора подумать о переборе в цикле.
Количество клиентов у меня не очень велико (сейчас порядка 10к, максимум будет 50к), зато я буду использовать императивный подход и не буду ограничен в логике обработки данных.
Или все же в SQL можно описать подобное условие без падения производительности?
...
Рейтинг: 0 / 0
Помогите составить историческую таблицу
    #39404584
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или же, как пришло мне в голову сейчас, можно через union all объединить два разных варианта запроса, ориентированных на активированных и неактивированных клиентов.
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите составить историческую таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]