Имя: Пароль:
1C
 
OLAP: догрузка данных в куб
Ø
0 Noro
 
06.07.06
14:19
Кусок кода, создающий OLAP-куб (из распространенного примера):
С = РазделительСтрок;
// Провайдер, куда кладем куб, где берем исходные данные
Prov = "PROVIDER = MSOLAP;";
DS = "DATA SOURCE = "+ФайлКуба+";";
SourceDSN = "SOURCE_DSN=""Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+ФайлБазы+""";";
// Структура куба
CreateCube =
  "CREATECUBE = CREATE CUBE [Анализ] ("
  ...
  "MEASURE [Возврат] FUNCTION SUM );";
// Какими данными заполняем куб
InsertInto =
  "INSERTINTO = INSERT INTO Анализ ("
  "[Возврат]) OPTIONS ATTEMPT_ANALYSIS ";
// SQL запрос
Sel =
  "SELECT Unloading.Возврат "
  "FROM Unloading;";
InsertInto = InsertInto +С+ Sel;
// Собственно, создаем куб
ADO = СоздатьОбъект("ADODB.Connection");
s = Prov +С+ DS +С+ SourceDSN +С+ CreateCube +С+ InsertInto;
ADO.Open(s);
Внимание, вопрос: как _догрузить_ данные в уже существующий куб?
1 mclarry
 
06.07.06
15:20
Оч просто: добавлением записей в Unloading
2 Noro
 
06.07.06
15:34
(1) Да если бы... Данные из Access выгружаются в сам куб.
3 mclarry
 
06.07.06
15:42
БД Access - это источник данных для куба. Если структура куба остается неизменной, а данные надо пополнить - значит надо добавить записи в Access. Или сформулируй задачу.
4 Noro
 
06.07.06
16:02
(3) В результате выше приведенного кода образуется самодостаточный файл куба с расширением .cub
Задача: поместить в этот самодостаточный куб новые данные из нового файла Access в дополнение к уже имеющимся в кубе.
Тогда как?
5 mclarry
 
06.07.06
16:19
Для начала сходить на olap.ru :)
Данные хранятся не в самом кубе, а в источнике данных. В данном примере это Access, но может быть что угодно: sql, txt и проч. Т.е. файл .cub трогать не надо, достаточно перезаписать данные в Unloading.mdf
6 Mikeware
 
06.07.06
17:31
(5) Не буду претендовать на всеобщность, но в данном конкретном случае абсолютно точно все данные хранятся в файле куба (*.cub). Так что ты ошибаешься.
7 mclarry
 
06.07.06
17:45
(6)Возможно
Я код (0) давно модифицировал под access и sql, может в исходном состоянии он действительно все хранил в cub. Хотя странно это как-то...
9 Noro
 
07.07.06
08:42
Up?
10 mclarry
 
07.07.06
10:26
(8)Ушло
11 Noro
 
07.07.06
10:33
(10) Нету пока... Да и сервис глючит. Можно продублировать на medvedik-s@mail.ru?
Заранее спасибо!!!
12 Noro
 
07.07.06
10:47
(10) Получил, изучаю. СПАСИБО!!!
13 fisher
 
07.07.06
10:55
2(7) Почему странно? Наоборот, иначе никак (кроме нулевого уровня агрегации данных в real-time OLAP, но это отдельная тема). Куб содержит агрегатные данные. После изменения данных источника их по-любому нужно пересчитывать. Только можно это делать не полным пересчетом, а инкрементным. Об этом и разговор.
14 Noro
 
07.07.06
13:53
(13) Как это сделать? (инкремент данных в куб без использования внешнего хранилища)
15 fisher
 
07.07.06
18:21
2(14) Что значит без использования внешнего хранилища? Без него никак.
Просто я не помню подробностей технологии, давно разбирался.
MS Analysis Services точно такую возможность предоставляет. Насчет локальных кубов - не уверен...
16 Noro
 
10.07.06
14:24
(15) "без внешнего хранилища" - я некорректно выразился. Хотелось бы так:
1. Выгрузка данных за _новый_ период в Access.
2. Инкремент данных из Access в локальный куб.
|
Ибо сейчас приходится каждую ночь заново формировать куб за год, вместо того, чтобы вечером догрузить данные за прошедший день.
17 Mikeware
 
10.07.06
15:06
2(16) Точно такая же фигня.... Дописываю в аксесс, и формирую куб. Найдешь решение - поделись, плз.... ася 322 952 475
18 mclarry
 
10.07.06
16:18
(16)Хм... я пользуюсь OWC, да хоть в том же Excel, есть кнопка "Обновить данные", чем она плоха?
19 fisher
 
10.07.06
16:58
2(18) Дык это наверное полный процессинг куба (на больших объемах данных долго будет)?
2(16,17) А переход на серверные кубы (MS Analysis Services) не рассматривается?
20 Mikeware
 
10.07.06
17:31
2(19) Да за ради Бога! только не нашел я ничего подобного в описании MS Analisys
21 fisher
 
10.07.06
18:25
2(20) При обновлении куба в MS AS можно выбрать метод Incremental update. Но чтобы это заработало "как надо" нужно "подготовить почву".
Подробного описания "от и до" в документации и не найдешь, т.к. это целая технология и конкретные реализации могут отличаться. Но есть хорошие статьи, тематические форумы наконец. Поиск рулит.
Вот навскидку:
http://www.olap.ru/desc/microsoft/OLAPcu.asp
22 fisher
 
10.07.06
18:34
+(21) Да и полный процессинг немаленьких кубов на MS AS осуществляется относительно быстро.
23 Mikeware
 
10.07.06
20:03
(21) Огромное тебе человеческое спасибо :-) Завтра буду экспериментить....
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший