gifts2017

OLAP для 1С с помощью Pentaho BI

Опубликовал Andrey Bandys18@gmail.com (bandy18) в раздел Отчеты - Управленческие

Хочу представить OLAP на основе Pentaho BI (http://www.pentaho.com/). Основное отличие Pentaho от большинства известных BI инструментов – это наличие полнофункциональной open source Community Edition (CE), то есть можно настроить OLAP отчетность ничего не тратя на BI сервер. Для тех, кто следит за лицензионной чистой применяемого программного обеспечения, это может стать решающим фактором выбора. Кроме того Pentaho BI полностью кросс-платформенный, так как написан на Java и имеет web интерфейс.

Что такое OLAP пользователям 1С уже давно не надо объяснять, здесь на сайте можно найти несколько десятков статей по этой теме.

Хочу представить OLAP на основе Pentaho BI (http://www.pentaho.com/). Основное отличие Pentaho от большинства известных BI инструментов – это наличие полнофункциональной open source Community Edition (CE), то есть можно настроить OLAP отчетность ничего не тратя на BI сервер. Для тех, кто следит за лицензионной чистой применяемого программного обеспечения, это может стать решающим фактором выбора. Кроме того, Pentaho BI полностью кросс-платформенный, так как написан на Java и имеет web интерфейс.

В основе Pentaho BI лежит open source ROLAP движок Mondrian (http://community.pentaho.com/projects/mondrian/). Он понимает запросы MDX и имеет возможность хранить агрегации.

Настройка open source продуктов, как правило, дело весьма непростое, и Pentaho CE не исключение. Если будет интерес, могу написать отдельную статью на эту тему, а здесь буду рассказывать про настройку для Pentaho Trial Enterprise Edition (EE). Это платная версия отличается от Pentaho CE набором BI компонентов и наличием удобного инсталлятора.

Для начала скачаем (http://www.pentaho.com/download) и установим  Pentaho BI. Процесс этот не быстрый, но зато никаких сложных вопросов задано не будет. Разве что надо будет указать пароль администратора для PostgreSql сервера. В результате мы получим готовый BI сервер с набором тестовых данных, Tomcat веб сервер, PostgreSql сервер баз данных и набор утилит для работы с сервером (design tools).

Настало время подготовить данные от 1С. Здесь тоже можно применять разные подходы: от текстовых файлов до конструирования хранилищ данных (Data Warehouse) масштаба предприятия. Мы постараемся сделать это относительно простым способом – создадим набор Views для MS SQL Server в базе данных, где лежат наши 1С данные. Да, используем серверный вариант 1С.

Для создания Views я написал небольшую утилиту Create1CViews.exe. Настройку ее надо сделать, поправив {Имя сервера} и {Имя базы данных } в файле app.config. Возможно, также надо будет поправить Usr= и Pwd= для параметра «1Cconnect». Результатом выполнения утилиты будет файл Create1CViews_Out.sql со скриптом для создания Views. Далее надо выполнить полученный скрипт в консоли MS SQL Management Studio.

Можно использовать не только MS SQL, но и Oracle и PostgreSql, для этого надо будет лишь слегка поправить SQL синтаксис в скрипте создания Views.

Наконец, привяжем источник данных 1С в Pentaho BI. Откроем в браузере http://localhost:8080 и попадем в Pentaho User Console. Используем стартовый аккаунт admin / password для входа. Если все прошло успешно, увидим следующий экран:

 

Далее нажимаем «Manage Data Sources», видим список доступных источников. Нам надо добавить два. В разных версиях Pentaho BI Server это делается немного по-разному, в версии 5.2 надо нажать на шестеренку и из меню выбрать «New Connection …». Определяем параметры и добиваемся того, чтобы Тест источника прошел успешно.

Мы создали источник для данных 1С, теперь надо добавить еще один источник для процессора OLAP (Mondrian). Снова  жмем на шестеренку и теперь выбираем «Import Analysis …». В качестве «Mondrian File» выбираем файл SchemaZCube.xml из архива Create1Cviews.zip, из списка «Data Source» выбираем источник к 1С, который мы только что создали (у меня db1c).

Все! Теперь из главного меню выбираем Create New / Analysis Report и в списке источников данных ищем наш «Куб Заказов 1С». Думаю, дальше уже понятно что делать :)

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

Дополнительно в папке Pentaho / design-tools Вы сможете найти утилиты:

  • Pentaho Data Integration – замечательный ETL инструмент с огромным набором источников и вариантов трансформации данных
  • Очень неплохой генератор отчетов Pentaho Report Designer
  • Metadata Editor – инструмент для создания моделей данных, используемый в Интерактивных отчетах
  • Aggregation Designer – для управления агрегациями в OLAP сервере
  • Schema Workbench – для создания Mondrian OLAP схем. Именно в нем подготовлен (и может быть отредактирован) файл SchemaZCube.xml

 

Скачать файлы

Наименование Файл Версия Размер
Create1CViews.zip 21
.zip 9,20Kb
14.11.14
21
.zip 9,20Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. John Smith (PiccaHut001) 14.11.14 18:59
спасибо за статью, меленькое замечание - пишите вместо Дашбоарды или dashboard или аналог этого слова на русском языке. Меня бесит русификация в стиле 1С, когда в английском слове буквы заменяют на похожие русские и потом читают по правилам русского языка. Англичанин вас не поймёт, по русски тоже звучит мерзко.
2. Алексей Роза (DoctorRoza) 17.11.14 08:21
Вы, вообще, о чем? Зачем это нужно? Какой выигрыш в работе? Чем плох имеющийся аналог?
3. Станислав Раташнюк (stanru1) 17.11.14 11:04
Спасибо за статью; я делал кубы на MSAS. Тоже смотрю в сторону Пентахо.
А каким образом реализован просмотр кубов? Есть свой клиент или через веб интерфейс можно крутить кубы?
4. olga pt (pt_olga) 17.11.14 11:15
автор, пишите дашборд как хотите, не обращайте внимание на тех, кого что-то бесит (1) ;)
а статья хорошая, кому-то может пригодиться
cleaner_it; Константин С.; +2 Ответить
5. Andrey Bandys18@gmail.com (bandy18) 17.11.14 11:58
(3) stanru1,
на первом (стартовом) слайде показан веб-клиент для просмотра куба и публикации полученных срезов.
к сожалению Pentaho CE имеет несколько других клиентов для просмотра кубов, на мой взгляд менее удобных чем в Pentaho EE.
Если Вы уже имели опыт применения MSAS, то использовать Pentaho OLAP (mondrian) вам будет значительно проще, т.к. использование MDX практически идентично.

(2) DoctorRoza,
разговор идет о применении OLAP сервера для обработки большого количества данных. Применение отдельного сервера для анализа данных всегда более продуктивно чем использование встроенных обработок или решения OLAP задач с помощью Excel таблиц.
stanru1; Yashazz; +2 Ответить 1
6. Andrey Bandys18@gmail.com (bandy18) 17.11.14 12:24
(3) stanru1,
еще, Mondrian поддерживает XMLA протокол.
я сам не пробовал, но видел в сети десктоп-клиентов типа Rex (waRehouse EXplorer), которые могут смотреть и в Pentaho и в MSAS.
7. Яков Коган (Yashazz) 17.11.14 19:05
Дельно. Надеюсь на развитие темы.
8. Сергей Одинесников (monsta) 17.11.14 20:44
9. Andre Skorik (SkorikA) 18.11.14 07:22
Понимаю что сейчас меня забросают камнями - но все же попробую задать вопрос.. Кто может мне рассказать что такого нельзя сделать 1С (например, связкой СКД+агрегаты) и что есть в OLAP (в части получения/формирования отчетов)? Буду очень благодарен если кто-то мне кинет ссылку на подходящую статью.
10. Борис Скворцов (gaglo) 18.11.14 09:27
(5) Насчет "большого количества данных": пожалуйста, дайте оценку, какое количество данных можно считать уже достаточно большим, чтобы описанный подход был заметно быстрее встроенных обработок. Ну там десяток тысяч документов, сто тысяч, миллион?
11. Алексей 1 (AlX0id) 18.11.14 11:39
создадим набор Views для MS SQL Server

Странным образом коррелирует с названием статьи.. От 1с тут чуть больше, чем ничего.
Судя по всему, при создании чуть более сложных отчетов, нежели выборка справочников, процесс разработки затянется..
12. olga pt (pt_olga) 18.11.14 12:51
(10) gaglo, в количестве документов не скажу, но мы в свое время использовали OLAP для построения отчетности за последние 3 года.
1С при этом сильно бы задумывалась, а так как база зачастую режется по годам, то без изворотов не построишь отчет по сопоставлению данных нескольких лет (продажи, производство и т.п.)
Вообще для отчетности больших баз можно конечно использовать отдельную БД 1С, но если шаблоны отчетности практически не изменяются, то куб обслуживать проще и реально работает быстрее, плюс не нужны лицензии 1С. Был опыт создания кубов на SQL, а просмотр отчетов в Excel, получая данные из внешнего источника. Дешево и сердито. :)
13. Сергей Одинесников (monsta) 18.11.14 20:28
14. Станислав Раташнюк (stanru1) 18.11.14 23:01
(9) SkorikA, я могу из своего опыта пример привести.
Да, в 1с можно на СКД изобразить все то же самое, что и с помощью кубов, но!
Кубы дают поразительную возможность пользователю манипулировать данными: выбирать одним движением мыши различные разрезы, показатели и т.п.
Например, смотрим продажи за период в разрезе партнеров. Раз, добавляем себестоимость и величину наценки. Раз, и смотрим то же в разрезе товарных групп. А теперь - по поставщикам. А теперь - по регионам, куда доставляли товар. Кубы на то и многомерные, что из одной таблицы данных в связке с измерениями можно получить огромное количество срезов данных.
Еще один плюс кубов в том, что они в разы быстрее соответствующих отчетов в 1С. Таблица данных для кубов сознательно денормализована: с целью хранения данных ее использовать не стоит, а вот для быстрого получения аналитики это то, что нужно.
15. Andre Skorik (SkorikA) 19.11.14 08:23
(14) Хранить данные и не предполагалось, то, что таблица избыточна - и так понятно (равно как и таблица итогов/агрегатов в 1С).
Кубы дают поразительную возможность пользователю манипулировать данными: выбирать одним движением мыши различные разрезы, показатели и т.п.

Позвольте, но что в СКД не позволяет сделать того же самого? Нестандартные формы настройки отчетов, позволяют решить все проблемы настройки СКД (я согласен что обычному средне-рядовому пользователю разобраться в настройках СКД не очень просто).

Встречный вопрос: а насколько [просто/удобно/прозрачно] в кубе можно настроить сложный расчет итоговых полей (например цена, % скидки, % выполнения плана - т.е. когда показатель рассчитывается в контексте текущей группировки от других показателей)?

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

СКД так же позволяет выполнять группировки (срезы) как по измерениям, так и по производных/подчиненным полям от измерений (в т.ч. с использованием характеристик).

По производительности - здесь я согласен что СКД может проигрывать, однако при правильно подготовленном регистре эта разница будет не существенна. А возможность формировать отчеты в фоновом задании подслащает пилюлю:-)

Так же, насколько я понимаю, отдельно стоит вопрос актуализации данных в кубе - т.е. какой-либо механизм подготовки данных или трансляций (не люблю это слово после Инталева:-( ). Что не позволяет (или позволяет, но с накладками) получать отчеты по текущим данным - т.е. механизм OLTP

p.s. Перечитал свое сообщение. Если у вас возникло ощущение что я хочу потролить - уверяю, это не так - только желание разобраться в области.
16. Борис Скворцов (gaglo) 19.11.14 11:01
(12) это не опечатка?
если шаблоны отчетности практически не изменяются, то куб обслуживать проще

Мне показалось, что в числе прелестей куба находится как раз возможность лёгкого изменения шаблонов.
17. Александр Топольский (AlexanderKai) 21.11.14 17:08
По производительности - здесь я согласен что СКД может проигрывать, однако при правильно подготовленном регистре эта разница будет не существенна. А возможность формировать отчеты в фоновом задании подслащает пилюлю:-)

Просто интересно, а вы замеряли?
18. VVV (V_V_V) 23.11.14 00:10
(15)
я согласен что обычному средне-рядовому пользователю разобраться в настройках СКД не очень просто
с кубом у некоторых пользователей могут возникнуть не меньше проблем. А у администраторов доступа - проблемы с разграничением данных...
Но я не противник кубов! :)
19. Andre Skorik (SkorikA) 25.11.14 11:07
(17) Замерял. Используя секундомер и субъективные ощущения. СКД проигрывает при "больших" (30-50 страниц текста и больше) отчетах. Т.к. огромное время тратится просто на перегонку данных между сервером и клиентом и их отображение. Вопрос целесообразности отображения таких ["больших"] отчетов оставим в стороне.

(18) Так и я не противник кубов:-) Я просто отношусь к ним достаточно сдержанно (не считаю их серебряной пулей в "отчетостроении"). Но согласен, что в умелых руках они могут творить чудеса:-)
К сожалению, не IT пользователям кубы увидеть так и не довелось - поэтому статистики удобства пользования/настройки/администрирования куба я не имею.
20. Александр Топольский (AlexanderKai) 05.12.14 12:56
(19) SkorikA,
Меня в СКД больше всего раздражает, что это черный ящик, и если какая-нибудь "нештатная" проблема случится, то ковырять можно очень долго.

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

Тут 1С конечно вне конкуренции.
Пример: Форма при довольно невинном изменении (видимость = не видимость) полностью перестраивается на сервере, хотя можно было сделать это на клиенте.
21. Andre Skorik (SkorikA) 09.12.14 11:47
(20) Насчет того что СКД это черный ящик, позволю себе не согласиться. Ни разу не сталкивался с тем, чтобы СКД действительно вело себя действительно не однозначно (за исключением явных косяков платформы, которых было не так много). Опыты + ИТС + курс по СКД (от Гилева, не сочтите за рекламу; у Хрусталевой, имхо, не так подробно и глубоко) позволили мне понять принципы его работы и множество неочевидных вещей.
А для отладки рекомендую консоль компоновки данных в "Инструментах разработчика" (опять же, не сочтите за рекламу).

По видимости/невидимости ничего не скажу - тоже болезненная тема:-)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа