Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Создание OLAP cube 1С77 (число прочтений - 11293 )
Nikolaj
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 11. Июня 2008
Создание OLAP cube 1С77
19. Июня 2008 :: 05:18
Печать  
Запросом данные в ТЗ получил. Как далее из имеющейся ТЗ создать OLAP-куб?
Может кто выкинет пример кода, а то мозг уже кипит...
Система: Win2003, SQL2000.
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание OLAP cube 1С77
Ответ #1 - 19. Июня 2008 :: 05:46
Печать  
Если вирутальный - смотри в PivotTable и MDX.
Если реальный - тогда надо Analysis Services ставить, писать витрину данных, писать куб, заполнять витрину, процессировать куб.
Если найду пример - выложу.

Здесь был пример использования ActiveX для просмотра данных с использованием  PivotTable, попробуй поищи.
  
Наверх
IP записан
 
Nikolaj
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 11. Июня 2008
Re: Создание OLAP cube 1С77
Ответ #2 - 19. Июня 2008 :: 06:23
Печать  
Нужен реальный а не виртуальный.
В данный момент формирую через создание файла .mdb используя
Cat = СоздатьОбъект("ADOX.Catalog");
Cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ФайлБазы);
Cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ФайлБазы;
Tab = СоздатьОбъект("ADOX.Table");
...
Но сами понимаете, это как гланды через одно место. Работает, но очччень долго. Возможно кто-то уже решал подобное более быстрым путем, а то на большом объеме - хоть вешайся. Т.е. как пропустить создание промежуточной .mdb и создать из ТЗ???
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание OLAP cube 1С77
Ответ #3 - 19. Июня 2008 :: 06:53
Печать  
Nikolaj писал(а) 19. Июня 2008 :: 05:18:
Запросом данные в ТЗ получил. Как далее из имеющейся ТЗ создать OLAP-куб?

Сюда смотрел?
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
quick
Junior Member
**
Отсутствует


LinuxMint, python, CodeTyphon

Сообщений: 83
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 21. Февраля 2008
Пол: Мужской
Re: Создание OLAP cube 1С77
Ответ #4 - 19. Июня 2008 :: 08:15
Печать  
http://infostart.ru/profile/4456/projects/1264/
Как то делал для себя.. лежит теперь в общем доступе
  
Наверх
ICQ  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание OLAP cube 1С77
Ответ #5 - 19. Июня 2008 :: 09:18
Печать  
quick писал(а) 19. Июня 2008 :: 08:15:
http://infostart.ru/profile/4456/projects/1264/
Как то делал для себя.. лежит теперь в общем доступе

Не сбивай народ с пути истинного.
Если выгрузка ТЗ в mdb не устраивает Nikolaj, то эта "поделка" ему точно не подойдет.

2 Nikolay:
Если база SQL, то можно сделать Indexed View для нужных таблиц и куб строить по этому View.
Если база DBF, то можно слить данные в промежуточную таблицу при помощи OLEDB
Код
Выбрать все
SELECT тырыпыры......skipped
INTO TABLE факты.dbf
 


ИМХО, самый бастрый вариант. Без получения результатов в ТЗ вообще.

Или попробуй воспользоваться чудной консолькой от berezdetsky
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
Nikolaj
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 11. Июня 2008
Re: Создание OLAP cube 1С77
Ответ #6 - 19. Июня 2008 :: 09:37
Печать  
quick писал(а) 19. Июня 2008 :: 08:15:
http://infostart.ru/profile/4456/projects/1264/
Как то делал для себя.. лежит теперь в общем доступе


Не то.
  
Наверх
 
IP записан
 
Nikolaj
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 11. Июня 2008
Re: Создание OLAP cube 1С77
Ответ #7 - 19. Июня 2008 :: 09:42
Печать  
berezdetsky писал(а) 19. Июня 2008 :: 06:53:
Nikolaj писал(а) 19. Июня 2008 :: 05:18:
Запросом данные в ТЗ получил. Как далее из имеющейся ТЗ создать OLAP-куб?

Сюда смотрел?


Да. Только непонятно как создается сам файл куба. У меня его вообще нету, когда указываю Итоги: Куб. Группировки и вычисляемые поля в запросе имеются. ТЗ получаю с правильными данными, а вот самого файла .cub нету. Может нетуда смотрю, - где он вообще должен сохраниться???
  
Наверх
 
IP записан
 
Nikolaj
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 11. Июня 2008
Re: Создание OLAP cube 1С77
Ответ #8 - 19. Июня 2008 :: 09:51
Печать  
steban писал(а) 19. Июня 2008 :: 09:18:
2 Nikolay:
Если база SQL, то можно сделать Indexed View для нужных таблиц и куб строить по этому View.
Если база DBF, то можно слить данные в промежуточную таблицу при помощи OLEDB
Код
Выбрать все
SELECT тырыпыры......skipped
INTO TABLE факты.dbf
 


ИМХО, самый бастрый вариант. Без получения результатов в ТЗ вообще.

Или попробуй воспользоваться чудной консолькой от berezdetsky


База в SQL2000. Поподробней насчет "Если база SQL, то можно сделать Indexed View для нужных таблиц и куб строить по этому View."
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание OLAP cube 1С77
Ответ #9 - 19. Июня 2008 :: 10:06
Печать  
Nikolaj писал(а) 19. Июня 2008 :: 09:42:
Да. Только непонятно как создается сам файл куба. У меня его вообще нету, когда указываю Итоги: Куб. Группировки и вычисляемые поля в запросе имеются. ТЗ получаю с правильными данными, а вот самого файла .cub нету. Может нетуда смотрю, - где он вообще должен сохраниться???

Итоги: Куб на вкладке Дополнительно - это не о том (это опция секции GROUP BY). Смотри вкладку Итоги.
Файл куба можно сделать и без конструктора - задав секцию TOTALS инструкции SELECT. Синтаксис секции TOTALS, место сохранения куба и многое другое описаны в документации:
Пуск\Все программы\1C Предприятие 7.7\Консоль запросов 1С++
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Создание OLAP cube 1С77
Ответ #10 - 19. Июня 2008 :: 13:48
Печать  
Лучше разобраться с Анилизис сервисес имхо...
СКЛ 2005 + Ексель 7 показывают хорошие результаты
Базы у нас и в том числе для куба на СКЛ 2000
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Nikolaj
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 11. Июня 2008
Re: Создание OLAP cube 1С77
Ответ #11 - 19. Июня 2008 :: 14:56
Печать  
berezdetsky писал(а) 19. Июня 2008 :: 10:06:
Файл куба можно сделать и без конструктора - задав секцию TOTALS инструкции SELECT. Синтаксис секции TOTALS, место сохранения куба и многое другое описаны в документации:
Пуск\Все программы\1C Предприятие 7.7\Консоль запросов 1С++


Читал несколько раз. В итоге так и непонял как создать файл куба. Вот запрос который делаю:
рс = СоздатьОбъект("ODBCRecordset");
     ТекстЗапроса = "
     |SELECT $Обороты.Фирма [Фирма $Справочник.Фирмы]
     |, $Обороты.Клиент [Клиент $Справочник.Клиенты]
     |, $Обороты.Склад [Склад $Справочник.Склады]
     |, $Обороты.ТМЦ [ТМЦ $Справочник.ТМЦ]
     |, ($НачалоПериода.День(Обороты.DATE_TIME_IDDOC)) Период
     |, $Обороты.РасходГрн ФактГрн
     |, $Обороты.РасходКво Кво
     |FROM $Регистр.Обороты AS Обороты
     |FULL OUTER JOIN _1SJOURN AS Журнал ON Обороты.IDDOC = Журнал.IDDOC
     |FULL OUTER JOIN $Справочник.Склады AS Склады ON $Обороты.Склад = Склады.ID
     |FULL OUTER JOIN $Справочник.ТМЦ AS ТМЦ ON $Обороты.ТМЦ = ТМЦ.ID
     |FULL OUTER JOIN $Справочник.Фирмы AS Фирмы ON $Обороты.Фирма = Фирмы.ID
     |FULL OUTER JOIN $Справочник.Клиенты AS Клиенты ON $Обороты.Клиент = Клиенты.ID AND Журнал.$ОбщийРеквизит.Фирма = Фирмы.ID
     |FULL OUTER JOIN $Справочник.Сотрудники AS Сотрудники ON $Клиенты.Менеджер = Сотрудники.ID
     |WHERE (Склады.ISFOLDER = 2)
     |AND (Сотрудники.ISFOLDER = 2)
     |AND (ТМЦ.ISFOLDER = 2)
     |AND (Клиенты.ISFOLDER = 2)
     |AND (Журнал.IDDOCDEF = $ВидДокумента.РасходнаяНакладная)
     |AND (Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~)
     |TOTALS Sum(ФактГрн, Кво)
     |BY ALL
     |      , [Фирма $Справочник.Фирмы]
     |      , [ТМЦ $Справочник.ТМЦ]
     |      , [Склад $Справочник.Склады]
     |      , [Клиент $Справочник.Клиенты]
     |      , Период PERIODS
     |";
     рс.УстановитьТекстовыйПараметр("НачДата", НачДата);
     рс.УстановитьТекстовыйПараметр("КонДата", КонДата);

Как дальше создать куб??? Подскажите, если незатруднит.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание OLAP cube 1С77
Ответ #12 - 19. Июня 2008 :: 15:49
Печать  
Nikolaj писал(а) 19. Июня 2008 :: 14:56:
Читал несколько раз. В итоге так и непонял как создать файл куба.

O_o


рс = СоздатьОбъект("ODBCRecordset");
рс = СоздатьОбъект("AddIn.qryConsole");

     |TOTALS Sum(ФактГрн, Кво)
     |TOTALS Sum(ФактГрн), Sum(Кво)

Nikolaj писал(а) 19. Июня 2008 :: 14:56:
Как дальше создать куб???

рс.СоздатьКуб(ТекстЗапроса, ТребуемыйПутьКФайлу);

или

ПутьКФайлу = рс.СоздатьКуб(ТекстЗапроса);
- файл будет создан во временной папке и будет существовать, пока существует объект рс.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Nikolaj
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 11. Июня 2008
Re: Создание OLAP cube 1С77
Ответ #13 - 20. Июня 2008 :: 06:20
Печать  
В глобальнике:
...
Перем Консоль Экспорт;
...
Процедура ПриНачалеРаботыСистемы()      
...
Если ЗагрузитьВнешнююКомпоненту("qryConsole.dll") = 1 Тогда
     Консоль = СоздатьОбъект("AddIn.qryConsole");
Иначе
     Сообщить("qryConsole.dll незагружена.",);
КонецЕсли;




Консоль = СоздатьОбъект("AddIn.qryConsole");
     ТекстЗапроса = "
     |SELECT $Обороты.Фирма [Фирма $Справочник.Фирмы]
     |, $Обороты.Клиент [Клиент $Справочник.Клиенты]
     |, $Обороты.Склад [Склад $Справочник.Склады]
     |, $Обороты.ТМЦ [ТМЦ $Справочник.ТМЦ]
     |, ($НачалоПериода.День(Обороты.DATE_TIME_IDDOC)) Период
     |, $Обороты.РасходГрн ФактГрн
     |, $Обороты.РасходКво Кво
     |FROM $Регистр.Обороты AS Обороты
     |FULL OUTER JOIN _1SJOURN AS Журнал ON Обороты.IDDOC = Журнал.IDDOC
     |FULL OUTER JOIN $Справочник.Склады AS Склады ON $Обороты.Склад = Склады.ID
     |FULL OUTER JOIN $Справочник.ТМЦ AS ТМЦ ON $Обороты.ТМЦ = ТМЦ.ID
     |FULL OUTER JOIN $Справочник.Фирмы AS Фирмы ON $Обороты.Фирма = Фирмы.ID
     |FULL OUTER JOIN $Справочник.Клиенты AS Клиенты ON $Обороты.Клиент = Клиенты.ID AND Журнал.$ОбщийРеквизит.Фирма = Фирмы.ID
     |FULL OUTER JOIN $Справочник.Сотрудники AS Сотрудники ON $Клиенты.Менеджер = Сотрудники.ID
     |WHERE (Склады.ISFOLDER = 2)
     |AND (Сотрудники.ISFOLDER = 2)
     |AND (ТМЦ.ISFOLDER = 2)
     |AND (Клиенты.ISFOLDER = 2)
     |AND (Журнал.IDDOCDEF = $ВидДокумента.РасходнаяНакладная)
     |AND (Журнал.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~)
     |TOTALS Sum(ФактГрн),  Sum(Кво)
     |BY ALL
     |      , [Фирма $Справочник.Фирмы]
     |      , [ТМЦ $Справочник.ТМЦ]
     |      , [Склад $Справочник.Склады]
     |      , [Клиент $Справочник.Клиенты]
     |      , Период PERIODS
     |";
     Консоль.УстановитьТекстовыйПараметр("НачДата", НачДата);
     Консоль.УстановитьТекстовыйПараметр("КонДата", КонДата);
     Консоль.СоздатьКуб(ТекстЗапроса, "D:\test.cub");

На форме задаю НачДата=01.01.2008  КонДата=10.01.2008 , к примеру. Тип реквизита соответственно - дата.
При попытке выполнить вываливает ошибку:
qryConsole : State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'DATE_TIME_IDDOC'.

Где ошибка???
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Создание OLAP cube 1С77
Ответ #14 - 20. Июня 2008 :: 07:19
Печать  
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать