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

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


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 12 2017, 15:47 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Пока что не кольнуло и подругому у меня не получается направить свои мысли.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 12 2017, 16:52 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 18:21
Сообщения: 1613
Korvax написал:
Вероятно таблиц станет 24!

Тут надо сразу писать масштабируемое решение. Даешь [s]пакет с пакетами[/s] таблицу с таблицами :mrgreen:

_________________
я твой сап эфай внедрял
BAdI-позитив
Взять немножечко абопу, сунь туда кошачью *опу, RFC лапки, БТ старой бабки, на медленном базиснике переносить, тестовое окружение материть, снимать SAT пенку, биться головой о стенку, охапка тайм-шитов, отчет готов!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 12 2017, 18:29 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, фев 21 2007, 08:50
Сообщения: 1570
Откуда: Пермь
Пол: Мужской
Чего вы пристали к человеку?) ему сказали делать 12 таблиц и все тут. Наверное, так и бывает. Все зависит от того, кто "у власти" на проекте :D
Есть люди, которым хоть задоказывайся, что так неправильно или неоптимально. Там просто свой незавершенный гештальт, возможно...
Есть у меня друг, который говорит, что им руководство запрещает замещения использовать. Мол, это скрыто от глаз пользователя, мало ли что вы там назамещаете.
Их концепция - это только open-fi. Вот они и замещают в 1025. Тоже скрыто от пользователя, зато концепции соответствует 8)

Автор, дерзай :pivo: Как сделать-то уже расписали, планируй фоновое и вперед.
Можно без селекционки, но тогда в начале алгоритма нужен простейший обработчик, что наступило первое (или любое последующее) число нового месяца И копирование таблицы еще не выполнялось. Последнего требования в обсуждении не увидел. Фактически нужно где-то хранить информацию о том, выполнялось ли копирование за месяц N. Потому что непустота в таблице за период N еще ничего не говорит (тут два варианта: осталась непустая с прошлого года или уже наполнилась свежими данными недавно). Но народ по природе своей пакостливый. Последующий запуск программы копирования приведет к перетиранию данных в таблице за месяц N, но попадут туда также и записи, которые были созданы после недавнего копирования, то есть должны были пойти уже в N+1.

Также весьма интересно, с какой регулярностью наполняется главная таблица? Если в нее вносятся записи на регулярной и главное очень частой основе, то где гарантия, что:
- в записываемую таблицу попадет все самое нужное, то есть действительно картина на 0.00 часов?
- в записываемую таблицу не попадет лишнее?

Тормознуло фоновое задание - попадет лишнее. Лагнули процессы, записывающие в исходную таблицу, - не попадет нужное.

А так-то да, задача с фантазией :D

_________________
Алё, это Пакистан? Нам нужен один килограмм


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Ср, дек 13 2017, 08:06 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1392
sonics написал(а):
1. За каждый месяц хранить данные в таблице.
Программа будет копировать каждый месяц данные в таблицу с идентичной нумерацией месяца (типа table01, table02, ... , table12)
2. Дальше будет новая программа селекционник, на котором мы выбираем некоторые данные, типа конкретной детали, выбираем сегодняшние данные (таблица с данными каждый день копируется для анализа) и сравниваем с данными, которые мы сохранили в нашей таблице (выбираем через выпадающий список table01..12).
3. На выходе мы получаем временную таблицу, в которой собраны данные с двух таблиц, название детали, сколько нужно произвести и сколько произведено на данный момент и сколько нужно было произвести и произведено на начало месяца из сохраненной нашей таблицы.
Цель, получить данные для сравнительного анализа и аналитики.
Почему нужна программа - данных, минимум 2,5 млн строк.


То есть, у вас есть таблица по производству каких-то деталей. Нужно проводить анализ - сколько деталей произведено за месяц, сколько нужно произвести, сравнить ситуацию с прошлыми периодами. Лично я пока не вижу ни одной причины производить копирование таблиц для этой задачи.
Вот например
Цитата:
2. Дальше будет новая программа селекционник, на котором мы выбираем некоторые данные, типа конкретной детали, выбираем сегодняшние данные (таблица с данными каждый день копируется для анализа) и сравниваем с данными, которые мы сохранили в нашей таблице (выбираем через выпадающий список table01..12).

почему это нельзя сделать так
Цитата:
будет программа селекционник, на котором мы выбираем некоторые данные, типа конкретной детали, выбираем сегодняшние данные и сравниваем с данными, которые хранятся в ЭТОЙ ЖЕ таблице, но за другой период

Борода с копирование отпадает, места в базе данных занимает меньше, сама выборка-сравнение работать будет примерно столько же, само решение будет более универсальным (нет ограничения на 12 месяцев).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Ср, дек 13 2017, 13:12 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Честно, запутался....
12 таблиц - могу. В одной все держать - не понимаю как.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Ср, дек 13 2017, 13:18 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
RoustR написал(а):
Борода с копирование отпадает, места в базе данных занимает меньше, сама выборка-сравнение работать будет примерно столько же, само решение будет более универсальным (нет ограничения на 12 месяцев).

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


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Ср, дек 13 2017, 14:18 
Специалист
Специалист

Зарегистрирован:
Пт, июл 27 2007, 13:06
Сообщения: 137
sonics написал(а):
RoustR написал(а):
Борода с копирование отпадает, места в базе данных занимает меньше, сама выборка-сравнение работать будет примерно столько же, само решение будет более универсальным (нет ограничения на 12 месяцев).

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

Ну хоть какое-то поле с датой ведь есть. Как-то ведь эти данные отбираются, чтобы вставить их в одну из 12 таблиц. А вместо вставки - сразу обрабатывать и выводить в отчет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Ср, дек 13 2017, 14:42 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1392
В таблице должен быть атрибут, по которому можно будет судить к какому времени относиться запись - дата или месяц. По этому атрибуту можно будут судить, существовали записи на начало месяца или нет. Если в самом данных нет явной подходящей даты, то можно просто дату вставки записи сделать.
По факту этот атрибут ты пытаешься реализовать через отдельные таблицы по месяцам. Номер месяца - в названии таблицы, а нужно номер месяца в отдельную колонку. Только лучше использовать дату - будет заметно гибче.

Цитата:
Данных же не будет, если мы не сохраним...

А куда они денутся?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Ср, дек 13 2017, 15:36 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
в целом, я готов попробовать сделать в одной таблице, если поможете по шагам, что надо сделать?
на данный момент я создал одну таблицу отдельную такой же структуры как и заданная, за исключением последнего поля, там я храню sy-datum на время копирования
таким образом, мне нужно не затирать старые данные, а добавлять и можно прикрепиться к дате, верно?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Ср, дек 13 2017, 15:38 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
RoustR написал(а):
А куда они денутся?

ну они же есть только сегодняшнего дня и еще вчерашнего, дальше они по новой отрабатывают ночью.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Чт, дек 14 2017, 07:11 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1392
sonics написал(а):
в целом, я готов попробовать сделать в одной таблице, если поможете по шагам, что надо сделать?
на данный момент я создал одну таблицу отдельную такой же структуры как и заданная, за исключением последнего поля, там я храню sy-datum на время копирования
таким образом, мне нужно не затирать старые данные, а добавлять и можно прикрепиться к дате, верно?


Да, верно. Затем при любой выборке данных их этой таблицы в разрезе определенного месяца в условиях запроса нужно дописывать условие по дате. Типа DATUM(6) = '201710' (DATUM - имя поля).
Далее, так как предполагается частое использование этого поля в качестве ключа для выборки, имеет смысл построить по нему индекс. В противном случае, по мере заполнения таблицы, будет заметно снижаться скорость выполнения запроса по дате.

Обрати внимание, что если действовать так, при анализе ты не будешь ограничен временными рамками, которые ты заложил в варианте с 12-ю таблицами. Выборку можно производить за произвольный период, глубина истории не ограничена, при этом не нужно каждый раз писать новую программу для работы с данными. Кроме того, можно пользоваться любыми другими средствами работы с данными, например, subquery.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Чт, дек 14 2017, 07:43 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1392
sonics написал(а):
ну они же есть только сегодняшнего дня и еще вчерашнего, дальше они по новой отрабатывают ночью.


Что это за процесс, который формирует такую таблицу? Чувствуется определенный почерк, на каждый временной период создавать отдельную таблицу :)

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

Если с этим сейчас ничего нельзя сделать, то придется делать механизм перекладки данных из дневной таблицы в общую. То, что с чего началась эта тема. Но и в этом случае, будет дневная таблица и одна общая таблица. Механизм перекладки настроить в виде процесса по расписанию. Но лучше еще ведение журнала работы этого механизма. Сделать еще одну таблицу, в которой оставлять запись о выполнении работы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Пн, дек 18 2017, 11:35 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Затупил...
Создал таблицу одну, вместо 12.. копировал туда данные.
теперь начал программу, описал необходимые мне: назв материала, цех изг., цех потр.
Дальше... дальше я полагаю мне через left join можно сравнить две таблицы ....или как?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Пн, дек 18 2017, 11:59 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
sonics написал(а):
Затупил...
Создал таблицу одну, вместо 12.. копировал туда данные.
теперь начал программу, описал необходимые мне: назв материала, цех изг., цех потр.
Дальше... дальше я полагаю мне через left join можно сравнить две таблицы ....или как?





Code:
data prev_month(2).

if sy-datum+4(2) ne '01'.
    prev_month = sy-datum+4(2) - 1.
    SELECT * FROM z_myatab INTO lt_prev_month  WHERE month = prev_month.
endif.

SELECT * FROM z_myatab INTO lt_cur_month  WHERE month = sy-datum+4(2).



в таблице lt_prev_month будут данные за прошлый месяц
в таблице lt_cur_month будут данные за текущий

Для января предыдущий как брать? декабрь прошлого года? ну тогда по аналогии вычислить месяц и год.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 19 2017, 11:45 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 14:11
Сообщения: 375
Kuranov.Dmitry написал(а):
Code:
data prev_month(2).

if sy-datum+4(2) ne '01'.
    prev_month = sy-datum+4(2) - 1.
    SELECT * FROM z_myatab INTO lt_prev_month  WHERE month = prev_month.
endif.

SELECT * FROM z_myatab INTO lt_cur_month  WHERE month = sy-datum+4(2).



в таблице lt_prev_month будут данные за прошлый месяц
в таблице lt_cur_month будут данные за текущий

Для января предыдущий как брать? декабрь прошлого года? ну тогда по аналогии вычислить месяц и год.


Я решил пока что не заморачиваться,для начала тупо для двух таблиц сделать и разобраться в этом.


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

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


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

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


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

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