Результаты тестирования 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/.../threadsAnonymous
August 19, 2010
Спасибо. Похоже, ошибка из-за того, что версия Офиса пока триальная. Также интересует вопрос - есть ли возможность в сводной таблице для ячеек с агрегированными значениями получать все ячейки, на основании которых вычислено данное значение, с учетом всех фильтров и дополнительных параметров (типа применения %, срезов и т.п.)? То есть, интересует возможность видеть все конкретные слагаемые, входящие в правую часть вычисляемого агрегированного выражения и дающие вклад в сумму (или другой способ агрегирования). Свойство PivotCell.MDX кое-что дает для этого, но при применении фильтров оно не изменяется.