2009-11-12 2 views
0

Я стараюсь соответствовать существующим функциям отчетности при создании нового куба для доказательства концепции.MDX retrieve recordset

Могу ли я получить данные из своего куба с помощью запроса MDX и поместить его в набор записей, чтобы затем заполнить лист Excel данными?

ответ

1

Рассматривали ли вы подключение непосредственно из Excel к службам Analysis Services и использование встроенных функций запроса перетаскивания? Excel будет генерировать MDX для вас.

Я никогда не делал этого, но это должно быть возможно интегрировать ADOMD.NET в приложение VSTO, которое затем будет запускаться внутри Excel. Вы могли бы также быть в состоянии получить доступ к некоторым из MDX запросов машин Excel непосредственно этак ....

+0

Ну, набор записей ADoMD поставляется в формате Cubed recordset. Как ни странно, у меня на самом деле есть сценарий, когда мне нужно делать плоские файлы из EXCEL. –

+1

Вы также можете сказать, что ответ на все запросы MDX представляет собой «кубический набор записей». Это простой процесс преобразования CellSet (эквивалент ADOMD DataSet) в двумерный объект. В случае, если это помогает, я приведу подробный пример в моей книге (Ultra-Fast ASP.NET). – RickNZ

1

Лучший способ для работы с OLAP и Excel подробно здесь: Simpler interface for SQL Server analysis services cubes for end users

Если вы хотите, чтобы написать свой собственный MDX вместо используя drag-drop, вы не можете сделать это с помощью Excel, насколько я знаю. Тем не менее, большинство языков позволит вам отключить некоторые MDX на кубе, а затем вы можете зацикливать набор записей самостоятельно, чтобы создать файл CSV.

Или еще проще, использовать анализатор запросов в SQL Server, как это, и сохранить результаты в CSV:

SELECT TOP 100 * FROM OPENROWSET('MSOLAP', 
'Datasource=MyHotServer;Initial catalog=MyLovelyCube', 
'SELECT {dimensions(0).members} ON ROWS, {time.defaultmember} ON COLUMNS FROM sales') 

(NB Если вы не знаете, MDX еще .... не начать если вам действительно не нужно! Это не так просто, как SQL, и вы можете уйти без него обычно.)