none
Como hacer un miembro calculado usando IIF? RRS feed

  • Pregunta

  • Hola, 

     

    vereis, esto es algo que me trae de cabeza hace muuuucho tiempo:

     

    hacer calculos en un cubo simples como pueden ser beneficios o porcentajes, no me da problema alguno (ejemplo: facturado-costes, Alta+baja/[Puestos Generados]*100....) Pero yo lo que quiero, es hacer algo asi:

    iif([Es Formacion]=1,count([Recurso Movimiento].[Es Formacion].members)," ")

     

     

    es decir, querria filtrar aquellos movimientos donde la medida "es formacion" valga 1 y que me los cuente. He probado de todas las maneras pero no consigo nada.

     

    No se si alguien me puede indicar como hacer filtros, para evitar, tener que andar metiendo un monton de vistas.

     

     

    Por ejemplo imaginate que quieres sacar los movimientos de tipo venta y los de tipo compra por separado, hacer una suma de sus importes, como lo harias?

     

     


    lunes, 2 de mayo de 2011 14:44

Respuestas

Todas las respuestas

  • count(  ([Es Formacion].[Es formacion].&[1]))

    prueba y nos cuentas.


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    lunes, 2 de mayo de 2011 21:52
    Moderador

  • count(  ([Es Formacion].[Es formacion].&[1]))

    prueba y nos cuentas.


    Comparte lo que sepas, aprende lo que no sepas (FGG)

    Asi como dices no puede ser porque eso me haria un conunt de los que son formacion. pero yo lo que quiero, imaginate, es que si es furmacion me sume esas horas de formacion.

     

    Yo lo que querria, es que me sume aquellos registros de tipo formacion:

    (ya se que lo siguiente esta mal)

    iif([Es Formacion]=1,sum([Recurso Movimiento].[importe])," ")

     

    Para que sirve el &[1]? porque has puesto [es formacion] 2 veces?

     

    Edit:

    lo de $[1] Leyendo el libro que me han recomendando en otro foro ya lo entiendo mas o menos. 

     

     


    martes, 3 de mayo de 2011 7:28
  • Lo pongo dos veces porque hay que nombrar la dimension y la jerarquia (o atributo), que supongo será la misma. Si lo que quieres es sumar

    la tupla es

    Sum ( [es formacion].[es formacion].&[1],Measures.importe), no se que quieres decir con REcurso movimiento ¿es el nombre del measure group?

     

    Saludos


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    martes, 3 de mayo de 2011 10:36
    Moderador
  • Lo pongo dos veces porque hay que nombrar la dimension y la jerarquia (o atributo), que supongo será la misma. Si lo que quieres es sumar

    la tupla es

    Sum ( [es formacion].[es formacion].&[1],Measures.importe), no se que quieres decir con REcurso movimiento ¿es el nombre del measure group?

     

    Saludos


    Comparte lo que sepas, aprende lo que no sepas (FGG)

    Sera que yo, como no tengo ni idea de MDX lo explique mal o no entendi bien como se usa.

    Osea, que hay que hacer referencia a la dimension que tiene el atributo "es formacion" y hacer el sum sobre la medida.

     

    Si, recursoMovimiento es el nombre del grupo de medidas.

    Entiendo, que para que me sume SOLO los que son formacion=1 (true) no deberia de ser:

    Sum ( [formacion].[es formacion]=1,Measures.importe),


    martes, 3 de mayo de 2011 10:44
  • No, porque no puedes poner comparaciones

    sumas conjuntos, entonces has de poner un conjunto que solo tenga los que es formacion sea uno, y eso se hace

    Sum( ([Formacion].[Es Formacion].&[1],Measures.Importe))  pon los parentesis y si no te funciona nos dices


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    martes, 3 de mayo de 2011 10:53
    Moderador
  • Hola,

     

    Oye, muchas gracias porque creo que funciona OK.

     

    Veras, he probado con unos movimientos de cuenta que tengo en una tabla. Usaba vistas porque no sabia como filtrar.

     

    He creado la dimension cuenta movimiento y va relacionada como tabla de hecho (porque es la misma tabla) con la que da la medida importe en la siguiente linea:

     

    Sum(([Cuenta Movimiento].[Es Activo Corriente].&[1],measures.[Importe - Cuenta Movimiento]))

     

     

    y me devuelve bien el activo corriente.

     

     

    miércoles, 4 de mayo de 2011 8:33
  • Hola,

    tengo una nueva duda. Lo que quiero es sacar el numero de registros que en su columna, no tienen el valor "es registro defecto" a true.

     

    Probé con:

     

    count(([Empleado].[Es Registro Defecto].&[0]))

     

    Pero no funciona, me devuelve un 1.

     

    count(([INIKCUBO Empleado].[Es Registro Defecto].&[0],[INIKCUBO Empleado].[Empleado Cod]))

     

    me da un 2.

    he probado de varias maneras, (members, children.count...) pero no consigo nada.

     

    Esa misma tabla la tengo como grupo de medidas pero claro, va sin filtrar por lo que el count que tiene no me sirve.

    EDIT

     

    Al final, creo que lo he conseguido asi:

    count(([Empleado].[Es Registro Defecto].&[0],[Empleado].[Empleado Cod].children))

     

    poniendo el children. El tema es que como la dimension esta relacionada con el grupo de medidas recurso movimiento,a traves de [recurso cod] aquellos empleados, que no tienen movimientos no se listan. Por eso tengo 2 empleados que no me salen en el recuento, es la sensacion que me da.

     

    No se si se os dan estos casos habitualmente o como lo sulucionais.

     

    Actualmente, lo que he hecho para evitar registros vacios en el cubo y perder datos, tengo creados los registros con una columna [Es registro defecto].

    Es para evitar usar el salto de errores en el cubo porque sino se pierden esas lineas.

     

     

     



    miércoles, 4 de mayo de 2011 15:58
  • Si te funciona, marca la respuesta como que lo es. y para no liar a los que dentro de unos meses vengan al foro, postea la otra pregunta en un hilo distinto. Con gusto te la contestaré.
    Comparte lo que sepas, aprende lo que no sepas (FGG)
    miércoles, 4 de mayo de 2011 16:31
    Moderador