ISVALID

English (Español a continuación)

It is a boolean function that returns «True» if a member has a certain property and «False» if it does not.

Its structure:

  • ISVALID(Property)

Property: it is the characteristic that the member must present.

For example:

  • To have an associated attribute.
  • To have children.
  • To have any value (not #missing).

Presenting a property is different from meeting a certain condition:

  • To be descendant of such member.
  • To have a value greater than x.
  • To have a name beginning with x.

Let’s see some examples:

  • ISVALID([Markets].currentmember)

All members of the “Markets” dimension present this characteristic, so this function returns “True” for all of them.

Another example: Suppose the outline has a dimension attribute “Size” (with its members “Large”, “Medium” and “Small”). This dimension is associated with the «Markets» dimension and we assign this attribute to some of its members.

  • ISVALID([Markets].currentmember.Size)

This property is only presented by those members of the «Markets» dimension that have been assigned an attribute of the «Size» dimension.

  • Regardless of whether the assigned attribute is “Large”, “Medium” or “Small”.

Another example:

  • ISVALID([Markets].currentmember.Firstchild)

This property is presented by those members of the «Markets» dimension that have children, so the level 0 members do not.

Another example:

  • ISVALID(([Markets].currentmember,[“Year 2021”]).Value)

This property is presented by those members of the «Markets» dimension that have data in the member «Year 2021» (of the «Years» dimension).

  • Those members without data (#missing) do not present this property.

The ISVALID function can also be used in conjunction with other functions. Let’s see an example:

  • ISVALID(Intersect({Descendants([Europe])},{[Markets].currentmember}))

This property is presented by those members selected by the “INTERSECT” function:

  • Members of the “Markets” dimension descendants of “Europe”.

Another example:

  • ISVALID(Intersect({CrossJoin({[“Sales”]},{Descendants([Europe])})}, {CrossJoin({[Data].currentmember},{[Markets].currentmember})}))

This property is presented by those blocks where the «Markets» dimension and the «Data» dimension are selected by the «INTERSECT» function:

  • Members of the «Markets» dimension descendants of «Europe» in combination with the member «Sales» of the «Data» dimension.

ISVALID can also be included within a conditional structure used as a formula in an outline member (of a dynamic dimension).

For example: We calculate the sales target for the year 2022 including the following formula in the member “Obj_2022” (of the dynamic dimension “Years”):

  • IIF(Contains([Markets].currentmember,FILTER({[Markets].currentmember},ISVALID([Markets].currentmember.Size) AND [Markets].currentmember.Size = “Large”)),100,
  • IIF(Contains([Markets].currentmember,FILTER({[Markets].currentmember}, ISVALID([Markets].currentmember.Size) AND [Markets].currentmember.Size = “Medium”),75,50) )

This structure assigns:

  • To those members of the «Markets» dimension associated with a member of the dimension attribute «Size»:
    • If the associated attribute is «Large»: A target of 100 is assigned (it meets the first filter).
    • If the associated attribute is «Medium»: A target of 75 is assigned (meets the second filter).
  • The rest of the markets: A target of 50 is assigned.

The opposite function to ISVALID is “NOT ISVALID”:

  • NOT ISVALID([Markets].currentmember.Firstchild)

This property is presented by those members of the “Markets” dimension that do not have children.

  • Level 0 members present this property.

Any questions, please send an email to: essbaseeasy@gmail.com

Español

Es una función booleana que devuelve “Verdadero” si un miembro presenta determinada propiedad y “Falso” si no lo hace.

Su estructura:

  • ISVALID(Propiedad)

Propiedad: es la característica que debe presentar el miembro.

Por ejemplo:

  • Que tenga asociado un atributo.
  • Que tenga hijos.
  • Que tenga un valor.

Presentar una propiedad es distinto a que cumpla determinada condición:

  • Que sea descendiente de tal miembro.
  • Que su valor sea mayor que x.
  • Que su nombre comience por x.

Veamos algunos ejemplos:

  • ISVALID([Mercados].currentmember)

Todos los miembros de la dimensión “Mercados” cumplen esta condición, por lo que esta función devuelve “Verdadero” para todos ellos.

Otro ejemplo: Supongamos que el outline tiene una dimensión atributo “Tamaño” (con sus miembros “Grande”, “Mediano” y “Pequeño”). Esta dimensión está asociada a la dimensión “Mercados” y asignamos este atributo a algunos de sus miembros.

  • ISVALID([Mercados].currentmember.Tamaño)

Esta propiedad únicamente la cumplen aquellos miembros de la dimensión “Mercados” que tengan asignados un atributo de la dimensión “Tamaño”.

  • Con independencia de que el atributo asignado sea “Grande”, “Mediano” o “Pequeño”.

Otro ejemplo:

  • ISVALID([Mercados].currentmember.Firstchild)

Esta propiedad la cumplen aquellos miembros de la dimensión “Mercados” que tengan hijos, por lo que los miembros de nivel 0 no la cumplen.

Otro ejemplo:

  • ISVALID(([Mercados].currentmember,[“Año 2021”]).Value)

Esta propiedad la cumplen aquellos miembros de la dimensión “Mercados” que tengan datos en el miembro “Año 2021” (de la dimensión “Años”).

  • Aquellos miembros sin datos (#missing) no cumplen la propiedad.

La función ISVALID también se puede utilizar conjuntamente con otras funciones. Veamos un ejemplo:

  • ISVALID(Intersect({Descendants([Europa])},{[Mercados].currentmember}))

Esta propiedad la cumplen aquellos miembros que quedan seleccionados por la función “INTERSECT”:

  • Miembros de la dimensión “Mercados” que son descendientes del miembro “Europa”.

Otro ejemplo:

  • ISVALID(Intersect({CrossJoin({[“Ventas”]},{Descendants([Europa])})}, {CrossJoin({[Datos].currentmember},{[Mercados].currentmember})}))

Esta propiedad la cumplen aquellos bloques bidimensionales de la dimensión “Mercados” y dimensión “Datos” que quedan seleccionados por la función “INTERSECT”:

  • Miembros de la dimensión “Mercados” descendientes del miembro “Europa” en combinación con el miembro “Ventas”, de la dimensión “Datos”.

La función ISVALID también se puede utilizar dentro de una estructura condicional que se puede utilizar como fórmula en un miembro del outline (de una dimensión dinámica).

Por ejemplo: Calculamos el objetivo de ventas del año 2022 incluyendo la siguiente fórmula en el miembro “Obj_2022” (de la dimensión dinámica “Años”):

  • IIF(Contains([Mercados].currentmember,FILTER({[Mercados].currentmember},ISVALID([Mercados].currentmember.Tamaño) AND [Mercados].currentmember.Tamaño = “Grande”)),100,
  • IIF(Contains([Mercados].currentmember,FILTER({[Mercados].currentmember}, ISVALID([Mercados].currentmember.Tamaño) AND [Mercados].currentmember.Tamaño = “Mediano”)),75,50))

Esta estructura asigna:

  • A aquellos mercados que tienen asociados un miembro de la dimensión atributo ”Tamaño”:
    • Si el atributo asociado es “Grande”: Se le asigna un objetivo de 100 (cumple el primer filtro).
    • Si el atributo asociado es “Mediano”: Se le asigna un objetivo de 75 (cumple el segundo filtro).
  • Al resto de mercados: Se le asigna un objetivo de 50

La función opuesta a ISVALID es “NOT ISVALID”:

  • NOT ISVALID([Mercados].currentmember.Firstchild)

Esta propiedad la cumplen aquellos miembros de dimensión “Mercados” que no tienen hijos.

  • Los miembros de nivel 0 son los que cumplen esta propiedad.

Cualquier consulta envía, por favor, un correo a: essbaseeasy@gmail.com

Anuncio publicitario