Cómo crear una tabla calculada para valores futuros a partir de una lista de nombres únicos

Un usuario Pregunto ✅

aar0n

Hola tios,

Estoy buscando crear una tabla calculada donde la columna de fecha comienza después de que termina una consulta diferente.

Aquí hay una tabla de muestra de mi conjunto de datos original

Escribe Nombre Última fecha en el conjunto de datos Último valor conocido
1 a 31/01/2017 10
2 B 31/01/2017 15
3 C 31/01/2017 12
4 D 31/01/2017 20

Lo que necesito es aplicar una fórmula para cada «Nombre». La fórmula tomará el último «Valor» conocido para cada «Nombre» único y lo multiplicará por 0,77 ^ (1/12) para todas las fechas futuras hasta 2020.

un ejemplo de lo que estoy buscando

Escribe Nombre Fecha Valor
1 a 1/2/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
1 a 2/2/2018 Valor predicho por encima de * 0,77 ^ (1/12)
1 a 03/02/2018 Valor predicho por encima de * 0,77 ^ (1/12)
1 a 4/2/2018 Valor predicho por encima de * 0,77 ^ (1/12)
1 a 5/2/2018 Valor predicho por encima de * 0,77 ^ (1/12)
1 a 6/02/2018 Valor predicho por encima de * 0,77 ^ (1/12)
1 a 1/1/2020 Valor predicho por encima de * 0,77 ^ (1/12)
2 B 1/2/2018 Último valor conocido (para «Nombre» b) * 0,77 ^ (1/12)
2 B 2/2/2018 Valor predicho por encima de * 0,77 ^ (1/12)
2 B 1/1/2020 Valor predicho por encima de * 0,77 ^ (1/12)

El mayor problema para mí no es la fórmula … solo he estado luchando por descubrir cómo crear una lista de fechas para cada nombre único que comienza después de que finaliza la consulta original.

Muchas gracias por la ayuda,

Aaron

Zubair_Muhammad

Hola @ aar0n

Prueba esta tabla calculada

Desde la pestaña Modelado >> Nueva tabla

New Table =
ADDCOLUMNS (
    GENERATE (
        TableName,
        GENERATESERIES ( TableName[Last date in dataset] + 1, DATE ( 2020, 1, 1 ) )
    ),
    "myvalue", TableName[Last Known Value ]
        * .77
        ^ ( 1 / 12 )
)

Zubair_Muhammad

En respuesta a Zubair_Muhammad

Hola @ aar0n

En ese caso, cree una nueva tabla que le dará los números del mes

Table =
GENERATE (
    TableName,
    GENERATESERIES (
        1,
        DATEDIFF ( TableName[Last date in dataset], DATE ( 2020, 1, 1 ), MONTH )
    )
)

Luego, puede agregar una columna calculada para obtener las fechas de finalización del mes

Column =
EOMONTH ( 'Table'[Last date in dataset], 'Table'[Value] )

Zubair_Muhammad

En respuesta a Zubair_Muhammad

HOLA
 
De tu última publicación me di cuenta de esto. Así que creo que ajustar la POTENCIA en -1 debería solucionarlo.
 
Mi VALOR =
‘Tabla'[Last Known Value ]
* (0,77
^ (1/12))
^ (‘Tabla'[Value that represents the month]-1)
 

Zubair_Muhammad

Hola @ aar0n

Prueba esta tabla calculada

Desde la pestaña Modelado >> Nueva tabla

New Table =
ADDCOLUMNS (
    GENERATE (
        TableName,
        GENERATESERIES ( TableName[Last date in dataset] + 1, DATE ( 2020, 1, 1 ) )
    ),
    "myvalue", TableName[Last Known Value ]
        * .77
        ^ ( 1 / 12 )
)

aar0n

En respuesta a Zubair_Muhammad

¡Eso funcionó increíble! ¡muchas gracias!

¿Podrías explicar cómo estás usando Addcolumns, generate y Generateseries juntos?

para referencia futura (definitivamente voy a usar esto nuevamente) también me pregunto cómo haría el mismo proceso, excepto que las fechas aumentan en 1 mes en lugar de 1 día

Zubair_Muhammad

En respuesta a aar0n

Hola @ aar0n

Básicamente tienes que trabajar al revés.

GenerateSeries crea la tabla de fechas que necesita

Genere uniones cruzadas con cada fila de la tabla.

Luego agrega una columna a esta tabla usando AddColumns

Zubair_Muhammad

En respuesta a Zubair_Muhammad

@ aar0n

Hay un tercer argumento de GenerateSeries ,,,, (Intervalo) que le permite dar un espacio entre las fechas

aar0n

En respuesta a Zubair_Muhammad

Encontré eso, pero ¿cómo lo configura para generar el último día de cada mes? Descubrí cómo agregar un valor constante, pero no estoy seguro de cómo decir el último día del mes

Zubair_Muhammad

En respuesta a aar0n

Hola @ aar0n

Lo investigaré y me pondré en contacto contigo.

Zubair_Muhammad

En respuesta a Zubair_Muhammad

Hola @ aar0n

En ese caso, cree una nueva tabla que le dará los números del mes

Table =
GENERATE (
    TableName,
    GENERATESERIES (
        1,
        DATEDIFF ( TableName[Last date in dataset], DATE ( 2020, 1, 1 ), MONTH )
    )
)

Luego, puede agregar una columna calculada para obtener las fechas de finalización del mes

Column =
EOMONTH ( 'Table'[Last date in dataset], 'Table'[Value] )

aar0n

En respuesta a Zubair_Muhammad

después de probarlo, terminé calculando el mes.

gracias por la gran solución … utilicé lo siguiente:

EOMONTH ( 'Table'[Last date in dataset], 'Table'[Value that represents the month] )

————————————————– ————————————————– —————————————

sin embargo, necesito que el «valor» cambie … básicamente, lo que obtengo está por debajo … lo que significa que la columna «Valor» es constante, mientras que necesito que se vuelva cada vez más pequeña.

Escribe Nombre Fecha Valor
1 a 28/02/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
1 a 31/03/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
1 a 30/4/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
1 a 31/05/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
1 a 30/6/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
1 a 31/7/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
2 B 1/2/2018 Último valor conocido (para «Nombre» b) * 0,77 ^ (1/12)
2 B 31/03/2018 Último valor conocido (para «Nombre» b) * 0,77 ^ (1/12)
Último valor conocido (para «Nombre» b) * 0,77 ^ (1/12)
2 B 31/01/2020 Último valor conocido (para «Nombre» b) * 0,77 ^ (1/12)

lo que necesito es

Escribe Nombre Fecha Valor
1 a 28/02/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
1 a 31/03/2018 Valor predicho por encima de * 0,77 ^ (1/12)
1 a 30/4/2018 Valor predicho por encima de * 0,77 ^ (1/12)
1 a 31/05/2018 Valor predicho por encima de * 0,77 ^ (1/12)
1 a 30/6/2018 Valor predicho por encima de * 0,77 ^ (1/12)
1 a 31/7/2018 Valor predicho por encima de * 0,77 ^ (1/12)
2 B 1/2/2018 Último valor conocido (para «Nombre» b) * 0,77 ^ (1/12)
2 B 31/03/2018 Valor predicho por encima de * 0,77 ^ (1/12)
2 B 31/01/2020 Valor predicho por encima de * 0,77 ^ (1/12)

Ashish_Mathur

En respuesta a aar0n

Hola @ aar0n,

No estoy seguro de a quién le está respondiendo. ¿Necesitas ayuda de mi parte? ¿Funcionó mi solución?

aar0n

En respuesta a Ashish_Mathur

hola ashish,

gracias por la contribución, pero su solución tiene el mismo problema que la otra solución, como se muestra en mi ejemplo anterior … el ‘valor’ debería disminuir constantemente hacia 0, pero en ambas soluciones aquí, el los valores son un valor constante para cada fecha

Ashish_Mathur

En respuesta a aar0n

Hola,

Cuando haga clic en el ícono de Datos en el panel del lado izquierdo, observará que las Fechas aumentan según el día. ¿Es eso correcto o deberían incrementarse mensualmente?

aar0n

En respuesta a Ashish_Mathur

@Ashish_Mathur

Veo que las fechas aumentan cada día. Sin embargo, el problema principal es que los valores no se calculan correctamente.

@Zubair_Muhammad ya solucionó el problema del incremento por mes, el único problema es que el «valor» es constante

Zubair_Muhammad

En respuesta a aar0n

@ aar0n

Para obtener los valores decrecientes, agregue esta columna calculada a la tabla calculada que creó

My VALUE =
'Table'[Last Known Value ]
    * ( 0.77
    ^ ( 1 / 12 ) )
    ^ 'Table'[Value that represents the month]

aar0n

En respuesta a Zubair_Muhammad

@Zubair_Muhammad eso no me dará el valor correcto, ya que el cálculo se está llevando al exponente del número del mes.

está muy cerca, pero a continuación se muestra una muestra de lo que está sucediendo y lo que estoy buscando.

Escribe Fecha Último valor conocido * (0,77 ^ (1/12)) ^ Valor que representa el mes Último valor conocido * (0,77 ^ (1/12))
Último valor conocido 31/01/2017 29,69 29,69
calculado 28/02/2018 28.4243127 29.05033142
calculado 31/03/2018 27.81191325 28.42444444
calculado 30/4/2018 27.21270789 27,81204215
calculado 31/05/2018 26.62641236 27.21283401
calculado 30/6/2018 26.05274852 26.62653577
calculado 31/7/2018 25.49144422 26.05286927
calculado 31/8/2018 24,94223317 25.49156236
calculado 30/9/2018 24.40485483 24,94234877
calculado 31/10/2018 23.87905426 24.40496794
calculado 30/11/2018 23.36458202 23.87916493
calculado 31/12/2018 22.86119405 23.36469031
calculado 31/01/2019 22.36865152 22.8613
calculado 28/02/2019 21.88672078 22.36875519

Zubair_Muhammad

En respuesta a aar0n

@ aar0n

Lo miraré

Zubair_Muhammad

En respuesta a Zubair_Muhammad

HOLA
 
De tu última publicación me di cuenta de esto. Así que creo que ajustar la POTENCIA en -1 debería solucionarlo.
 
Mi VALOR =
‘Tabla'[Last Known Value ]
* (0,77
^ (1/12))
^ (‘Tabla'[Value that represents the month]-1)
 

aar0n

En respuesta a Zubair_Muhammad

¡¡¡Gracias!!!

aar0n

En respuesta a Zubair_Muhammad

después de probarlo, terminé calculando el mes.

gracias por la gran solución … utilicé lo siguiente:

EOMONTH ( 'Table'[Last date in dataset], 'Table'[Value that represents the month] )

sin embargo, necesito que el valor cambie … básicamente, lo que obtengo está debajo … lo que significa que la columna «Valor» es constante, mientras que necesito que se vuelva cada vez más pequeña.

Escribe Nombre Fecha Valor
1 a 28/02/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
1 a 31/03/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
1 a 30/4/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
1 a 31/05/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
1 a 30/6/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
1 a 31/7/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
2 B 1/2/2018 Último valor conocido (para «Nombre» b) * 0,77 ^ (1/12)
2 B 31/03/2018 Último valor conocido (para «Nombre» b) * 0,77 ^ (1/12)
Último valor conocido (para «Nombre» b) * 0,77 ^ (1/12)
2 B 31/01/2020 Último valor conocido (para «Nombre» b) * 0,77 ^ (1/12)

lo que necesito es

Escribe Nombre Fecha Valor
1 a 28/02/2018 Último valor conocido (para «Nombre» a) * 0,77 ^ (1/12)
1 a 31/03/2018 Valor predicho por encima de * 0,77 ^ (1/12)
1 a 30/4/2018 Valor predicho por encima de * 0,77 ^ (1/12)
1 a 31/05/2018 Valor predicho por encima de * 0,77 ^ (1/12)
1 a 30/6/2018 Valor predicho por encima de * 0,77 ^ (1/12)
1 a 31/7/2018 Valor predicho por encima de * 0,77 ^ (1/12)
2 B 1/2/2018 Último valor conocido (para «Nombre» b) * 0,77 ^ (1/12)
2 B 31/03/2018 Valor predicho por encima de * 0,77 ^ (1/12)
2 B 31/01/2020 Valor predicho por encima de * 0,77 ^ (1/12)

Ashish_Mathur

En respuesta a aar0n

Hola,

Puede descargar mi solución desde aquí.

Deja un comentario

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