28 agosto 2009

Moviendo datos de Analysis Services hacia SQL Server con Integration Services

Si alguna vez necesitan leer datos desde un cubo para depositarlos en una base de datos relacional o para incluirlos en un reporte que sólo acepta consultas hacia SQL y no hacia Analysis Services, esto les puede servir. A continuación muestro cómo leer las ventas por Categoría de Producto de mi base de datos Adventure Works 2008, hacia una tabla relacional en SQL usando Integration Services.

Los pasos son:

1. Habilitar el uso de las consultas distribuidas en SQL Server a través del comando OPENROWSET :

sp_configure 'show advanced options', 1
RECONFIGURE
GO
sp_configure
'Ad Hoc Distributed Queries', 1
RECONFIGURE
GO


2. Crear su consulta MDX e incluirla en una consulta relacional desde su SQL Server:




SELECT a.* FROM OpenRowset('MSOLAP','DATA SOURCE=.\SQL2K8;
Initial Catalog=Adventure Works DW 2008;
',
'SELECT NON EMPTY {[Date].[Calendar].[All Periods]}
ON COLUMNS,
NON EMPTY Product.[Category].MEMBERS
ON ROWS
FROM [Adventure Works]
') as a


3. Incluir la consulta en su paquete de Integration Services usando un OLEDB Source Component tal como lo harían con una consulta hacia SQL Server relaciona:



image



4. Incluir sus transformaciones necesarias y el destino final. En mi caso, para el ejemplo sólo lo escribo en una tabla en mi base de datos de SQL Server. El Data Flow de mi paquete en ejecución se ve así:



image



Listo!



Alan

1 comentario:

Unknown dijo...

Super!!!!

Esto me será muy util.