Hasta ahora el conjunto incremental de datos venía dado por nuestro data source view, pero esto no siempre es cierto, hay ocasiones en los que si bien los datos de las dimensiones se generan de forma incremental, las tablas de hechos utilizan datos anteriores al periodo de procesamiento y necesitan que la consulta del data source view devuelva toda la información de la dimensión para realizar un procesamiento correcto de nuestros grupos de medida.

En esos casos, la solución pasa por generar un esquema específico que asociaremos a nuestra dimensión en el script de procesamiento incremental. Dicho esquema contendrá la consulta que si va a proporcionarnos el conjunto de datos a añadir en nuestro procesamiento.

El primer paso es generar el script del data source con la información de conexión a nuestra fuente de datos. Desde el SQL Server Managemet Studio botón derecho sobre nuestra fuente de datos y generamos el script correspondiente.

Procesamiento Incremental de Dimensiones IV

En este script eliminamos lo tags referentes a ImpersonationInfo y copiamos el resto de la definición del dataSource debajo del comando ProcessAdd. En este punto el script XML tendrá un aspecto parecido a este:

<Batch xmlns=http://schemas.microsoft.com/analysisservices/2003/engine>

<Parallel>

<Process xmlns:xsd=http://www.w3.org/2001/XMLSchemaxmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexmlns:ddl2=http://schemas.microsoft.com/analysisservices/2003/engine/2xmlns:ddl2_2=http://schemas.microsoft.com/analysisservices/2003/engine/2/2>

<Object>

<DatabaseID>ProcesoIncremental</DatabaseID>

<DimensionID>Hora</DimensionID>

</Object>

<Type>ProcessAdd</Type>

 

<DataSource xmlns:xsd=http://www.w3.org/2001/XMLSchemaxmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexmlns:ddl2=http://schemas.microsoft.com/analysisservices/2003/engine/2xmlns:ddl2_2=http://schemas.microsoft.com/analysisservices/2003/engine/2/2xsi:type=RelationalDataSource>

<ID>ProcesoIncremental</ID>

<Name>ProcesoIncremental</Name>

<ConnectionString>Provider=SQLNCLI.1;Data Source=.;Integrated Security=SSPI;Initial Catalog=Varios</ConnectionString>

<Timeout>PT0S</Timeout>

</DataSource>

 

 

</Process>

</Parallel>

</Batch>

 

A través de BIDS (Visual Studio) generamos un Data Source View que contenga únicamente la consulta que va a devolver nuestro conjunto incremental de datos y le llamamos igual que el Data Source View al que tenemos originalmente asociada la dimensión.

En el explorador de soluciones pulsamos botón derecho sobre el Data Source View y seleccionamos ‘view code’. Copiamos el código XML dentro de nuestro script XMLA debajo de la definición del Data Source y ya tendremos nuestro script listo. Si queremos que el script sea algo más corto, se puede eliminar la sección Annotations dentro de la definición del Data Source View.

<Batch xmlns=http://schemas.microsoft.com/analysisservices/2003/engine>

<Parallel>

<Process xmlns:xsd=http://www.w3.org/2001/XMLSchemaxmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexmlns:ddl2=http://schemas.microsoft.com/analysisservices/2003/engine/2xmlns:ddl2_2=http://schemas.microsoft.com/analysisservices/2003/engine/2/2>

<Object>

<DatabaseID>ProcesoIncremental</DatabaseID>

<DimensionID>Hora</DimensionID>

</Object>

<Type>ProcessAdd</Type>

 

<DataSource xmlns:xsd=http://www.w3.org/2001/XMLSchemaxmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexmlns:ddl2=http://schemas.microsoft.com/analysisservices/2003/engine/2xmlns:ddl2_2=http://schemas.microsoft.com/analysisservices/2003/engine/2/2xsi:type=RelationalDataSource>

<ID>ProcesoIncremental</ID>

<Name>ProcesoIncremental</Name>

<ConnectionString>Provider=SQLNCLI.1;Data Source=.;Integrated Security=SSPI;Initial Catalog=Varios</ConnectionString>

<Timeout>PT0S</Timeout>

</DataSource>

 

 

<DataSourceView xmlns:xsd=http://www.w3.org/2001/XMLSchemaxmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexmlns:ddl2=http://schemas.microsoft.com/analysisservices/2003/engine/2xmlns:ddl2_2=http://schemas.microsoft.com/analysisservices/2003/engine/2/2>

<ID>Varios</ID>

<Name>Varios</Name>

<DataSourceID>ProcesoIncremental</DataSourceID>

<Schema>

<xs:schema id=Variosxmlns=“” xmlns:xs=http://www.w3.org/2001/XMLSchemaxmlns:msdata=urn:schemas-microsoft-com:xml-msdataxmlns:msprop=urn:schemas-microsoft-com:xml-msprop>

<xs:element name=Variosmsdata:IsDataSet=truemsdata:UseCurrentLocale=true>

<xs:complexType>

<xs:choice minOccurs=0maxOccurs=unbounded>

<xs:element name=dbo_Horamsprop:FriendlyName=Horamsprop:QueryBuilder=SpecificQueryBuildermsprop:DbTableName=Horamsprop:QueryDefinition=SELECT Hora.Idhora, Hora.DescripcionHora, Hora.NombreHora24, Hora.Hora, Hora.NombreHora, Hora.Minuto, Hora.IdMinuto, Hora.NombreMinuto, Hora.Hora24, Hora.AM FROM Hora INNER JOIN RangoIncremental ON Hora.Idhora &gt;= RangoIncremental.Idfrom AND Hora.Idhora &lt;= RangoIncremental.Idtomsprop:TableType=Viewmsprop:IsLogical=True>

<xs:complexType>

<xs:sequence>

<xs:element name=Idhoramsprop:FriendlyName=Idhoramsprop:DbColumnName=Idhoratype=xs:int />

<xs:element name=DescripcionHoramsprop:FriendlyName=DescripcionHoramsprop:DbColumnName=DescripcionHoraminOccurs=0>

<xs:simpleType>

<xs:restriction base=xs:string>

<xs:maxLength value=50 />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name=NombreHora24msprop:FriendlyName=NombreHora24msprop:DbColumnName=NombreHora24minOccurs=0>

<xs:simpleType>

<xs:restriction base=xs:string>

<xs:maxLength value=50 />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name=Horamsprop:FriendlyName=Horamsprop:DbColumnName=Horatype=xs:unsignedByteminOccurs=0 />

<xs:element name=NombreHoramsprop:FriendlyName=NombreHoramsprop:DbColumnName=NombreHoraminOccurs=0>

<xs:simpleType>

<xs:restriction base=xs:string>

<xs:maxLength value=10 />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name=Minutomsprop:FriendlyName=Minutomsprop:DbColumnName=Minutotype=xs:unsignedByteminOccurs=0 />

<xs:element name=IdMinutomsprop:FriendlyName=IdMinutomsprop:DbColumnName=IdMinutotype=xs:intminOccurs=0 />

<xs:element name=NombreMinutomsprop:FriendlyName=NombreMinutomsprop:DbColumnName=NombreMinutominOccurs=0>

<xs:simpleType>

<xs:restriction base=xs:string>

<xs:maxLength value=20 />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name=Hora24msprop:FriendlyName=Hora24msprop:DbColumnName=Hora24type=xs:unsignedByteminOccurs=0 />

<xs:element name=AMmsprop:FriendlyName=AMmsprop:DbColumnName=AMminOccurs=0>

<xs:simpleType>

<xs:restriction base=xs:string>

<xs:maxLength value=2 />

</xs:restriction>

</xs:simpleType>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name=dbo_RangoIncrementalmsprop:FriendlyName=RangoIncrementalmsprop:DbSchemaName=dbomsprop:DbTableName=RangoIncrementalmsprop:TableType=Table>

<xs:complexType>

<xs:sequence>

<xs:element name=Idfrommsprop:FriendlyName=Idfrommsprop:DbColumnName=Idfromtype=xs:intminOccurs=0 />

<xs:element name=Idtomsprop:FriendlyName=Idtomsprop:DbColumnName=Idtotype=xs:intminOccurs=0 />

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:choice>

</xs:complexType>

<xs:unique name=Constraint1msprop:IsLogical=Truemsdata:PrimaryKey=true>

<xs:selector xpath=.//dbo_Hora />

<xs:field xpath=Idhora />

</xs:unique>

</xs:element>

</xs:schema>

<diffgr:diffgram xmlns:msdata=urn:schemas-microsoft-com:xml-msdataxmlns:diffgr=urn:schemas-microsoft-com:xml-diffgram-v1 />

</Schema>

</DataSourceView>

 

</Process>

</Parallel>

</Batch>

 

Otra alternativa es editar el Data Source View antes del proceso incremental de la dimensión y modificar la consulta de forma adecuada, asegurándonos que la consulta original se vuelve a restaurar antes del procesamiento de los grupos de medida para que estos puedan utilizar el contenido completo de la dimensión y no solo la parte incremental.

 

0 Shares:
1 comment
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like

Despliegue de Proyectos en Integration Services 2012

En entradas anteriores hemos revisado las características que ofrece el nuevo modelo de servidor de Integration Services, que se basa en Proyectos y Entornos en lugar de Paquetes y Configuraciones.En SQL Server 2012 se mantendrá la compatibilidad con el modelo de despliegue anterior, basado en paquetes, con la denominación Package Deployment Model. Los procedimientos para realizar despliegues en este modo no han variado desde versiones anteriores por lo que nos centraremos en el modelo de despliegue de proyectos Project Deployment Model.
Leer más

ScaleOut SSIS

Lo primero es saber que debemos esperar de ScaleOut, cuando se habla de Scale Out estamos hablando de la capacidad de un sistema o proceso para manejar una cantidad creciente de trabajo, y el potencial que tiene, es su capacidad de adaptarse para asumir el crecimiento del sistema o proceso.
Active Directory Evolution RRSS
Leer más

Active Directory Evolution

¿Tú tampoco sabes lo que es Active Directory y cómo puede ayudar al desarrollo de tu entorno colaborativo? Nuestro compañero Miguel Salinas te explica lo que es Active Directory, cómo ha evolucionado a lo largo de los años y cómo sacarle partido a este servicio.
Leer más

Arquitecturas lambda en Azure

Las necesidades de análisis en los diferentes escenarios de negocio se vuelven cada vez más complejas. Dato histórico, dato en tiempo real, dato desde diferentes fuentes, dato predictivo, todo a la vez y en el mismo punto centralizado. ¿Nos hemos vuelto locos? ¿Es imposible? ¿No seremos capaces? Nada de eso, con Azure y una buena planificación conseguiremos una arquitectura con la última tecnología y que, sobre todo, cubre nuestras necesidades de análisis por complejas que sean