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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Norbertus
Helper V
Helper V

Pagos futuros por contrato y tipo de período

Hola

Un contrato tiene una fecha de inicio, fecha de finalización y un período de cuántas veces hay un pago (año, trimestre, mes)

Quiero saber cuándo se espera un pago futuro.

¿Alguien tiene una idea fantástica para resolver esta pregunta?

ContratoCantidadPeríodoFecha de inicioEnddate Resultadojan-21feb-21mrt-21apr-2121 de mayoJunio-21jul-21aug-21sep-21Oct-21nov-21dec-21jan-22feb-22mrt-22apr-22
A 100,00 eurosaño1-3-2021 100,00 euros 100,00 euros
B 150,00 eurosCuarto15-2-202131-12-2021 150,00 euros 150,00 euros 150,00 euros 150,00 euros
C 75,00 eurosMes13-1-202116-9-2021 75,00 euros 75,00 euros 75,00 euros 75,00 euros 75,00 euros 75,00 euros 75,00 euros 75,00 euros 75,00 euros
D 85,00 eurosMes1-5-2021 85,00 euros 85,00 euros 85,00 euros 85,00 euros 85,00 euros 85,00 euros 85,00 euros 85,00 euros 85,00 euros 85,00 euros 85,00 euros 85,00 euros

Tengo mucha curiosidad

con saludos amables

1 ACCEPTED SOLUTION

Hey @Norbertus ,

Utilizo esta instrucción DAX para crear una tabla

Fact Projection = 
var CalendarMax = MAX( 'Calendar'[Date] )
var fact = 
SELECTCOLUMNS(
    GENERATE(
        'Billing'
        , var ContractStart = 'Billing'[Begindate]
        var ContractEnd = IF(ISBLANK('Billing'[Untildate]) , CalendarMax , 'Billing'[Untildate] )
        var MonthUntilContractEnd = DATEDIFF( ContractStart , ContractEnd , MONTH )
        var NoOfMonth = 
            SWITCH( 
                'Billing'[Period]
                , "Month" , 1
                , "Quarter" , 3
                , "Year" , 12
            )
        return
            ADDCOLUMNS(
                GENERATESERIES( 1 , TRUNC( DIVIDE( MonthUntilContractEnd , NoOfMonth ) , 0) + 1 , 1 )
                , "Date Projected" , DATE( YEAR( [Begindate] ) , MONTH( 'Billing'[Begindate] ) + ( [Value] - 1 ) * NoOfMonth , DAY( 'Billing'[Begindate] ) )
            )
    )
    , "Contrac" , [Contract]
    , "Amount" , [Amount]
    , "Date Projected" , [Date Projected]
)
return
fact

Así es como se ven las relaciones como la que creé en función de su archivo de ejemplo:

image.png

Y así es como se ve un objeto visual de matriz

  • Contrato de la tabla Facturación en filas
  • Año y mes de la tabla Calendario en columnas
  • Importe de la nueva tabla de hechos como Valores

image.png

Cómo funciona
Creo una tabla "Fact Projection" basada en la información de la tabla de facturación, el número de filas por contrato se determina por el período del contrato y el final del contrato o si falta el final del contrato al final del calendario. Básicamente el número de meses está determinado por una división de enteros, el número de meses dividido por los monhts que están formando el período.

Entonces estoy usando esta información para "calcular" la fecha de proyección. Muy útil es el siguiente DAX

Date( 2021 , 1 + 12 , 11 )

Crea la fecha del 11 de enero de 2022.

Esperemos que esto proporciona lo que está buscando.

saludos

Tom



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hey @Norbertus ,

aquí encontrarás un blog que describe mi solución con algunas palabras más:

Eventos y proyecciones - Mincing Data - Obtener información de los datos (minceddata.info)

y aquí creo la tabla de hechos additonal usando Power Query y algunos hacky M:

Eventos y proyecciones, utilizando M - Mincing Data - Obtener información de datos (minceddata.info)

Tal vez te interese esto.

saludos

Tom

TomMartens
Super User
Super User

Hey @Norbertus ,

por favor prepare un archivo pbix con datos de muestra, que todavía refleja su modelo de datos, al menos la tabla que contiene la información del contrato. Cargue el archivo en onedrive o Dropbox y comparta el enlace. Si está utilizando un xlsx para preparar los datos de ejemplo y compartir el vínculo.

saludos
Tom



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany

Hey @Norbertus ,

Utilizo esta instrucción DAX para crear una tabla

Fact Projection = 
var CalendarMax = MAX( 'Calendar'[Date] )
var fact = 
SELECTCOLUMNS(
    GENERATE(
        'Billing'
        , var ContractStart = 'Billing'[Begindate]
        var ContractEnd = IF(ISBLANK('Billing'[Untildate]) , CalendarMax , 'Billing'[Untildate] )
        var MonthUntilContractEnd = DATEDIFF( ContractStart , ContractEnd , MONTH )
        var NoOfMonth = 
            SWITCH( 
                'Billing'[Period]
                , "Month" , 1
                , "Quarter" , 3
                , "Year" , 12
            )
        return
            ADDCOLUMNS(
                GENERATESERIES( 1 , TRUNC( DIVIDE( MonthUntilContractEnd , NoOfMonth ) , 0) + 1 , 1 )
                , "Date Projected" , DATE( YEAR( [Begindate] ) , MONTH( 'Billing'[Begindate] ) + ( [Value] - 1 ) * NoOfMonth , DAY( 'Billing'[Begindate] ) )
            )
    )
    , "Contrac" , [Contract]
    , "Amount" , [Amount]
    , "Date Projected" , [Date Projected]
)
return
fact

Así es como se ven las relaciones como la que creé en función de su archivo de ejemplo:

image.png

Y así es como se ve un objeto visual de matriz

  • Contrato de la tabla Facturación en filas
  • Año y mes de la tabla Calendario en columnas
  • Importe de la nueva tabla de hechos como Valores

image.png

Cómo funciona
Creo una tabla "Fact Projection" basada en la información de la tabla de facturación, el número de filas por contrato se determina por el período del contrato y el final del contrato o si falta el final del contrato al final del calendario. Básicamente el número de meses está determinado por una división de enteros, el número de meses dividido por los monhts que están formando el período.

Entonces estoy usando esta información para "calcular" la fecha de proyección. Muy útil es el siguiente DAX

Date( 2021 , 1 + 12 , 11 )

Crea la fecha del 11 de enero de 2022.

Esperemos que esto proporciona lo que está buscando.

saludos

Tom



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany

no @TomMartens

Se ve genial. Muchas gracias

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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