Сохранить отчет MS Access на SQL сервере - PullRequest
0 голосов
/ 27 апреля 2020

Я использую MS Access, Excel и Power BI для создания отчетов из разных источников. Окончательный отчет после ETL, Merging, Filtering, работы с ним экспортируется в формате .CSV и .XLSX в указанную папку c на компьютере (мы сохраняем все в папке сервера windows 2016). В то же время, я создал SQL серверные таблицы для хранения этих данных (только таблицы и столбцы, но пока не храним никаких данных)

Есть ли способ автоматической загрузки и сохранения данных в SQL Таблица сервера каждый раз, когда генерируется новый отчет? Мне нужно хранить ежедневный / еженедельный отчет для исторических целей в одной таблице.

Возможно, мне нужно использовать какой-нибудь инструмент автоматизации ETL? Python Скрипты?

1 Ответ

3 голосов
/ 28 апреля 2020

Этот процесс не имеет смысла?

Вы не сохраняете результаты отчета. Отчет основан на запросе к базе данных. Таким образом, для отчета вы просто выполняете запрос с диапазоном дат или критериями.

Таким образом, вы можете запустить отчет сегодня 1 раз или 10 раз. Каждый раз, когда вы запускаете этот отчет, он попадает в базу данных и извлекает данные. Результаты не изменятся, если вы запустите отчет для сегодняшних данных 1 раз или 10 раз. И если через 3 месяца вы запустите отчет с сегодняшним диапазоном дат, то он должен создать такой же отчет.

Эта идея, что в любой «разумной» системе данных вы пытаетесь сохранить результаты Отчет не имеет никакого смысла. Можно предположить, что вы сгенерируете отчет и сохраните его в формате PDF, но по какой-либо возможной причине вы не сможете в любое время просто перезапустить отчет с теми же критериями, которые были у вас ранее, и таким образом воссоздать сообщать в любое время, пожалуйста?

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

Такой подход в Excel - не то, как работает система баз данных, и не то, как любая система с возможностями создания отчетов будет работать здесь с успехом.

Вы можете сохранять / помещать «сводные» данные в эту окончательную базу данных из Access. В этот момент вы могли бы / должны теперь иметь возможность генерировать свой отчет по своему усмотрению в Access (данные будут поступать с этого sql места последнего упокоения сервера.

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

Итак, возможно, ваш вопрос заключается в том, как я могу отправить некоторые сводные данные из Access в эту окончательную базу данных? Из чего тогда я могу свободно запускать отчеты снова и снова по желанию и в любое время. Идея о том, что отчет может быть запущен ТОЛЬКО один раз, и это все? Как это будет работать в любой производственной системе?

Итак, вам необходимо отправить данные ПЕРВЫМ в окончательный вариант базы данных. (а если это сводные данные, которые вы генерируете с помощью набора кода и обработки - тогда все в порядке).

Как только вы отправляете эти данные (возможно, сводные данные) в окончательную базу данных? Ну, тогда, конечно, вы должен иметь возможность запускать отчеты «по требованию» в любое удобное для вас время.

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

Если вы спрашиваете, можете ли вы легко отправлять данные с Access на SQL сервер ? Конечно, но отправку данных нельзя прикрепить к КОГДА вы запускаете отчет 1 раз или 10 раз. Как могут люди в многопользовательской системе одновременно запускать отчеты или даже повторно запускать отчеты?

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

Вы можете легко запускать отчеты в Access, которые извлекают данные из последнего места отдыха (сервер SQL, я полагаю?). Но процесс отправки этих данных на сервер sql необходимо отделить от «события» запуска таких отчетов, иначе у вас будет ОЧЕНЬ трудное время, чтобы заставить эту систему работать. Что произойдет, если вам нужно, или вы захотите, или просто так получится, что кто-то повторно запустит отчет? Вы не можете получать отчеты об отправке данных в базу данных SQL. Процесс ETL должен быть отделен от этого события создания отчета.

Если ваш процесс создает сводные данные (скажем, в некоторые локальные таблицы Access), вы можете просто использовать запрос (и) добавления из доступа к связанные таблицы, которые у вас есть в базе данных sql. Итак, после процесса ETL вы выполняете некоторые запросы на добавление в Access, которые принимают локальные данные и отправляют их на SQL сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...