OLAP - это просто

По ходу работы мне часто требовалось делать сложные отчеты, я все время пытался найти в них что-то общее, чтобы составлять их более просто и универсально, даже написал и опубликовал по этому поводу статью. Однако мою статью раскритиковали и сказали, что все те проблемы, которые я поднял, давно уже решены в OLAP и порекомендовали посмотреть сводные таблицы в EXCEL. Это оказалось настолько простым, что приложив к этому свои гениальные ручонки, у меня получилась очень простая схема для выгрузки данных из 1С или любой другой базы данных (в дальнейшем под 1С подразумевается любая база данных) и анализа в OLAP. Я думаю, многие схемы выгрузки в OLAP слишком усложнены, я выбираю простоту.

OLAP - это просто

fixin
http://koenigsoft.boom.ru/

Удивительное - рядом ...

По ходу работы мне часто требовалось делать сложные отчеты, я все время пытался найти в них что-то общее, чтобы составлять их более просто и универсально, даже написал и опубликовал по этому поводу статью. Однако мою статью раскритиковали и сказали, что все те проблемы, которые я поднял, давно уже решены в OLAP (www.molap.rgtu.ru) и порекомендовали посмотреть сводные таблицы в EXCEL.
Это оказалось настолько простым, что приложив к этому свои гениальные ручонки, у меня получилась очень простая схема для выгрузки данных из 1С или любой другой базы данных (в дальнейшем под 1С подразумевается любая база данных) и анализа в OLAP.
Я думаю, многие схемы выгрузки в OLAP слишком усложнены, я выбираю простоту.

Характеристики:

1. Для работы требуется только EXCEL 2000.
2. Пользователь сам может конструировать отчеты без программирования.
3. Выгрузка из 1С в простом формате текстового файла.
4. Для бухгалтерских проводок уже имеется универсальная обработка для выгрузки, работающая в любой конфигурации. Для выгрузки других данных имеются обработки-образцы.
5. Можно заранее сконструировать формы отчетов, а затем применять их к разным данным без их повторного конструирования.
6. Довольно хорошая производительность. На первом длительном этапе данные сначала импортируются в EXCEL из текстового файла и строится куб OLAP, а затем довольно быстро на основе этого куба может быть построен любой отчет. Например, данные о продажах товара по магазину за 3 месяца с ассортиментом 6000 товаров, загружаются в EXCEL 8 минут на Cel600-128M, рейтинг по товарам и группам (OLAP-отчет) пересчитывается за 1 минуту.

7. Данные выгружаются из 1С полностью за указанный период (все движения, по всем складам, фирмам, счетам). При импорте в EXCEL возможно использование фильтров, загружающих для анализа только нужные данные (например, из всех движений, только продажи).
8. В настоящее время разработаны способы анализа движений или остатков, но не движений и остатков вместе, хотя это в принципе возможно.

Что такое OLAP: (www.molap.rgtu.ru)

Предположим у вас есть торговая сеть. Пусть данные о торговых операциях выгружены в текстовый файл или таблицу вида:

Дата Месяц Неделя Вид Товар Склад Количество Сумма Контрагент Автор

Дата - дата операции
Месяц - месяц операции
Неделя - неделя операции
Вид - закуп, продажа, возврат, списание
Контрагент - внешняя организация, учавствующая в операции
Автор - человек, выписавший накладную

В 1С, например, одна строка этой таблицы будет соответствовать одной строке накладной, некоторые поля (Контрагент, Дата) при этом берутся из шапки накладной.

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


Эта таблица является исходной для OLAP-анализа.

Далее определяются, какие из полей будут суммироваться (Данные) , какие будут являться уровнями группировок (Измерения), какие данные из таблицы брать(Фильтр):
Отчет Измерения Данные Фильтр
Сколько товара и на какую сумму продается за день? Дата, Товар Количество, Сумма Вид=продажа
Какие контрагенты поставили какой товар на какую сумму по месячно?љљљ Месяц, Контрагент, Товар Сумма Вид=закуп
На какую сумму выписали операторы накладных какого вида за весь период отчета? Автор, Вид Сумма љ

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


Как использовать у себя:

Данные из дистрибутива скачайте архив olap.zip љ распаковать именно в каталог c:fixin. Прочитайте readme.txt и выполните все инструкции в нем.

Сначала вы должны написать обработку, которая выгружает данные из 1С в текстовый файл (таблицу). Вам нужно определить состав полей, которые будут выгружаться.

Например, уже готовая универсальная обработка, которая работает в любой конфигурации и выгружает для OLAP-анализа проводки за период, выгружает для анализа следующие поля:

Дата|ДеньНедели|Неделя|Год|Квартал|Месяц|Документ|Фирма|Дебет|ДтНоменклатура
|ДтГруппаНоменклатура|ДтРазделНоменклатура|Кредит|Сумма|ВалСумма|Количество
|Валюта|ДтКонтрагенты|ДтГруппаКонтрагенты|КтКонтрагенты|КтГруппаКонтрагенты|
КтРазныеОбЪекты

Где под префиксами Дт(Кт) идут субконто Дебета (Кредита), Группа - это группа данного субконто (если имеется), Раздел - группа группы, Класс - группа раздела.

Для торговой системы поля могут быть такие:

Направление|ВидДвижения|ЗаНал|Товар|Количество|Цена|Сумма|Дата|Фирма
|Склад|Валюта|Документ|ДеньНедели|Неделя|Год|Квартал|Месяц|Автор
|КатегорияТовара|КатегорияДвижения|КатегорияКонтрагента|ГруппаТовара
|ВалСумма|Себестоимость|Контрагентљ

Для анализа данных используются таблицы Анализ движений.xls ( Анализ бухгалтерии.xls ). Открывая их, не отключайте макросы, иначе вы не сможете обновлять отчеты (они запускаются макросами на языке VBA). Исходные данные эти файлы берут из файлов C:fixinmotions.txt (C:fixinbuh.txt), в остальном они одинаковые. Поэтому возможно, вам придется скопировать ваши данные в один из этих файлов.
Чтобы в EXCEL загрузились ваши данные, выберите или напишите свой фильтр и нажмите кнопку Сформировать на листе Условия.
Листы отчетов начинаются префиксом Отч. Перейдите на лист отчета, нажмите Обновить и данные отчета изменятся в соотсветсвии с последними загруженными данными.

Если вас не устраивают стандартные отчеты, есть лист ОтчШаблон. Скопируйте его в новый лист и настройте вид отчета, работая со сводной таблицей на этом листе (о работе со сводными таблицами - в любой книге по EXEL 2000). Рекомендую настраивать отчеты на небольшом наборе данных, а затем уже запускать их на большом массиве, т.к. нет никакой возможности отключить перерисовку таблиц при каждом изменении макета отчета.

Технические комментарии:

При выгрузке данных из 1С пользователь выбирает папку, куда ему выгружать файл. Я сделал это потому, что вполне вероятно в ближайшем будующем будут выгружаться несколько файлов (остатки и движения). Затем по нажатию в Проводнике кнопки љ Отправить --> На OLAP-анализ в EXCEL 2000 данные копируются из выбранной папки в папку C:fixin. (чтобы эта команда появилась в списке команды Отправить и нужно скопировать файл На OLAP-анализ в EXCEL 2000.bat в каталог C:WindowsSendTo) Поэтому выгружайте данные сразу давая имена файлам motions.txt или buh.txt.

Формат текстового файла:
Первая строка текстового файла - заголовки колонок разделенные |, остальные строки содержат значения этих колонок, разделенные |.

Для импорта текстовых файлов в Excel используется Microsoft Query (составная часть EXCEL) для его работы необходимо наличие в каталоге импорта (C:fixin) файла shema.ini, содержащего следующую информацию:

[motions.txt]
ColNameHeader=True
Format=Delimited(|)
MaxScanRows=3
CharacterSet=ANSI
[buh.txt]
ColNameHeader=True
Format=Delimited(|)
MaxScanRows=3
CharacterSet=ANSI


Пояснение: motions.txt и buh.txt - это название раздела, соответствует имени импортируемого файла, описывает, как импортировать текстовый файл в Эксель. Остальные параметры означают, что первая строка содержит названия колонок, разделителем колонок является |, набор символов - Windows ANSI (для ДОС - OEM).

Тип полей определяется автоматически исходя из содержащихся в колонке данных (дата, число, строка).
Перечень полей не нужно нигде описывать - EXCEL и OLAP сами определят, какие поля содержатся в файле по заголовкам в первой строке.

Внимание, проверьте ваши региональные настройки Панель управления --> Региональные настройки . В моих обработках числа выгружаются с разделителем запятая, а даты в формате ДД.ММ.ГГГГ.

Дополнительно:

Рекомендуется также изучить любую книгу по EXCEL 2000 с описанием
сводных таблиц.

Данные при нажатии кнопки Сформировать загружаются в сводную таблицу на листе База, а из этой сводной таблицы и берут данные все отчеты на листах Отч.

Я понимаю, что любители MS SQL Server и мощных баз данных начнут ворчать, что у меня слишком все упрощено, что моя обработка загнется на годичной выборке, но в первую очередь я хочу дать преимущества OLAP-анализа для средних организаций. Я бы позиционировал этот продукт как инструмент годичного анализа для оптовых компаний, квартального анализа для розничной торговли и оперативного анализа для любой организации.

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

Описание работы в EXCEL (для пользователей):љ

Инструкция по использованию отчетов:
1. Отправьте на анализ выгруженные данные (уточните у администратора). Для этого нажмите правой кнопкой на папке, в которую у вас выгрузились данные из 1С и выберите команду Отправить, затем На OLAP-анализ в EXCEL 2000.

2. Откройте файл Анализ движений.xls
3. Выберите Значение фильтра, нужные вам фильтры можно дописать на закладке Значения.
4. Нажмите кнопку Сформировать, при этом выгруженные данные будут загружены в EXCEL.
5. После загрузки данных в EXCEL, можно смотреть различные отчеты. Для этого достаточно нажать кнопку Обновить в выбранном отчете. Листы с отчетами начинаются на Отч.
Внимание! После того как вы поменяете значение фильтра, нужно еще раз нажать кнопку Сформировать, чтобы данные в EXCEL перезагрузились из файла выгрузки в соответствие с фильтрами.


Другие статьи автора:
Визуализация данных

Комментарии

9
  • Хранитель_врат
    Все это от большого самомнения! Попрубуйте по этой схеме проанализировать продажи достаточно крупной оптово розничной фирмы - устанете ждать. Серь.зный анализ в ехеле не делается - не под то он заточен. Не способен ехель переваривать большие обЪемы данных. Для нормального построения OLAP необходимо отдельное хранилище данных, отдельный OLAP - сервер, отдельный OLAP - клиент, тогда все будет хорошо. А вот на то, чтобы склеить остаки и продажи в один кубик у гения мозгов не хватило! А ларчик просто открывался. Если кому интересно - пишите daddy7@yandex.ru, поделюсь идеями и опытом реальной реализации!
  • Хранитель_врат
    Да Daddy, было бы неплохо. С интересом почитаю и позадаю вопросы.