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.
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?
Contrato | Cantidad | Período | Fecha de inicio | Enddate | Resultado | jan-21 | feb-21 | mrt-21 | apr-21 | 21 de mayo | Junio-21 | jul-21 | aug-21 | sep-21 | Oct-21 | nov-21 | dec-21 | jan-22 | feb-22 | mrt-22 | apr-22 | |
A | 100,00 euros | año | 1-3-2021 | 100,00 euros | 100,00 euros | |||||||||||||||||
B | 150,00 euros | Cuarto | 15-2-2021 | 31-12-2021 | 150,00 euros | 150,00 euros | 150,00 euros | 150,00 euros | ||||||||||||||
C | 75,00 euros | Mes | 13-1-2021 | 16-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 euros | Mes | 1-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
Solved! Go to 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:
Y así es como se ve un objeto visual de matriz
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
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
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
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:
Y así es como se ve un objeto visual de matriz
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
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
1 | |
1 |