Al agregar un valor de inicio a una tabla de cascada en Power Bi
Foto Trabajador de Jeffrey en Sin estelares

Primero, definamos el alcance del desafío: imagine que queremos rastrear el crecimiento en su base de clientes a lo largo del tiempo.

Creamos una medida para contar a los clientes en función de su primer pedido, identificando nuevos clientes para cada mes.

Pero ahora, queremos crear una visualización de esta medida con una visual de cascada, y obtenemos algo como esto:

Figura 1 – Gráfico inicial de cascada en Excel (figura del autor)

Pero necesitamos algo más.

Necesitamos el valor inicial, que es el recuento de clientes al final del año anterior, y luego agregamos el número de nuevos clientes para cada mes al número total de clientes al final del período de informe.

Algo como esto:

Figura 2 – Segundo ejemplo en Excel con el total inicial, Be Fin de 2024 y el total en agosto de 2025 (cifra del autor)

Desafortunadamente, no podemos establecer una columna como el total de inicio en Power BI.

Por lo tanto, al agregar la medida a una visión de cascada en Power BI, el resultado es similar al del primer ejemplo en Excel:

Figura 3 – El enfoque inicial en Power BI. Observe que Power Bi calcula automáticamente el total en la cascada (figura del autor)

Incluso cuando se usa un visual personalizado comercial como Zebra BI, el resultado no es el necesario:

Figura 4 – Ejemplo con una cebra bi visual (figura del autor)

En este caso, agregué la medida del año anterior para establecer el valor de inicio. Sin embargo, el visual calcula la desviación del PY para cada mes y muestra el total en función de estas desviaciones.

El resultado 141 para el año anterior se calcula porque Zebra BI detecta que solo hay 7 meses de datos para el año en curso, y calcula la suma en el año anterior solo para esos 7 meses.

En este caso específico, no es lo que necesitamos, ya que no estamos interesados en la desviación del año anterior, sino en el crecimiento a partir del final del año pasado.

Aunque esta visual personalizada es extremadamente poderosa, no es útil en nuestro caso.

Expandir el modelo de datos

Lo que necesitamos ahora es un método no solo para calcular, sino también para mostrar el último mes del año anterior al seleccionar un año, por ejemplo, 2025.

Ya he resuelto este problema agregando una segunda tabla de fecha y escribiendo la medida correspondiente.

Puede encontrar la descripción completa de esta solución y una explicación de cómo funciona en la sección de referencias a continuación.

El modelo de datos modificado se ve así:

Figura 5 – Modelo de datos modificado con la nueva tabla de fecha de informe en el medio (figura del autor)

Esta nueva tabla de fecha nos permite trabajar con el elemento seleccionado en la tabla “Fecha de selección” y realizar cálculos con la tabla de fecha.

Para apoyar esto, configuré ambas tablas como “Tabla de fechas”. Todavía puedo usar la tabla de “fecha” como de costumbre sin restricciones.

Desarrollar las medidas (s)

El siguiente paso es escribir las medidas.

Primero, debo calcular el valor de inicio, que es el número de clientes al final del año (anterior).

Para lograr este objetivo, debo calcular la suma de todas las filas para el año anterior, pero para todos los meses:

New Customers (YE) =

    VAR SelYearPY = SELECTEDVALUE('Date'[Year])

    VAR Result = CALCULATE([New Customers]

                            ,REMOVEFILTERS('Date')

                            ,'Date'[Year] = SelYearPY

                            )

RETURN

    Result

El resultado es 280 para 2024.

Quizás se pregunte por qué calculo la suma durante el año seleccionado en lugar del año anterior.
La razón es que queremos mostrar el resultado de esta medida para diciembre de 2024 (cuando se selecciona 2025). Espere un momento hasta que vea los resultados. Estos te ayudarán a entenderlo.

Ahora, debemos desarrollar una medida que devuelva los valores correctos dependiendo del mes en el eje X.

Este debería ser el valor de fin de año del año anterior para diciembre de 2024, o el recuento de nuevos clientes para cada mes del año actual (seleccionado). Ver la medida anterior.

La medida que necesitamos debe realizar los siguientes pasos:

  1. Obtenga el año seleccionado desde la tabla de fechas.
  2. Calcule los primeros y últimos meses para mostrar en el informe.
  3. Calcule el resultado eliminando el filtro de la tabla de fecha utilizada en la cortadora (la tabla “Fecha de selección”).
  4. Decide qué resultado debe mostrarse para qué mes.

El último paso es crucial.

A medida que eliminamos el filtro para el año seleccionado de ambas tablas de fecha, debemos controlar si se debe mostrar un resultado para cada mes. Encontrarás este paso en el CAMBIAR() parte de la medida a continuación.

Esta es la medida completa:

Retail Sales Waterfall =

    VAR SelYear = SELECTEDVALUE('Selection Date'[Year])

    VAR MinYearMonth = SelYear * 100 + 1

    VAR MaxYearMonth = SelYear * 100 + 12

    VAR LastPYYearMonth = (SelYear - 1) * 100 + 12

    VAR ActualMK = CALCULATE(

                    MAX('Date'[MonthKey])

                    ,CROSSFILTER('Selection Date'[DateKey]

                                ,'Date'[DateKey]

                                ,None)

                                )

RETURN

SWITCH(TRUE()

    ,ActualMK = LastPYYearMonth

        ,CALCULATE([New Customers (YE)]

                    ,CROSSFILTER('Selection Date'[DateKey]

                                ,'Date'[DateKey]

                                ,None)

                    ,REMOVEFILTERS('Date')

                    ,'Date'[MonthKey] = (SelYear - 1) * 100 + 12

                    )

    ,ActualMK >= MinYearMonth

        && ActualMK <= MaxYearMonth

        ,CALCULATE([New Customers]

                            ,CROSSFILTER('Selection Date'[DateKey]

                                        ,'Date'[DateKey]

                                        ,None)

                                )

        ,BLANK()

    )

Este es el resultado:

Figura 6 – Resultado final con el valor inicial al final del año anterior (cifra del autor)

Por encima de la tabla de cascada, puede ver los números devueltos por la medida.

Como se mencionó anteriormente, la cortadora de año en la esquina superior izquierda no usa la columna del año desde la tabla “Fecha”, sino desde la tabla “Fecha de selección”. Esto es vital. La solución no funcionará cuando use la columna del año desde la tabla “Fecha”.

Conclusión

La visual de cascada es excelente para mostrar el cambio en los valores de un elemento a otro. Un elemento puede ser un mes o algo diferente. Por ejemplo, puede encontrar otro artículo en la sección de referencias a continuación, donde demuestro cómo modificar un modelo de datos para mostrar un proceso de negocio con una visual de cascada en Power BI.

La solución que se muestra aquí es un ejemplo típico de dónde reutilé un enfoque previamente desarrollado para abordar un nuevo desafío.

La belleza de este enfoque es que me permite continuar usando todas las medidas utilizando la tabla de fecha “regular” sin restricción y usar la tabla “Fecha de selección” para agregar más funcionalidad al informe.

En este caso, agregué una característica a la tabla de cascadas que anteriormente no estaba disponible.

No diré que siempre necesitas dos tablas de fecha. Solo agrégalos cuando sea necesario. No tiene sentido agregar tablas a un modelo de datos solo para tenerlas.

Referencias

Aquí está mi pieza, donde muestro cómo amplié mi modelo de datos para poder mostrar más fechas que las seleccionadas:

Aquí, mi pieza donde explico cómo cambiar los datos para mostrar un proceso de negocio con una tabla de cascadas:

Como en mis artículos anteriores, uso el conjunto de datos de muestra Contoso. Puede descargar el conjunto de datos ContaSoretailDW gratis desde Microsoft aquí.

Los datos de Contoso se pueden usar libremente bajo la licencia MIT, como se describe En este documento. Cambié el conjunto de datos para cambiar los datos a fechas contemporáneas.