SQL Server - Metrica Calculada de Acumulación SSAS

   
Vista:

Metrica Calculada de Acumulación SSAS

Publicado por Carlos (7 intervenciones) el 03/05/2016 23:16:37
Hola.

Tengo problemas con una métrica calculada de acumulación "Acumulado Tipo Producto", la métrica acumula los costos por la dimensión Tipo Producto y funciona correctamente, el problema esta cuando ordeno el campo Tipo Producto de manera ascendente o descendente por el valor de la métrica "Monto USD Costo Real", el acumulado ya no funciona.

Esta es la sintaxis de mi métrica calculada.

Imagen de comportamiento de la métrica calculada.

foto01

Imagen cuando no funciona por que se ordeno la columna Tpo Producto.

foto02

El calculo de la metrica es el siguiente:

IIF([Tipo Producto].CurrentMember.Level.Ordinal=1,
SUM([Tipo Producto].CurrentMember.Parent.FirstChild:[Tipo Producto].CurrentMember,[Measures].[Monto USD Costo Real]),NULL)

Lo que quiero es que la metrica calculada sume de manera dinamica la columna Monto Costo asi esta se ordene por el tipo de producto.

Su ayuda...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Metrica Calculada de Acumulación SSAS

Publicado por Isaias (3186 intervenciones) el 04/05/2016 04:26:54
Perdon, no alcanzo ver la diferencia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Metrica Calculada de Acumulación SSAS

Publicado por Carlos (7 intervenciones) el 04/05/2016 15:31:16
Hola Isaias.

En el segundo gráfico la columna Tipo Producto esta ordenada en forma descendente por la métrica Monto USD Costo Real y la metrica calculada Acumulado Tipo Producto no hace el recalculo de los acumulados en base a ese orden.


foto02
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Metrica Calculada de Acumulación SSAS

Publicado por Rafael (88 intervenciones) el 04/05/2016 12:42:53
El problema esta que cuando estas ordenando no lo hace el SSAS, lo hace la tabla dinamica de EXCEL, luego esto lo que hace es llevarse el registro completo por eso la columna ACUMULADO TIPO PRODUCTO, que es un dato externo al EXCEL se ordena con el resto del registro no se RECALCULA.

La opcion seria que cuando obtienes el datos calculado este ya estuviera ordenado por TIPO PRODUCTO, o que la columna en cuestion sea calcula en EXCEL.

Saludos.

pd. Si la informacion te sirve a mi me sirve un +1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Metrica Calculada de Acumulación SSAS

Publicado por Carlos (7 intervenciones) el 04/05/2016 15:28:24
Hola Rafael.

Entiendo, pero cuando ordeno o muevo un registro en la vista "Browser" del mismo SSAS sucede lo mismo, no recalcula.


foto03

Esta es la lógica del campo calculado:

IIF([Tipo Producto].CurrentMember.Level.Ordinal=1,
SUM([Tipo Producto].CurrentMember.Parent.FirstChild:[Tipo Producto].CurrentMember,[Measures].[Monto USD Costo Real]),NULL)


Hice pruebas con la siguiente línea "[Tipo Producto].CurrentMember.Parent.FirstChild" y verifique que trae el primer registro sin importar el orden.

Quiero saber si esta es una limitación de la herramienta o existe alguna otra lógica MDX que me puede ayudar, ya tengo varios días investigando y no he llegado a una solución.

Quedo atento a tus comentarios, gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Metrica Calculada de Acumulación SSAS

Publicado por Rafael (88 intervenciones) el 05/05/2016 10:50:49
Hola:

Insisto el problema esta como dices en que el calculo de la columna lo hace PREVIO al ordenamiento...

Luego la solucion siempre pasa por ORDENAR primero y despues calcular.,,,

Si pones el codigo completo del select, puedo sugerirte como resolver ya sea con SCOPE_ISOLATION o mediante el uso de Aggregate() function en lugar del SUM... o puedes buscar estos terminos en google, y ver las opciones para corregir tu query.

Saludos
pd. Si la informacion te sirve a mi me sirve un +1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Metrica Calculada de Acumulación SSAS

Publicado por Carlos (7 intervenciones) el 05/05/2016 17:48:03
Hola.

Aquí el código completo de mi métrica calculada.

CREATE MEMBER CURRENTCUBE.[MEASURES].[Acumulado Tipo Producto]
AS IIF([Tipo Producto].CurrentMember.Level.Ordinal=1,
Sum([Tipo Producto].CurrentMember.Parent.FirstChild:[Tipo Producto].CurrentMember,[Measures].[Monto USD Costo Real]),NULL),
FORMAT_STRING = "#,#.00",
NON_EMPTY_BEHAVIOR = { [Monto USD Costo Real] },
VISIBLE = 1;

Cuando agregue "SCOPE_ISOLATION=CUBE", no lo reconocía y me daba error, espero me puedes guiar sobre lo que puede estar mal en mi calculo.


foto04
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Metrica Calculada de Acumulación SSAS

Publicado por Rafael (88 intervenciones) el 06/05/2016 08:52:22
Has probado con:
1
WITH MEMBER...

Puedes poner tu codigo en forma de codigo.,.. vaya es que una imagen no me permite editarlo...

Y el SELECT???

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Metrica Calculada de Acumulación SSAS

Publicado por Carlos (7 intervenciones) el 10/05/2016 16:37:14
Hola:

El cálculo es:

CREATE MEMBER CURRENTCUBE.[MEASURES].[Acumulado Tipo Producto]
AS IIF([Tipo Producto].CurrentMember.Level.Ordinal=1,
Sum([Tipo Producto].CurrentMember.Parent.FirstChild:[Tipo Producto].CurrentMember,[Measures].[Monto USD Costo Real]),NULL),
FORMAT_STRING = "#,#.00",
SCOPE_ISOLATION=CUBE,
NON_EMPTY_BEHAVIOR = { [Monto USD Costo Real] },
VISIBLE = 1;

No uso un Select de consulta (MDX) sólo la métrica calculada que te describo en el código de arriba.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Metrica Calculada de Acumulación SSAS

Publicado por Rafael (88 intervenciones) el 11/05/2016 08:54:07
Prueba asi :
1
2
3
4
5
6
7
8
CREATE MEMBER CURRENTCUBE.[MEASURES].[Acumulado Tipo Producto]
AS IIF([Tipo Producto].CurrentMember.Level.Ordinal=1,
Sum([Tipo Producto].CurrentMember.Parent.FirstChild:[Tipo Producto].CurrentMember,[Measures].[Monto USD Costo Real]),NULL),
FORMAT_STRING = "#,#.00",
SOLVE_ORDER=10,
SCOPE_ISOLATION=CUBE,
NON_EMPTY_BEHAVIOR = { [Monto USD Costo Real] },
VISIBLE = 1;

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Metrica Calculada de Acumulación SSAS

Publicado por Carlos (7 intervenciones) el 11/05/2016 22:58:39
Hola Rafael.

Probe con el código indicado pero no reconoce la línea SCOPE_ISOLATION=CUBE


foto05

La versión que tengo del Analysis Services es la del 2005 SP2


foto06

Espero puedas ayudarme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Metrica Calculada de Acumulación SSAS

Publicado por Rafael (88 intervenciones) el 12/05/2016 09:17:38
Vale pues en esta version NO puedes definir la metrica calculada con el SCOPE_ISOLATION.

Solo en tu consulta como WITH MEMBER...
https://msdn.microsoft.com/en-us/library/ms144787.aspx

Lo siento pero hasta ahi llego, quizas te convendria actualizar al menos a 2008...

Como sea te digo la solucion es que esta se calcule a posterior para que obtengas el efecto deseado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Metrica Calculada de Acumulación SSAS

Publicado por Carlos (7 intervenciones) el 12/05/2016 17:20:40
Rafael.

Gracias igual por el apoyo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar