De programacion y otros demonios

miércoles, 8 de julio de 2009

SSAS - Como cambiar la propiedad measure group ID


Cree mi grupo de medidas en el cubo de Ventas con el nombre “Ventas”, y después lo cambié por “Basicos”. Luego encontré un artículo interesante de cómo crear un paquete ssis que fuera agregando nuevas particiones a mi cubo a medida que iban llegando nuevos datos a mi tabla de hechos. Las particiones las realizo por trimestres en la dimensión Tiempo, y el paquete ssis lo ejecuto a diario junto con el procesamiento de los cubos, de esta forma me ahorro el trabajo administrativo de tener que estar creando estas particiones ;)


Les dejo el link al artículo del sitio de microsoft (muy bueno) de cómo crear el paquete ssis:


Léame del ejemplo de paquete para sincronizar particiones de Adventure Works DW


Y agrego otro de un sitio web que también es muy bueno:


SSIS: Create Analysis Services partitions from a SSIS package


Mi sentencia SQL al interior del script component que obtiene la lista de particiones es algo como:


SELECT 'DBPruebas' as DataSourceID,
'Ventas' as CubeName,
'Ventas' as CubeID,
'Basicos' as MeasureGroup,
'Basicos' as MeasureGroupID,
'Ventas_' + CONVERT(VARCHAR(10), yearinfo.Trimestre) AS Partition,
'' as SQL,
CONVERT(VARCHAR(10), yearinfo.MinTimeKey) as MinTimeKey,
CONVERT(VARCHAR(10), yearinfo.MaxTimeKey) as MaxTimeKey
FROM (SELECT Trimestre,
(SELECT MIN(IdTiempo) FROM Tiempo t2 WHERE t2.Trimestre = t1.Trimestre) MinTimeKey,
(SELECT MAX(IdTiempo) FROM Tiempo t2 WHERE t2.Trimestre = t1.Trimestre) MaxTimeKey
FROM (SELECT DISTINCT Trimestre FROM Tiempo)
) AS yearinfo
WHERE EXISTS(
SELECT * FROM Ventas
WHERE IdTiempo between yearinfo.MinTimeKey AND yearinfo.MaxTimeKey
)


Como ven el nombre del grupo de medidas y su ID es el mismo “Basicos”, al correr el paquete recibía error:


[Analysis Services Execute DDL Task] Error: Errors in the metadata manager. Either the measure group with the ID of 'Basicos' does not exist in the cube with the ID of 'Ventas', or the user does not have permissions to access the object.


Por permisos no era, revisando las propiedades en mi proyecto AS encontré que el ID y el name del measure group eran diferentes, uno era “Basicos” y el otro “Ventas”; como estaban antes de renombrarlos…..



Para solucionarlo:


Abre tu proyecto AS, en el panel “solution explorer” da clic derecho en el cubo y elige la opción “View Code”. La pagina que se abre es el código xml con la estructura de tu cubo. Antes de hacer estos cambios debes tener un backup de tu proyecto, por si las moscas,… jeje…


Bueno, busca en este archivo el tag <MeasureGroups> allí encontrarás un tag con tu grupo de medidas


<MeasureGroup dwd:design-time-name="32af0376-7539-4d19-83c3-93e504c85bfa">
<ID>VentasID>
<Name>Basicos<Name>

Debes cambiar el ID por el que quieres, en mi caso “Basicos”.

Reemplaza tambien en el tag de <Kpis> , si es que tu cubo tiene:


<Kpis>
<Kpi dwd:design-time-name="61ca593f-f9bd-418d-b8db-80109c38a370">
<ID><KPIID>
<Name>KPI de ventas totales<Name>
<AssociatedMeasureGroupID>BasicosAssociatedMeasureGroupID>

Y listo ¡!! Asunto arreglado…..


Etiquetas:

1 comentarios:

  • Exelente... muchisimas gracias por esta informacion.. ni te imaginas lo mucho que me ayudastes... gracias.....

    Saludos desde Guatemala...

    YanShadowGT

    De Blogger Unknown, A las 17 de diciembre de 2009, 9:45  

Publicar un comentario



<< Inicio