cancel
Showing results for
Did you mean:
Helper I

## CALCULATETABLE para iterar ingresos y gastos a lo largo de los períodos mensuales mediante fechas de inicio y finalización.

Hola

Estoy tratando de CALCULATETABLE (muestra a continuación) para iterar a través de la FIRSTDATE (START_DATE) y LASTDATE (END_DATE) y línea recta REVENUE y LABOR durante cada período mensual para que pueda vincular los datos del proyecto propuestos a los datos reales mensuales a una tabla de dimensiones de fecha.

DATOS PROPUESTOS DEL PROYECTO

PROJ_ID START_DATE END_DATE LABOR DE INGRESOS

11111 8/15/2020 8/14/2021 1,000,000 750,000

11111 8/15/2021 8/14/2022 1,000,000 750,000

11112 8/15/2020 8/14/2021 1,000,000 750,000

11113 8/15/2020 8/14/2021 1,000,000 750,000

1 ACCEPTED SOLUTION
Community Support

Hola @walkerb32

Construyo una tabla como la tuya y agredo una columna calculada.

``````Rev & Labor =
VAR baseTable =
DISTINCT ( ( 'Post Award Tracking v2'[Project Code] ) )
RETURN
GENERATE (
baseTable,
VAR PoP_Start =
MIN ( 'Post Award Tracking v2'[POP Start] )
VAR PoP_End =
MAX ( 'Post Award Tracking v2'[POP End] )
VAR MonthDiff =
DATEDIFF ( PoP_Start, PoP_End, MONTH )
VAR Avg_Rev =
DIVIDE (
CALCULATE ( SUM ( 'Post Award Tracking v2'[Revenue_TEST] ) ),
MonthDiff
)
VAR Revenue =
CALCULATE ( SUM ( 'Post Award Tracking v2'[Revenue_TEST] ) )
VAR Avg_LABOR =
DIVIDE ( CALCULATE ( SUM ( 'Post Award Tracking v2'[Labor_TEST] ) ), MonthDiff )
VAR Labor =
CALCULATE ( SUM ( 'Post Award Tracking v2'[Labor_TEST] ) )
RETURN
GENERATE (
GENERATESERIES ( PoP_Start, PoP_End, 1 ),
VAR inc = [Value]
VAR _Month =
MONTH ( [Value] )
RETURN
ROW (
"PoP Start", PoP_Start,
"PoP End", PoP_End,
"Months", MonthDiff,
"Avg Rev", Avg_Rev,
"Revenue", Revenue,
"Avg Labor", Avg_LABOR,
"Labor", Labor,
"Month", _Month
)
)
)``````

``````Min each month date =
IF (
AND (
MONTH ( 'Rev & Labor'[Value] ) = MONTH ( 'Rev & Labor'[PoP Start] ),
YEAR ( 'Rev & Labor'[Value] ) = YEAR ( 'Rev & Labor'[PoP Start] )
),
'Rev & Labor'[PoP Start],
CALCULATE (
MIN ( 'Rev & Labor'[Value] ),
FILTER (
'Rev & Labor',
'Rev & Labor'[Month] = EARLIER ( 'Rev & Labor'[Month] )
&& YEAR ( 'Rev & Labor'[Value] ) = EARLIER ( 'Rev & Labor'[Value].[Year] )
)
) + 20
)``````

Cree un objeto visual de tabla para mostrar el resultado:

Puede descargar el archivo pbix desde este enlace: CALCULATETABLE para iterar ingresos y gastos a lo largo de los períodos mensuales mediante fechas d...

Saludos

Rico Zhou

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

12 REPLIES 12
Community Support

Hola @walkerb32

¿Podría decirme si su problema ha sido resuelto? Si es así, acédi es la solución. Más gente se beneficiará de ello. O todavía está confundido al respecto, por favor proporcione más detalles sobre su tabla y su problema o compártame con su archivo pbix de su Onedrive for Business.

Saludos

Rico Zhou

Helper I

@RicoZhou Gracias y está MUY cerca.

Un último elemento: en el ejemplo que proporcionó (que es impresionante, BTW) cada proyecto recorre en iteración las fechas de inicio y finalización de MIN y MAX Period of Performance (POP) Sart y POP End Dates en lugar de las fechas de inicio y finalización individuales de los proyectos. ¿Hay alguna manera de calcular la tabla según la fecha de inicio y finalización de cada proyecto?

Por ejemplo, el proyecto 25011 solo debe tener 6 partidas individuales:

Código de proyecto POP Iniciar POP Fin Número de líneas a Ingresos Promedios y Trabajo
11139 10/1/2014 9/30/2015 11
15147 7/21/2014 7/21/2015 12
15160 2/28/2015 2/15/2016 12
19031 2/16/2015 2/15/2016 12
19032 3/9/2015 3/8/2016 12
24005 7/1/2015 6/30/2016 11
25011 5/1/2015 11/30/2015 6
36007 5/1/2015 9/30/2016 16

Helper I

Utilizando el proyecto 11113 como ejemplo, los resultados serían:

PROJECT_ID LABOR DE INGRESOS DE PERIODO
11113 9/18/2018 83,333 62,500
11113 10/18/2018 83,333 62,500
11113 11/17/2018 83,333 62,500
11113 12/17/2018 83,333 62,500
11113 1/16/2019 83,333 62,500
11113 2/15/2019 83,333 62,500
11113 3/17/2019 83,333 62,500
11113 4/16/2019 83,333 62,500
11113 5/16/2019 83,333 62,500
11113 6/15/2019 83,333 62,500
11113 7/15/2019 83,333 62,500
11113 8/14/2019 83,333 62,500

¡Espero que esto ayude!

Community Support

Hola @walkerb32

Construyo una mesa como la tuya para hacerme una prueba.

Cree un período para la tabla 11111.

``````Period for 11111 =
GENERATE (
GENERATESERIES ( 1, 23 ),
VAR inc = [Value]
RETURN
ROW ( "ID", "11111", "Period", DATE ( 2020, 07 + inc, 18 ) + 31 )
)``````

Construir dos medidas:

``````REVENUE =
VAR _Re =
CALCULATE (
SUM ( 'PROPOSED PROJECT DATA'[REVENUE] ),
FILTER (
'PROPOSED PROJECT DATA',
'PROPOSED PROJECT DATA'[START_DATE] <= MAX ( 'Period for 11111'[Period] )
&& 'PROPOSED PROJECT DATA'[END_DATE] >= MAX ( 'Period for 11111'[Period] )
&& 'PROPOSED PROJECT DATA'[PROJ_ID] = MAX ( 'Period for 11111'[ID] )
)
)
RETURN
DIVIDE ( _Re, 12 )``````
``````LABOR =
VAR _LA =
CALCULATE (
SUM ( 'PROPOSED PROJECT DATA'[LABOR] ),
FILTER (
'PROPOSED PROJECT DATA',
'PROPOSED PROJECT DATA'[START_DATE] <= MAX ( 'Period for 11111'[Period] )
&& 'PROPOSED PROJECT DATA'[END_DATE] >= MAX ( 'Period for 11111'[Period] )
&& 'PROPOSED PROJECT DATA'[PROJ_ID] = MAX ( 'Period for 11111'[ID] )
)
)
RETURN
DIVIDE ( _LA, 12 )``````

Puede descargar el archivo pbix desde este enlace: CALCULATETABLE para iterar ingresos y gastos a lo largo de los períodos mensuales utilizando la fec...

Saludos

Rico Zhou

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Helper I

@RicoZhou ¡Estoy cerca! El siguiente código se salta un mes. Debería iterar durante un período de 60 meses, pero estoy recibiendo 31. ¡Los ingresos medios sobre la tabla equivalen a los ingresos totales! Has sido una gran ayuda/inspiración. Toda su ayuda ha sido muy apreciada.

CERRAR ?

Var baseTable (Var baseTable) ( VAR baseTable)

DISTINCT( ( 'Seguimiento posterior a la adjudicación v2'[Código de proyecto] ) )

devolución

GENERAR (

baseTable,

VAR PoP_Start á [PoP_Start] //MIN

VAR PoP_End á [PoP_End] //MAX

Meses de VAR ?

DATEDIFF ( PoP_Start, PoP_End, MES ) -- número de meses de cálculo para el proyecto

SER Months_Offset ?

DATEDIFF (PoP_Start, PoP_End, MES ) - no funcionó

VAR Avg_Rev ?

DIVIDE ( CALCULATE ( SUM ( 'Seguimiento posterior a la adjudicación v2'[Ingresos] ) ), Meses )

Ingresos del VAR ( VAR Revenue)

CALCULAR ( SUM ( 'Seguimiento posterior a la adjudicación v2'[Ingresos] ) )

devolución

GENERAR (

GENERATESERIES ( PoP_Start, PoP_End,Months ), -- esta es la parte con la que estoy teniendo problemas, saltándose un mes

VAR inc á [Valor]

devolución

ROW (

"Proj_ID", baseTable,

"PoP Start", PoP_Start,

"PoP End", PoP_End,

"Meses", Meses,

"Avg Rev", Avg_Rev,

"Ingresos", Ingresos

)

)

)

(no se puede averiguar cómo agregar imágenes :()

Community Support

Hola @walkerb32

Construyo una tabla como la tuya y agredo una columna calculada.

``````Rev & Labor =
VAR baseTable =
DISTINCT ( ( 'Post Award Tracking v2'[Project Code] ) )
RETURN
GENERATE (
baseTable,
VAR PoP_Start =
MIN ( 'Post Award Tracking v2'[POP Start] )
VAR PoP_End =
MAX ( 'Post Award Tracking v2'[POP End] )
VAR MonthDiff =
DATEDIFF ( PoP_Start, PoP_End, MONTH )
VAR Avg_Rev =
DIVIDE (
CALCULATE ( SUM ( 'Post Award Tracking v2'[Revenue_TEST] ) ),
MonthDiff
)
VAR Revenue =
CALCULATE ( SUM ( 'Post Award Tracking v2'[Revenue_TEST] ) )
VAR Avg_LABOR =
DIVIDE ( CALCULATE ( SUM ( 'Post Award Tracking v2'[Labor_TEST] ) ), MonthDiff )
VAR Labor =
CALCULATE ( SUM ( 'Post Award Tracking v2'[Labor_TEST] ) )
RETURN
GENERATE (
GENERATESERIES ( PoP_Start, PoP_End, 1 ),
VAR inc = [Value]
VAR _Month =
MONTH ( [Value] )
RETURN
ROW (
"PoP Start", PoP_Start,
"PoP End", PoP_End,
"Months", MonthDiff,
"Avg Rev", Avg_Rev,
"Revenue", Revenue,
"Avg Labor", Avg_LABOR,
"Labor", Labor,
"Month", _Month
)
)
)``````

``````Min each month date =
IF (
AND (
MONTH ( 'Rev & Labor'[Value] ) = MONTH ( 'Rev & Labor'[PoP Start] ),
YEAR ( 'Rev & Labor'[Value] ) = YEAR ( 'Rev & Labor'[PoP Start] )
),
'Rev & Labor'[PoP Start],
CALCULATE (
MIN ( 'Rev & Labor'[Value] ),
FILTER (
'Rev & Labor',
'Rev & Labor'[Month] = EARLIER ( 'Rev & Labor'[Month] )
&& YEAR ( 'Rev & Labor'[Value] ) = EARLIER ( 'Rev & Labor'[Value].[Year] )
)
) + 20
)``````

Cree un objeto visual de tabla para mostrar el resultado:

Puede descargar el archivo pbix desde este enlace: CALCULATETABLE para iterar ingresos y gastos a lo largo de los períodos mensuales mediante fechas d...

Saludos

Rico Zhou

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Helper I

Hola @RicoZhou!

Un último elemento: en el ejemplo que proporcionó (que es impresionante, BTW) cada proyecto recorre en iteración las fechas de inicio y finalización de MIN y MAX Period of Performance (POP) Sart y POP End Dates en lugar de las fechas de inicio y finalización individuales de los proyectos. ¿Hay alguna manera de calcular la tabla según la fecha de inicio y finalización de cada proyecto?

Por ejemplo, el proyecto 25011 solo debe tener 6 partidas individuales:

Código de proyecto POP Iniciar POP Fin Número de líneas a Ingresos Promedios y Trabajo
11139 10/1/2014 9/30/2015 11
15147 7/21/2014 7/21/2015 12
15160 2/28/2015 2/15/2016 12
19031 2/16/2015 2/15/2016 12
19032 3/9/2015 3/8/2016 12
24005 7/1/2015 6/30/2016 11
25011 5/1/2015 11/30/2015 6
36007 5/1/2015 9/30/2016 16

¡Aprecio toda la ayuda!

Helper I

¡Muchas gracias! Está cerca... ¿Hay alguna manera de hacerlo dinámicamente? Sé que es un poco descuidado, pero el intento de código está abajo. ¿Puedo utilizar GENERATESERIES en función de las columnas inicial y final? Además, en lugar de medidas, me gustaría calcular una tabla para que otros la usen.

Muestra

Nombre del proyecto de código de proyecto POP Iniciar Revenue_TEST Labor_TEST

15147 SATCOM San 7/21/2014 7/20/2015 \$1,000,000 \$750,000

11139 WAPA Departamento de 10/1/2014 9/30/2015 \$1,000,000 \$750,000

19031 NAVAIR 7.0 2/16/2015 2/15/2016 \$1,000,000 \$750,000

15160 Kwaj Seguridad y 2/28/2015 2/15/2016 \$1,000,000 \$750,000

19032 Análisis Logístico 3/9/2015 3/8/2016 \$1,000,000 \$750,000

25011 Oak Ridge - DOE 5/1/2015 11/30/2015 \$1,000,000 \$750,000

36007 NASA Lab Services 5/1/2015 9/30/2016 \$1,000,000 \$750,000

24005 Fusion Center IDS 7/1/2015 6/30/2016 \$1,000,000 \$750,000

PRUEBA DE LA PRUEBA DE LA PRUEBA DE

Var baseTable (Var baseTable) ( VAR baseTable)

CALCULATETABLE ( SUMMARIZECOLUMNS ( 'Seguimiento de premios posteriores v2'[Código de proyecto] ) )

devolución

GENERAR (

baseTable,

Meses de VAR ?

DATEDIFF ( [Medida de inicio POP], [Medida final POP], DIA )

VAR Start_Date - [Medida de inicio POP]

VAR End_Date - [Medida final POP]

VAR AvgRev ?

DIVIDE ( [Revenue_Measure], Meses, 0 )

Ingresos de VAR : [Revenue_Measure] //VAR GenSeries - GENERATESERIES([POP Start Measure],[POP End Measure],Months)

devolución

ROW (

"Inicio", Start_Date,

"Fin", End_Date,

"Meses", Meses,

"Avg Rev", AvgRev,

"Ingresos", Ingresos

)

)

¡Muchas gracias por su ayuda!

Super User III

Hola

No puedo entender tu resultado. ¿Cómo ha llegado a la fecha en la columna Período y los números de las últimas 2 columnas?

Regards,
Ashish Mathur
http://www.ashishmathur.com
Super User III

Hola

Regards,
Ashish Mathur
http://www.ashishmathur.com
Community Support

Hola @walkerb32

¿Podría darme más detalles sobre su lógica de cálculo? Puede mostrarme el resultado que desea que la tabla que pueda necesitar usar y las relaciones que construye. O puedes compartirme tu archivo pbix por tu Onedrive for Business.

Saludos

Rico Zhou

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Super User II
No está claro lo que está tratando de hacer, tratar de pasar más tiempo para explicar su requisito con más detalles.

Thank you,
Antriksh Sharma

Announcements

#### Happy New Year from Power BI

This is a must watch for a message from Power BI!