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í.