es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Resultado inesperado de medida en tabla filtrada con criterio dinámico en Power BI.

Tengo una tabla llamada DW_XYZ:

Año Mes Tipo Valor
2021 1 A 10
2021 1 B 12
2021 2 A 20

*no hay datos para el tipo B en el Mes=2

Me gustaría crear una medida que almacene los datos que ya filtré por el último mes de datos almacenados en DW_XYZ con la fórmula DAX:

DAX
CALCULATE(
SUM(DW_XYZ[Valor]),
FILTER(DW_XYZ,DW_XYZ[Mes]=
CALCULATE(MAX(DW_XYZ[Mes]),
FILTER(DW_XYZ,DW_XYZ[Año]=
MAX(DW_XYZ[Año]))) && DW_XYZ[Año]=MAX(DW_XYZ[Año]))

A partir de la medida, creo 2 gráficos de tarjetas para mostrar los datos de los tipos A y B cada uno. El primer gráfico para mostrar el tipo A, por lo que arrastro la medida y también arrastro la columna Tipo a ‘filtro visual’ y selecciono manualmente ‘A’, y hago lo mismo para el segundo gráfico (tipo B).

Para el tipo A, la tarjeta muestra el valor esperado (del tipo A y Mes=2).
Pero para el tipo B, la tarjeta muestra un valor inesperado (del tipo B y Mes=1), debería ser el tipo B y Mes=2 que está en blanco/cero. Por cierto, sería muy apreciado si la fórmula incluyera la manejo de valor en blanco como cero (0) en lugar de vacío.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para manejar los valores en blanco en la medida y mostrarlos como 0 en la visualización de tarjeta, podemos modificar la fórmula DAX de la siguiente manera:

    CALCULATE(
        IF(
            ISBLANK(SUM(DW_XYZ[Value])),
            0,
            SUM(DW_XYZ[Value])
        ),
        FILTER(
            DW_XYZ,
            DW_XYZ[Month]=CALCULATE(
                MAX(DW_XYZ[Month]),
                FILTER(
                    DW_XYZ,
                    DW_XYZ[Year]=MAX(DW_XYZ[Year])
                )
            )
            && DW_XYZ[Year]=MAX(DW_XYZ[Year])
            && DW_XYZ[Type]="El Tipo B"
        )
    )
    

    Esta fórmula DAX utiliza la función IF para comprobar si la suma de DW_XYZ[Value] está en blanco. Si lo está, devuelve 0. De lo contrario, devuelve la suma de DW_XYZ[Value]. Además, filtra la tabla DW_XYZ en Tipo B y el último mes y año de la tabla.

    Para mostrar el valor esperado para la tarjeta Tipo B, asegúrese de seleccionar “Tipo B” en el filtro visual y eliminar cualquier otro filtro que pueda afectar la visualización.

Comments are closed.