none
consultar el primer dato RRS feed

  • Pregunta

  • Buenos días 

    Dentro de mi cubo tengo una dimensión fecha y una tabla de hechos de presupuesto, el presupuesto es asignado para todo el mes por lo tanto la fecha esta dada para el primer día del mes, sin embargo es necesario realizar cálculos para cada diez días, en la dimensión  fecha cree la jerarquía década (Año, mes, década), pero como el presupuesto se asigna por mes, cuando hago la consulta la década 1 tiene todo el presupuesto, la década 2 y 3 no tienen nada, como hago para poder hacer el calculo de la década dos es decir seria el presupuesto del mes divido 3 y luego multiplicado por dos y así la asignación de cada decada

    Muchas gracias por su ayuda


    JAZ

    jueves, 10 de abril de 2014 17:59

Respuestas

  • Un scope no se puede anidar dentro de una medida calculada, es una instrucción independiente para sobreescribir el valor de una medida. He hecho algunas correcciones en tu codigo y creo que lo que deberías escribir en el script del cubo es esto:

     

    FREEZE([Dim Date].[FISCAL YEAR-MONTH D].[MONTH].members , [Measures].[BUDGET AMOUNT]);

    SCOPE([Dim Date].[FISCAL YEAR-MONTH D].[DECADE OF MONTH].members , [Measures].[BUDGET AMOUNT]); THIS= SUM([Dim Date].[FISCAL YEAR-MONTH D].[DECADE OF MONTH].currentmember.parent,[Measures].[BUDGET AMOUNT])/3; END SCOPE;



    Víctor M. García Sánchez. Hope this help. Please vote if you find this posting was helpful. if this is an answer to your question, please mark it. http://bifase.blogspot.com | http://twitter.com/atharky

    miércoles, 16 de abril de 2014 15:19
  • Cierto.. la asignación del miembro debe quedar como sigue

     THIS= SUM([Dim Date].[FISCAL YEAR-MONTH D].currentmember.parent,[Measures].[BUDGET AMOUNT])/3;


    Víctor M. García Sánchez. Hope this help. Please vote if you find this posting was helpful. if this is an answer to your question, please mark it. http://bifase.blogspot.com | http://twitter.com/atharky

    • Marcado como respuesta JAZ17 martes, 22 de abril de 2014 17:52
    martes, 22 de abril de 2014 16:10

Todas las respuestas

  • Hola @JAZ,

    Tendrás que sobre escribir el valor de cada decena con el valor del mes dividido entre 3 (esto suponiendo que los meses sean comerciales, si no tendrás fracciones de decenas)

    Algo así (a mano alzada):

    scope([Fecha].[Calendario].[Decena].members
    	, [Measures].[Presupuesto]);
    	this=sum([Fecha].[Calendario].[Decena].currentmember.parent,[Measures].[Presupuesto])/3;
    end scope;



    Víctor M. García Sánchez. Hope this help. Please vote if you find this posting was helpful. if this is an answer to your question, please mark it. http://bifase.blogspot.com | http://twitter.com/atharky


    • Editado Víctor M lunes, 14 de abril de 2014 15:49
    lunes, 14 de abril de 2014 15:49
  • Hola Victor,

    muchas gracias por tu respuesta, pero como soy nueva en esto tengo una duda, este calculo lo estoy haciendo en un miembro calculado ,

    CREATE MEMBER CURRENTCUBE.[Measures].[CED_BUDGET_AMOUNT]
     AS 
     SCOPE([Dim Date].[FISCAL YEAR-MONTH D].[DECADE OF MONTH].members, [Measures].[BUDGET AMOUNT])
     THIS= SUM([Dim Date].[FISCAL YEAR-MONTH D].[DECADE OF MONTH].currentmember.parent,([Measures].[BUDGET AMOUNT]/3));
     END SCOPE;, 
     

    pero me dice que The syntax for Scope is incorrect, segun lo que he leido no esposible utilizar el scope en el miembro calculado, como puedo escribir esto de otra manera?

    Gracias 

    


    JAZ

    miércoles, 16 de abril de 2014 14:25
  • Un scope no se puede anidar dentro de una medida calculada, es una instrucción independiente para sobreescribir el valor de una medida. He hecho algunas correcciones en tu codigo y creo que lo que deberías escribir en el script del cubo es esto:

     

    FREEZE([Dim Date].[FISCAL YEAR-MONTH D].[MONTH].members , [Measures].[BUDGET AMOUNT]);

    SCOPE([Dim Date].[FISCAL YEAR-MONTH D].[DECADE OF MONTH].members , [Measures].[BUDGET AMOUNT]); THIS= SUM([Dim Date].[FISCAL YEAR-MONTH D].[DECADE OF MONTH].currentmember.parent,[Measures].[BUDGET AMOUNT])/3; END SCOPE;



    Víctor M. García Sánchez. Hope this help. Please vote if you find this posting was helpful. if this is an answer to your question, please mark it. http://bifase.blogspot.com | http://twitter.com/atharky

    miércoles, 16 de abril de 2014 15:19
  • Hola,

    no me funciona, dice The syntax for FREEZE is incorrect

    CREATE MEMBER CURRENTCUBE.[Measures].[CED_BUDGET_AMOUNT]
     AS FREEZE([Dim Date].[FISCAL YEAR-MONTH D].[FISCAL MONTH NAME].members
    , [Measures].[BUDGET AMOUNT]);
    SCOPE([Dim Date].[FISCAL YEAR-MONTH D].[DECADE OF MONTH].members
    , [Measures].[BUDGET AMOUNT]);
     THIS= SUM([Dim Date].[FISCAL YEAR-MONTH D].[DECADE OF MONTH].currentmember.parent,[Measures].[BUDGET AMOUNT])/3;
    END SCOPE;, 
    FORMAT_STRING = "Currency", 
    VISIBLE = 1 ,  DISPLAY_FOLDER = 'VALORES'  ;    

    JAZ

    miércoles, 16 de abril de 2014 15:56
  • Es porque estas creando una medida calculada tienes que poner solo el código que te puse arriba, sin el CREATE MEMBER CURRENTCUBE....

    Víctor M. García Sánchez. Hope this help. Please vote if you find this posting was helpful. if this is an answer to your question, please mark it. http://bifase.blogspot.com | http://twitter.com/atharky

    miércoles, 16 de abril de 2014 16:21
  • Hola Victor,

    finalmente lo que necesito es crear la medida calculada, debido a que este dato lo voy a usar varias veces en un reporte que debo crear en SSRS o existe otra forma de hacerlo?

    Saludos


    JAZ

    lunes, 21 de abril de 2014 14:38
  • Hola @Jaz

    No hace falta que añadas una medida calculada. 

    Solo te hace falta hacer el scope, que va a sobre escribir el valor de la medida [Measures].[BUDGET AMOUNT] para los miembros del nivel decena de tu jerarquía de tiempo. Cuando hagas las consultas solo tienes que traerte la medida y la jerarquía.

    Me da la sensación de que no sabes que es un scope y por tanto estas teniendo problemas para añadirlo al script MDX de tu cubo. Si es así dilo y te indicamos como se hace http://technet.microsoft.com/en-us/library/ms145515.aspx


    Víctor M. García Sánchez. Hope this help. Please vote if you find this posting was helpful. if this is an answer to your question, please mark it. http://bifase.blogspot.com | http://twitter.com/atharky

    lunes, 21 de abril de 2014 14:53
  • Hola Victor,

    Tienes razón, no entiendo como funciona el scope y que es lo que en realidad hace

    Saludos

    JAZ

    martes, 22 de abril de 2014 13:47
  • Hola Victor, 

    Finalmente y después de mucho leer ya entiendo el scope sin embargo no me funciona, si dejo la funcion tal cual me dice ... The CURRENTMEMBER function expects a hierarchy expression for the 1 argument.

    lo cambie dejando 

    THIS= SUM([Dim Date].[FISCAL YEAR-MONTH D].currentmember,[Measures].[BUDGET AMOUNT]/3, 

    pero solamente me hace la asignacion del presupuesto para la primera decada faltan las otras dos 

    Saludos


    JAZ

    martes, 22 de abril de 2014 15:55
  • Cierto.. la asignación del miembro debe quedar como sigue

     THIS= SUM([Dim Date].[FISCAL YEAR-MONTH D].currentmember.parent,[Measures].[BUDGET AMOUNT])/3;


    Víctor M. García Sánchez. Hope this help. Please vote if you find this posting was helpful. if this is an answer to your question, please mark it. http://bifase.blogspot.com | http://twitter.com/atharky

    • Marcado como respuesta JAZ17 martes, 22 de abril de 2014 17:52
    martes, 22 de abril de 2014 16:10