Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Anonymous
Not applicable

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

Te lo agradezco en avanzado.

1 ACCEPTED SOLUTION

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:

1.png
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.

View solution in original post

12 REPLIES 12
v-rzhou-msft
Community Support
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

Anonymous
Not applicable

@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

¡Agradezco toda la ayuda!

Brad

Anonymous
Not applicable

@Ashish_Mathur @RicoZhou @AntrikshSharma

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!

Hola @walkerb32

Construyo una mesa como la tuya para hacerme una prueba.

1.png

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 )
)

2.png

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 )

Resultado:

3.png

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.

Anonymous
Not applicable

@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

)

)

)

Resultado:

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

Archivo PBI

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:

1.png
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.

Anonymous
Not applicable

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!

Brad

Anonymous
Not applicable

@RicoZhou

¡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!

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
https://www.linkedin.com/in/excelenthusiasts/
Ashish_Mathur
Super User
Super User

Hola

Muestre el resultado esperado con una explicación.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
v-rzhou-msft
Community Support
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.

AntrikshSharma
Community Champion
Community Champion

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

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors