Jerarquía de padres e hijos: error generado por DAX Measure en Matrix Visual

Un usuario Pregunto ✅

sreenathv

Actualmente estoy trabajando en un informe que consta de jerarquías de padres e hijos para representar la estructura de nuestra organización de ventas. En lugar de reinventar la rueda, he seguido el método sugerido en la siguiente página web.

https://www.daxpatterns.com/parent-child-hierarchies/

Pero la siguiente medida está arrojando un error.

TargetValue = 
IF (
    [BrowseDepth] > [MaxNodeDepth] + 1,
    BLANK (),
    IF (
        [BrowseDepth] = [MaxNodeDepth] + 1,
        IF (
            AND (
                VALUES ( GeoNodes1920[IsLeaf] ) = FALSE,
                SUM ( 'Targets 2019-2020'[Value] ) <> 0
            ),
            SUM ( 'Targets 2019-2020'[Value] ),
            BLANK ()
        ),
        SUM ( 'Targets 2019-2020'[Value] )
    )
)

El mensaje de error se da a continuación … El punto a tener en cuenta aquí es que estoy usando un Matriz visual en Power BI y la medida muestra los resultados correctamente en los dos primeros niveles de la jerarquía. El visual de la matriz arroja un error cuando profundizo en el 3er nivel usando el botón «Expandir todo un nivel hacia abajo en la jerarquía» del visual de Matrix.

No se pudieron cargar los datos de este objeto visual.

MdxScript (Modelo) (12,17) Error de cálculo en la medida ‘Objetivos 2019-2020′[TargetValue]: Se proporcionó una tabla de valores múltiples donde se esperaba un solo valor.

No puedo averiguar qué está causando este error cuando profundizo en el tercer nivel.

TomMartens

En respuesta a sreenathv

Hola @sreenathv,

en una segunda mirada, escribiría la medida así:

TargetValue = 
IF (
    [BrowseDepth] > [MaxNodeDepth] + 1,
    BLANK (),
    IF (
        [BrowseDepth] = [MaxNodeDepth] + 1,
		CALCULATE(
			SUM ( 'Targets 2019-2020'[Value] )
			,FILTER(
				VALUES ( GeoNodes1920[IsLeaf] )
				,GeoNodes1920[IsLeaf] = FALSE
			)
		)
        ,SUM ( 'Targets 2019-2020'[Value] )
    )
)

Esto no está bien pensado ya que estoy escribiendo esto desde mi móvil, disculpe si esto no funciona, considérelo solo una idea 😉

Saludos,

Tomás

TomMartens

Oye,

Supongo que esta línea es la causa del error:

...
VALUES ( GeoNodes1920[IsLeaf] ) = FALSE
...

as VALUES (…) básicamente devuelve una tabla de una sola columna, que en caso de que haya solo una fila se puede comparar con un valor escalar como «FALSE».

Creo que debe prepararse para situaciones en las que VALUES (…) devuelve una tabla con más de una fila.

Con suerte, esto le proporcionará alguna ayuda.

Saludos,

Tomás

sreenathv

@TomMartens

¿Puedes echar un vistazo? Acabo de ver que ahora estás en línea.

TomMartens

En respuesta a sreenathv

Hola @sreenathv,

en una segunda mirada, escribiría la medida así:

TargetValue = 
IF (
    [BrowseDepth] > [MaxNodeDepth] + 1,
    BLANK (),
    IF (
        [BrowseDepth] = [MaxNodeDepth] + 1,
		CALCULATE(
			SUM ( 'Targets 2019-2020'[Value] )
			,FILTER(
				VALUES ( GeoNodes1920[IsLeaf] )
				,GeoNodes1920[IsLeaf] = FALSE
			)
		)
        ,SUM ( 'Targets 2019-2020'[Value] )
    )
)

Esto no está bien pensado ya que estoy escribiendo esto desde mi móvil, disculpe si esto no funciona, considérelo solo una idea 😉

Saludos,

Tomás

sreenathv

En respuesta a TomMartens

Solo lo probé. Funciona.

sreenathv

En respuesta a TomMartens

Muchas gracias.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *