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]))))
v-shex-msft
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
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])
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])
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»?
v-shex-msft
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.