Бизнес-Аналитика С Использованием Ms Sql Server 2008 R2 В Компании, Использующей Учетные Системы 1С

В этой статье я хотел бы описать основные этапы построения системы аналитической отчетности с использованием MS SQL Server 2008 R2 в организации, использующей ОЛТП системы учета на платформе .

В статье описан мой первый опыт построения решений Business Intelligence.

Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С



Общие входные данные

Компания, в которой я работаю, занимается оптовой торговлей и состоит примерно из 30 офисов, расположенных в регионах России.

В каждом офисе имеется информационная база данных 1С, в которой фиксируются данные о продажах.

Организация использует два типа конфигурации Базы данных 1С.

Одна конфигурация используется в центральном офисе в Москве, вторая – в филиалах (в регионах России).

В качестве СУБД, обеспечивающей работу систем 1С, используется Microsoft SQL Server 2008 R2 (SP2) Standard Edition (64-бит).

Единой общей нормативно-справочной информации (ОГРИ) не существует. Справочник «Продукция» и некоторые другие справочники, являющиеся классификаторами продукции и контрагентов, синхронизируются по коду или другому идентификатору, которые хранятся в системах 1С.

Одним из основных отчетов, используемых в организации, является отчет о продажах.

Существующий отчет о продажах позволяет извлекать данные только из той системы, в которой он сформирован.

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

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



Бизнес-требования

Основным бизнес-требованием было автоматическое формирование отчета о продажах для всех офисов компании.

Кроме того, отчет должен содержать данные о количестве и сумме продаж в следующих аналитических разделах:

  • Период (год, квартал, месяц, день).

  • Продукты (включая атрибуты, классифицирующие продукты).

  • Контрагенты (включая признаки, классифицирующие контрагентов).

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

В качестве фильтра можно указать произвольное количество значений.

Отчет должен формироваться не дольше минуты.

Формирование отчета не должно существенно влиять на работу учетных систем 1С.

Внедрение и дальнейшее сопровождение отчета должно быть минимально затратным.



Предварительная оценка и выбор решения

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

  • Развертывание хранилища данных на экземпляре SQL-сервера Ядро базы данных SQL Server в центральном офисе.

  • Разработайте многомерную модель данных, содержащую показатели и измерения, необходимые для создания отчета о продажах.

  • Развертывание многомерной базы данных, содержащей многомерную модель, на экземпляре SQL-сервера.

    СССАС в центральном офисе.

  • Развивать ЭТЛ -пакеты ССИС , с помощью которого будут обновляться данные в хранилище данных и в многомерной базе данных.

  • Разверните пакеты SSIS на экземпляре SQL-сервера SSIS в центральном офисе.

  • Обеспечьте автоматическое выполнение пакетов SSIS с уведомлением по электронной почте специалистов технической поддержки о статусе выполнения пакетов.

  • Предоставить сотрудникам компании доступ к многомерной базе данных для формирования сводного отчета о продажах с использованием объекта Сводная таблица Отчет в MS Excel.
  • Проводить обучение сотрудников, участвующих в составлении отчетов о продажах.



Реализация решения



Тап №1. Сбор информации об источниках данных в системах 1С.

Создание представлений для доступа к необходимым данным

Прежде чем приступить к проектированию хранилища, я создал Представления в базах данных SQL, поддерживающие работу систем 1С.

В итоге у меня получилось два набора представлений: набор для базы данных в центральном офисе (см.

рис.

1) и набор для баз данных в филиалах (рис.

2).

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



Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

1. Представления в базе данных SQL центрального офиса.



Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

2. Представления в отраслевых базах данных SQL Состав справок в центральном офисе и филиалах оказался разным, поскольку часть основных данных является общей и полностью хранится в базе данных центрального офиса.

В частности, речь идет о представлениях:

  • dbo.ChainStores (Клиентские торговые сети).

  • dbo.Countries (Классификатор стран мира).

  • dbo.Продукты (Продукты).

  • dbo.ProductAnalogs (Аналоги продукта).

  • dbo.ProductTypes (Классификатор типов продукции).

  • dbo.Projects (Классификатор типов клиентов).

  • dbo.ProjectsForProductMatrix(Классификатор типов продукции).

  • dbo.CrossProductsAndProjectsForProductMatrix (представление, обеспечивающее связи «многие ко многим» между представлениями dbo.Products и dbo.ProjectsForProductMatrix).

Создание представлений в базах данных SQL позволяет сделать решение более универсальным.

Например, при изменении структуры таблиц в базах данных 1С нам не придется вносить изменения в ETL-пакеты; достаточно будет переделать виды.



Экран №2. Разработка структуры хранилища данных.

Развертывание хранилища данных

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

Для этого просто посмотрите на типы столбцов представления.

Например, представление dbo.Clients выглядит так.



Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

3. Просмотр dbo.Clients Обратите внимание, что в представлении dbo.Clients есть поле ParentId. Используя это поле, мы позже сможем построить иерархию «родитель-потомок» в многомерной модели данных для измерения «Клиенты».

Аналогичное поле присутствует в представлениях dbo.Products и dbo.Managers. Прежде чем приступить к проектированию хранилища данных, необходимо определиться с его схемой.

Есть две схемы хранения данных – это звезда И снежинка .

Обе схемы имеют свои плюсы и минусы, и их сравнение выходит за рамки данной статьи.

Я выбрал схему «снежинка», основываясь на том факте, что при переходе на SQL Server 2012 и использовании самообслуживания BI в будущем пользователям, вероятно, будет удобнее использовать более нормализованные данные из хранилища данных при разработке собственных моделей данных в PowerPivot для Excel .

Структура разработанного мной хранилища данных показана на следующем рисунке.



Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

4. Структура хранилища данных Таблицы dim.DimDates(даты), dim.DimOffices(офисы), dim.DimRegions(регионы России) заполняются один раз и не требуют автоматического обновления.

Таблица dim.DimOffices содержит названия офисов компании.

Таблица dim.DimDates содержит информацию о дате для соответствующего измерения в многомерной модели данных.

Таблицы размеров содержат суррогатный ключ , выступающий в качестве первичного ключа.

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



Кран №3. Разработка многомерной модели данных.

Развертывание многомерной базы данных

При создании многомерной модели данных было создано представление Просмотр источника данных , в который вошли все таблицы из хранилища данных, кроме таблицы stage.FactSales. Эта таблица будет использоваться только для временного хранения данных о продажах перед загрузкой в таблица фактов факт.FactSales. Куб «Продажи» реализует две группы мер (см.

рис.

5).



Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

5. Меры Группа мер «Перекрестные продукты и проекты для матрицы продуктов» обеспечивает связь «многие ко многим» между измерениями «Продукты» и «Каналы продаж» для матрицы продуктов.

Список измерений показан на рисунке 6.

Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

6. Измерения Для измерений Продукты, Клиенты, Менеджеры реализована иерархия Родитель-потомок.



Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

7. Измерение продукта Для управления доступом к многомерной базе данных создана роль «Аналитики», которой предоставлены права «Чтение» и «Детализация» куба «Продажи».

Права на детализацию позволяют пользователям получать расшифровку информации о том, как были рассчитаны значения ячеек в отчете.



Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

8. Роль аналитиков Для развертывания многомерной базы данных на сервере укажите в свойствах проекта имя экземпляра SSAS SQL-сервера, имя базы данных на сервере и в меню.

СТАВКИ нажмите «Развернуть».

Подключитесь к экземпляру SSAS, используя SMS и мы видим, что создана многомерная база данных.



Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

9. Многомерная база данных OLAP по продажам.



Тап №4. Разработка ETL-пакетов.

Развертывание ETL-пакетов.

Настройка автоматического выполнения ETL-пакетов

Самым трудоемким этапом проектирования решений Business Intelligence является разработка ETL-пакетов.

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

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

Это лишь основные трудности; на самом деле их гораздо больше.

Однако благодаря инструментам SSIS большинство этих проблем можно решить.

В моей реализации данные в таблицах измерений обновляются полностью, т.е.

добавляются новые записи, а существующие записи перезаписываются.

Таблица фактов очищается и заполняется повторно в течение периода по умолчанию, равного трем месяцам.

Глубина обновления таблицы фактов в месяцах хранится в конфигурации пакета SSIS, которая представляет собой отдельную таблицу в хранилище данных.



Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

10. Пакеты SSIS На рисунке 10 показаны 4 пакета SSIS, назначение которых следующее:

  • Обновление хранилища данных и процессов продаж OLAP.dtsx — это главный пакет, который реализует общую логику процесса ETL и запускает все остальные пакеты.

  • Импорт измерений и фактов из Москвы.

    dtsx - пакет для загрузки данных в таблицы измерений и фактов из базы данных центрального офиса в хранилище данных.

  • Импорт измерений и фактов из Branches.dtsx — пакет для загрузки данных в таблицы измерений и фактов из баз данных филиалов в хранилище данных.

  • Process Sales OLAP.dtsx — это пакет, выполняющий обновление (обработку) данных в многомерной базе данных.

Логика (поток управления) главного пакета следующая (см.

рис.

11).



Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

11. Обновление пакета OLAP DW и Process Sales. Давайте рассмотрим каждый элемент этой схемы:

  • Установка значений переменных пакета (задача «Выполнение SQL») выполняется первой.

    Цель этого элемента — получить значения из конфигурации пакета и записать их в переменные пакета.

    В конфигурации пакета также хранится информация о глубине обновления таблицы фактов в месяцах.

    Конфигурация пакета хранится в отдельной таблице в хранилище базы данных и может быть изменена ИТ-специалистами.

  • Далее «Вставка значений по умолчанию в измерения» (задача «Выполнение SQL») проверяет и заполняет хранилище данных пустыми элементами.

    Например, в таблице dim.DimProducts после выполнения этой задачи должен появиться элемент с идентификатором (Id), равным нулю.

    Записи с нулевыми идентификаторами будут созданы во всех таблицах измерений для обеспечения логической целостности данных, поскольку все поля таблицы фактов определены как NOT NULL и имеют значение по умолчанию, равное нулю.

    Наличие NULL в таблице фактов приводит к ошибкам при обработке многомерной базы данных.

  • Получить список исходных OLTP-баз данных в Москве (Execute SQL Task) — получает список баз данных центрального офиса (в моем случае такая база данных только одна, но для большей универсальности решения я предположил, что их может быть несколько).

    Список баз данных хранится в таблице dim.DimOffices. В этой таблице также хранятся строки подключения к базам данных.

    Полученный образец записывается в переменную пакета.

  • Для всех баз данных OLTP в Москве (контейнер циклов по каждому элементу) проходит выборку, полученную на предыдущем шаге, и для каждой строки выборки (т. е.

    для каждой базы данных) выполняет пакет «Импорт измерений и фактов из Москвы.

    dtsx».

    Параметры из главного пакета передаются вызываемому пакету путем установки значений конфигурации пакета, что выполняется задачей «Задание конфигураций пакета (выполнение задачи SQL)».

  • Следующие два шага — «Получить список исходных баз данных OLTP в филиалах» (задача «Выполнение пакета») и «Для всех баз данных OLTP в филиалах» (контейнер цикла по каждому элементу) — аналогичны двум предыдущим, только они выполняются для баз данных филиалов.

  • Последний этап OLAP процесса продаж (задача «Выполнение пакета») запускает пакет обновления данных в многомерной базе данных.

Описанные выше пакеты развертываются на экземпляре SQL Server служб SSIS. Для автоматического запуска мастер-пакета на SQL-сервере создана задача «Обновить DW и обработать продажи» (см.

рис.

12).



Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

12. Задание SQL для запуска пакета SSIS Для контроля выполнения ETL-процесса в задаче настроено уведомление специалистов службы поддержки по электронной почте о завершении задачи (см.

рис.

13).



Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

13 Настройка уведомления о завершении задачи по электронной почте

Этап №5. Предоставление доступа к многомерной базе данных
Доступ к многомерной базе данных предоставляется сотрудникам организации путем добавления их доменных учетных записей к роли «Аналитики» многомерной базы данных с помощью SMS (см.

рис.

14).



Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

14. Членство в качестве аналитиков

Экран №6. Обучение сотрудников организации
Для обучения пользователей был записан 15-минутный видеоролик, в котором были продемонстрированы возможности MS Excel, позволяющие подключиться к многомерной базе данных и построить отчет с помощью объекта «Отчет сводной таблицы».

Один из возможных вариантов отчета показан на рисунке 15.

Бизнес-аналитика с использованием MS SQL Server 2008 R2 в компании, использующей учетные системы 1С

Рис.

15. Пример отчета сводной таблицы в Excel

выводы

Требования заказчика были полностью выполнены.

Бета-тестирование проводили ключевые пользователи компании, которые ежедневно формируют отчеты о продажах.

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

Для оценки решения приведем несколько цифр:

  • На реализацию данного решения было потрачено 40 человеко-часов.

    Все описанное делал один человек, то есть я.

    Ранее я посещал курсы и успешно сдал экзамены Microsoft, получив сертификат Microsoft Certified Solutions Expert в области бизнес-аналитики.

  • Таблица фактов в рабочей базе данных содержит около 40 миллионов строк.

  • Процесс ETL занимает около 20 минут.
  • Отчеты формируются в течение нескольких секунд.
Теги: #бизнес-аналитика #бизнес-аналитика #1c #SQL Server 2008 #Microsoft SQL Server
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.