Calcular la base del índice 100

Un usuario Pregunto ✅

Anónimo

Hola a todos,

Me gustaría agregar una función de indexación en mi informe. En resumen, el usuario a través del filtro puede seleccionar qué fecha desea establecer como base (por ejemplo, 1.1.2012). Luego:
– Valor al 1.1.2012 = 100
– Valor en otras fechas = Valor real en esa fecha / Valor real en 1.1.2012 * 100

¿Tiene alguna sugerencia sobre cómo crear las medidas para calcular esto? ¡Muchas gracias!

MFelix

Hola @Anónimo,

Puedes hacerlo siguiendo estos sencillos pasos:

  1. Agregue una tabla de calendario a sus datos pero déjela como una tabla independiente (no establezca ninguna relación con otras tablas)
  2. Agregue una segmentación a su informe según la tabla de calendario
  3. Cree la siguiente medida en su tabla de datos
    Index 100 =
    VAR Date_index =
        MIN ( 'Calendar'[Date] )
    RETURN
        SUM ( Data[Value] )
            / CALCULATE ( MAX ( Data[Value] ), Data[Date] = Date_index )
            * 100
  4. Si desea que no se calculen fechas anteriores a la fecha seleccionada, realice estos cambios en su medida:
    Index 100 =
    VAR Date_index =
        MIN ( 'Calendar'[Date] )
    RETURN
        SWITCH (
            TRUE (),
            MIN ( Data[Date] ) < Date_index, 0,
            SUM ( Data[Value] )
                / CALCULATE ( MAX ( Data[Value] ), Data[Date] = Date_index )
                * 100
        )

El resultado final es el siguiente:

Index_100.png

Saludos,

MFelix

MFelix

Hola @Anónimo,

Puedes hacerlo siguiendo estos sencillos pasos:

  1. Agregue una tabla de calendario a sus datos pero déjela como una tabla independiente (no establezca ninguna relación con otras tablas)
  2. Agregue una segmentación a su informe según la tabla de calendario
  3. Cree la siguiente medida en su tabla de datos
    Index 100 =
    VAR Date_index =
        MIN ( 'Calendar'[Date] )
    RETURN
        SUM ( Data[Value] )
            / CALCULATE ( MAX ( Data[Value] ), Data[Date] = Date_index )
            * 100
  4. Si desea que no se calculen fechas anteriores a la fecha seleccionada, realice estos cambios en su medida:
    Index 100 =
    VAR Date_index =
        MIN ( 'Calendar'[Date] )
    RETURN
        SWITCH (
            TRUE (),
            MIN ( Data[Date] ) < Date_index, 0,
            SUM ( Data[Value] )
                / CALCULATE ( MAX ( Data[Value] ), Data[Date] = Date_index )
                * 100
        )

El resultado final es el siguiente:

Index_100.png

Saludos,

MFelix

Anónimo

En respuesta a MFelix

Hola,

Gracias por tu sugerencia. Mi conjunto de datos consta de muchos elementos diferentes y necesito tener un valor de índice para cada uno de los elementos. Sin embargo, estos métodos suman todo el valor. ¿Tiene alguna idea de cómo solucionarlo?

MFelix

En respuesta a Anónimo

Hola @Anónimo,

Acabo de hacer una tabla simple que no es un cálculo muy sofisticado. ¿Qué tipo de cálculo desea en la fila Total?

Saludos,

MFelix

Anónimo

En respuesta a MFelix

Hola,

Por favor ignore mi pregunta anterior, ese problema está resuelto. Sin embargo, me encuentro con otro. Solo el valor en la fecha que elijo indexar regresa correctamente (100). Otro devuelve infinito.

Capture.PNG

Utilizo el mismo DAX que sugirió.

MFelix

En respuesta a Anónimo

En mis cálculos asumí que agrega una fecha, ¿cómo está configurando su fecha de filtrado?

Puedo ver en tu impresión que solo tienes año y mes.

Saludos

MFelix

Anónimo

En respuesta a MFelix

Hola,

Siguiendo su consejo, configuré otra tabla de fechas, que no está vinculada a mi tabla de datos.

El filtro de jerarquía está tomando la fecha de esa tabla de fechas separada.

Solo tengo un valor para cada mes (el primer día), por lo que para la jerarquía de fechas solo mantengo el mes y el año, eliminando la fecha ya que no es necesaria.

También probé nuevamente con un conjunto de datos simple y el problema aún persiste.Capture.PNG

MFelix

En respuesta a Anónimo

Hola @Anónimo,

El problema es que las fechas del calendario son secuenciales y las de los datos no.

Cree su tabla de calendario basada en los datos, agregue una nueva tabla con la siguiente fórmula:

DATES = DISTINCT(Data[Date])

Y luego cambie su variable en la medida a esto:

VAR Date_index =
    MAX ( DATES[Date] )

A continuación, vea el resultado de esta nueva configuración y la configuración anterior:

Index_New.png

Saludos,

MFelix

Anónimo

En respuesta a MFelix

Hola,

¿Podrías ayudarme a comprobarlo? De alguna manera todavía no me funciona.

Lo que hice:
1. Cree una nueva tabla de fechas:

Dates = Distinct(Data[Date]) 

2. Cree una nueva medida en la tabla de datos.

Index 100 = 
VAR Date_index =
	Max (Dates[Date])
RETURN
	SUM(Data[Value])
	/ Calculate(max(Data[Value]);Data[Date]=Date_index)
	*100

3. La segmentación obtiene valor de la tabla de fechas.

Este es el resultado para mí:
Capture.PNG

MFelix

En respuesta a Anónimo

Hola @Anónimo,

Debe configurar su columna Fecha como una Fecha, no como una jerarquía, cuando hace la jerarquía, «enciende» la Inteligencia de tiempo y completa el resto de las fechas que faltan.

Saludos,

MFelix

Anónimo

En respuesta a MFelix

Hola @MFelix,

¿Todavía tengo una pregunta más? Con esta solución, ¿todavía hay una forma de utilizar el cortador de jerarquías?

Traté de hacerlo, y resulta en infinito:
Capture.PNG
En la tabla de datos, creo dos columnas nuevas, que obtienen el año y el mes a partir de la fecha, y las coloco en el nivel de jerarquía. El segmentador de jerarquías obtiene datos de la jerarquía de ese año. Los datos aún están bien si el período de fecha elegido incluye la fecha que establecí como base para el índice. Pero si el período no incluye, los datos muestran infinito.

¡Gracias!

MFelix

En respuesta a Anónimo

Hola @Anónimo,

Perdón por la respuesta tardía, he estado mirando su pregunta y una vez más lo que está sucediendo es que la inteligencia del tiempo se activa cuando crea su tabla de calendario, ya que solo tiene una fecha por mes en sus datos maestros cuando intenta agregue la información basada en un segmentador de jerarquía si sale mal.

Una vez más, debe crear la tabla de calendario en función de los valores de sus datos:

Calendar = DISTINCT(Data[Date])

Haga una relación entre esta tabla y la tabla de datos y agregue el año y el mes, póngalo en su cortadora y debería funcionar como lo necesita, para comparar agregué una medida a la imagen a continuación con el valor de la fecha seleccionada para que pueda ver siempre obtiene el valor correcto.

indexx.png

Saludos,

MFelix

bandidox42

En respuesta a MFelix

Estoy tratando de usar esta solución y colocar los resultados por estado en un mapa. ¿Cómo puedo hacer que el mapa muestre el valor del índice para cada estado a partir de la última fecha en el rango seleccionado? Por ejemplo, si selecciono una fecha base de 1/1/2012 y un rango de fechas de datos de 1/1/2012 – 1/1/2017, ¿cómo puedo mapear el índice a partir del 1/1/2017 para cada estado? El índice de cada estado debe calcular su propio valor el 1/1/2017 y dividir por el valor del 1/1/2012.

¡Gracias!

MFelix

En respuesta a bandidox42

Hola @ banditx42,

Necesita utilizar la segunda parte de la medida:

BASE INDEX =CALCULATE ( MAX ( Data[Value] ), Data[Date] = Date_index )

luego agréguelo a su visual.

Saludos,

MFelix

bandidox42

En respuesta a MFelix

Estoy tratando de usar esta solución y colocar los resultados por estado en un mapa. ¿Cómo puedo hacer que el mapa muestre el valor del índice para cada estado a partir de la última fecha en el rango seleccionado? Por ejemplo, si selecciono una fecha base de 1/1/2012 y un rango de fechas de datos de 1/1/2012 – 1/1/2017, ¿cómo puedo mapear el índice a partir del 1/1/2017 para cada estado? El índice de cada estado debe calcular su propio valor el 1/1/2017 y dividir por el valor del 1/1/2012.

¡Gracias!

Anónimo

En respuesta a MFelix

Hola @MFelix,

¡Eso funciona! ¡Muchas gracias por su ayuda!

Deja un comentario

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