Результаты тестирования PowerPivot в Московском Технологическом центре Microsoft

Коллеги, я хотел бы поделиться результатами проведения сессии по тестированию (PoC – Proof of Concept) PowerPivot для Excel 2010 на 32-битной и 64-битной платформах, которую проводил с 3 по 16 августа 2010 года в Московском Технологическом центре Майкрософт.

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

Целью проведения PoC было выявление объемов данных, с которыми можно работать в PowerPivot на 32-битной и 64-битной платформах.

Тестирование производилось с использованием Hyper-V (Windows Server 2008 Enterprise) на сервере Dell PowerEdge 2950.

Использовались две виртуальные машины с 32-битными и 64-битными Windows 7 Enterprise и Excel 2010.

В качестве тестовой базы использовалось хранилище данных ContosoRetailDW из виртуальной машины R9.2.

Данные загружались из таблицы фактов FactSales (19 столбцов, 10 столбцов типа Int, 3 столбца типа DateTime, 6 столбцов типа Money) и из связанных с этой таблицей справочников.

Для размножения базы была введена дополнительная колонка SetID.

Кол-во наборов (SetID)

Кол-во млн. строк в таблице FactSales

5

17

8

27

10

34

20

68

40

136

42

146

45

153

 

Размножение строк производилось скриптом вида:

insert into dbo.FactSales

(DateKey, channelKey, StoreKey, ProductKey, PromotionKey, CurrencyKey,

UnitCost, UnitPrice, SalesQuantity, ReturnQuantity, ReturnAmount,

DiscountQuantity, DiscountAmount, TotalCost, SalesAmount,

ETLLoadID, LoadDate, UpdateDate, SetId)

select

DateKey, channelKey, StoreKey, ProductKey, PromotionKey, CurrencyKey,

UnitCost, UnitPrice, SalesQuantity, ReturnQuantity, ReturnAmount,

DiscountQuantity, DiscountAmount, TotalCost, SalesAmount,

ETLLoadID, LoadDate, UpdateDate, SetId+20 from dbo.FactSales

Сводные таблицы результатов тестирования для базы Contoso DW

Сводная таблица результатов тестирования 32-битной платформы

Кол-во строк в таблице фактов, Млн. строк

ОЗУ, Гбайт

Результат

Размер Excel в ОЗУ, Кбайт

Размер файла на диске, Кбайт

17

2

Успешно

686 172

423 955

27

8

Ошибка выделения памяти

-

-

 

Сводная таблица результатов тестирования 64-битной платформы

Кол-во строк в таблице фактов, Млн. строк

ОЗУ, Гбайт

Результат

Размер Excel в ОЗУ, Кбайт

Размер файла на диске, Кбайт

34

2

Успешно

1 230 340

841 020

68

2

Не хватило ОЗУ на этапе подготовки данных

-

-

68

4

Успешно

2 375 180

961 401

136

4

Не хватило ОЗУ на этапе подготовки данных

-

-

136

8

Успешно

4 635 188

3 404 280

146

8

Успешно

4 821 564

3 636 556

153

30

Ошибка выделения памяти

-

-

Выводы

На основании проведенных тестов видно, что для объемов данных в таблице фактов более17 миллионов строк (ориентировочно) необходимо использовать 64-битную версию PowerPivot для Excel 2010.

Для базы данных Contoso DW на 64-битной платформе удалось загрузить 146 миллионов строк.

Comments

  • Anonymous
    August 18, 2010
    Здравствуйте, Иван. Означает ли это, что возможности насчет обработки огромного количества данных были несколько преувеличены? У меня 32-разрядная машина, переход на 64-битную все-таки стоит денег... К тому же, сильно разочаровали ошибки: установил PowerPivot только позавчера, и уже он начинает показывать ошибку: "Ошибки поставщика OLE DB. При загрузке компонента диалогового окна соединения для запроса произошла ошибка". В результате окно не загружается. Пока успел поработать только 1 раз, после этого он сломался :( С чем связана такая ошибка, как ее устранить? И где можно найти какие-нибудь уроки по PowerPivot с объяснением проекта от начала до конца? Где в основном появляются преимущества в скорости - при создании сводной таблицы?

  • Anonymous
    August 18, 2010
    Да, вот подробности ошибки: Не удалось загрузить подсистему VertiPaq ============================ Error Message: ============================ Exception from HRESULT: 0x800A03EC ============================ Call Stack: ============================ Server stack trace:   at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)   at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)   at Microsoft.AnalysisServices.Modeler.FieldList.GeminiProxy.MethodInvokeCallBack(String memberName, String dispID, BindingFlags flags, Object[] args, Boolean ignoreRetry)   at Microsoft.AnalysisServices.Modeler.FieldList.GeminiProxy.HandleMethodInvoke(IMethodCallMessage callMessage) Exception rethrown at [0]:   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)   at Microsoft.Office.Interop.Excel.OLEDBConnection.Reconnect()   at Microsoft.AnalysisServices.Modeler.FieldList.InProcServer.LoadOLEDBConnection(Boolean raiseCompleteEvent) ============================

  • Anonymous
    August 18, 2010
    Константин, ограничения 32-битного PowerPivot обусловлены ограничениями памяти в самой платформе. Найти задачу на количество строк фактов более 10-20 млн. строк -- тоже большой фокус. Возможно большие объемы Вам и не понадобятся. А вообще, нужно постепенно переходить на 64-бит. В части обучения попробуйте начать со статьи microsoftbi.ru/.../powerpivot и далее пройти по ссылкам. По ошибке в первую очередь рекомендую посмотреть форум social.msdn.microsoft.com/.../threads

  • Anonymous
    August 19, 2010
    Спасибо. Похоже, ошибка из-за того, что версия Офиса пока триальная. Также интересует вопрос - есть ли возможность в сводной таблице для ячеек с агрегированными значениями получать все ячейки, на основании которых вычислено данное значение, с учетом всех фильтров и дополнительных параметров (типа применения %, срезов и т.п.)? То есть, интересует возможность видеть все конкретные слагаемые, входящие в правую часть вычисляемого агрегированного выражения и дающие вклад в сумму (или другой способ агрегирования). Свойство PivotCell.MDX кое-что дает для этого, но при применении фильтров оно не изменяется.