Calcule los ingresos por mes según la duración

Un usuario Pregunto ✅

bsas

Hola a todos,

Tengo problemas para mostrar los ingresos por mes según la duración (por ejemplo, hay 1 proyecto con una cantidad = 10000 por mes durante 4 meses que comenzó en febrero, otro con una cantidad = 5000 por 2 meses que comenzó en marzo. Quiero mostrar: feb = 10 000, mar = 15 000, apr = 15 000, mayo = 10 000 junio = 0. Tengo una columna con la fecha de inicio (por ejemplo, 7/12/2017), duración (3, 5, 7) e ingresos.

Tabla con datos:

Proyecto Monto duración Fecha de inicio
Proyecto 1 10000 4 01/02/2017
proyecto2 5000 2 13/03/2017

Resultado Esperado:

ingresos mes
10000 febrero
15 000 marcha
15 000 abril
10000 Mayo
0 junio

He creado la medida a continuación. Intenté usar calcular … pero no tengo idea de cómo agregar la duración aquí. Podría alguien ayudarme con esto.

billing_1 = CALCULATE(SUM(tab[rate]),
FILTER(Filter(ALLSELECTED(tab),tab[start date]),
AND(tab[start date] <= MAX(tab[start date]),
tab[start date] >= MIN(tab[start date]))))

Hola @bsas,

Me gustaría sugerirle que use la siguiente fórmula para calcular los ingresos totales.

Fórmula de medida:

Total revenue = SUMX(FILTER(ALL(Table),CONTAINS(CALENDAR([Start date],DATE([Start date].[Year],[Start date].[MonthNo]+[duration],[Start date].[Day])-1),[Date],MAX('Calendar'[Date]))),[amount])+0

1.PNG

Aviso: su resultado no es adecuado para su duración. En la tabla 1, muestra 4 y 2 como duración, por lo que la fecha de finalización debe ser 1/6/2017 y 13/5/2017. Pero el resultado de la tabla 2 no coincide con el rango de fechas.

Muestra de análisis:

End Date = DATE([Start date].[Year],[Start date].[MonthNo]+[duration],[Start date].[Day])

3.PNG

Table = SUMMARIZE(ADDCOLUMNS(CALENDAR(MIN(Table1[Start date]),MAX(Table1[End Date])),"Month",FORMAT([Date],"mmmm"),"Amount",SUMX(FILTER(ALL(Table1),CONTAINS(CALENDAR([Start date],[End Date]),[Date],[Date])),[amount])+0),[Amount],[Month])

2.PNG

Saludos,

Xiaoxin Sheng

bsas

En respuesta a v-shex-msft

Gracias @ v-shex-msft por la fórmula de fecha de finalización … me olvidé de ella. Lo usé en mi fórmula (no use su variante ya que tengo 4 categorías diferentes …).

Tengo un problema más en el que acabo de pensar … Utilizo la fórmula para calcular la fecha de inicio:

start date = IF(AND(MONTH('tab'[closedate]+21)=1,
YEAR('tab'[closedate]+21)=2018),DATE(2017,12,1),
DATE(2017,MONTH('tab'[closedate]+21),1))

Pero si la fecha es de 2018, la cambio al 1/12/2017, es incorrecta, ¿cómo puedo eliminar estos datos en tal caso (sin usar el filtro de informe, sino la fórmula)? ¿Debo usar la medida en tal caso y «allexept»?

En respuesta a bsas

Hola @bsas,

>>para la fórmula de fecha de finalización … lo olvidé. Lo usé en mi fórmula (no use su variante ya que tengo 4 categorías diferentes …).

No es muy claro para la lógica de su fórmula, ¿podría compartir la estructura de la tabla para un análisis futuro?

Saludos,

Xiaoxin Sheng

bsas

2 horas de búsqueda y una hora de lluvia de ideas y vyalya:

Billing = CALCULATE(SUM(tab[rate]),FILTER(tab,tab[start date] 
<= CALCULATE(MAX('Calendar'[allDates].[Date]))),
FILTER(tab,IF(tab[Duration]=1,tab[start date],
IF(tab[start date]+(tab[Duration]*31)>= DATE(2017,12,31),
DATE(2017,12,31),tab[start date]+(tab[Duration]*31)))
>= CALCULATE(MIN('Calendar'[allDates].[Date]))))

PD Gracias por publicar «Cómo sumar valores por período según el inicio y el final» por darme una idea de cómo cambiar mis pensamientos en la dirección correcta.

PPS Publicar esta solución solo porque quizás sea útil para alguien.

Deja un comentario

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