Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.
Check it out now!Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more
Estimados buenas tardes quiero solicitarles su ayuda para poder realizar la siguiente medida o sugenerencia para lograr lo siguiente
tengo los siguientes datos
empresa | fecha ini | fecha fin | valor mensual |
A | 01/01/2022 | 31/12/2024 | 4 |
A | 01/01/2021 | 31/12/2023 | 3 |
A | 01/04/2020 | 30/06/2020 | 2 |
B | 01/01/2020 | 31/03/2020 | 6 |
B | 01/01/2021 | 31/03/2021 | 5 |
y necesito obtener esto:
AÑO | suma valor del año depdendiendo la cantidad de meses |
2020 | 24 |
2021 | 51 |
2022 | 84 |
2023 | 84 |
2024 | 48 |
donde se tiene que sumar dependiendo del año y cantidad de meses que representa en ese año el valor mensual
gracias antemano
Solved! Go to Solution.
Supongo que la tabla de años está separada de la otra tabla, cree la siguiente medida:
Values per Month =
VAR temptable =
ADDCOLUMNS (
FILTER (
ADDCOLUMNS (
CROSSJOIN (
'Years_Table',
ADDCOLUMNS (
'DataValues',
"StartYear", YEAR ( 'DataValues'[Date ini] ),
"EndYear", YEAR ( 'DataValues'[End date] )
)
),
"Flag",
IF ( [StartYear] <= [Years] && [EndYear] >= [Years], 1, 0 )
),
[Flag] = 1
),
"TotalMonths",
SWITCH (
TRUE (),
[StartYear] = [Years],
DATEDIFF (
'DataValues'[Date ini],
MIN ( DATE ( [years], 12, 31 ), 'DataValues'[End date] ),
MONTH
) + 1,
[StartYear] > [Years], DATEDIFF ( DATE ( YEAR ( [StartYear] ), 12, 31 ) + 1, 'DataValues'[Date ini], MONTH ),
[StartYear] < [Years]
&& [EndYear] > [Years], DATEDIFF ( DATE ( [Years], 1, 1 ), DATE ( [Years], 12, 31 ), MONTH ) + 1,
[EndYear] = [Years], DATEDIFF ( DATE ( [years], 1, 1 ), 'DataValues'[End date], MONTH ) + 1
)
)
RETURN
SUMX ( tempTable, [TotalMonths] * 'DataValues'[Monthly Value] )
Ahora solo use esta medida con la columna de años:
Hola @manv23061997
¿Puedes explicar un poco mejor lo que quieres lograr? No entender lo que significa el valor de la suma del año dependiendo del número de meses.
¿Cómo obtienes 24 para 2020 y 51 para 2021?
Si te comento
El resultado 24 para 2020 lo obtengo de la esta forma:
En cuadro puedo observar que que hay un registro de la empresa "A" que tiene como fecha inicio : 01/04/2020 y ficha final: 30/06/2020 entre ese intervalo de fechas existen 3 meses de diferencia, por lo tanto 3 meses multiplicado por el valor mensual 2 me da 6 como resultado en el año 2020, luego tambien existe un registro "B" que tiene como fecha inicio: 01/01/2020 y fecha final :31/03/2020 entre esas fechas existe 3 meses de diferencia mulplicado por el valor mensual 6 me da como resultado 18.
Entonces en el año 2020 tengo como valor total 6 + 18=24
El resultado 51 para el año 2021 se obtiene de la misma forma solo considerando el valor total de los registros que tengan comprendido el año dentro del periodo de fecha inicio y fecha fin.
Supongo que la tabla de años está separada de la otra tabla, cree la siguiente medida:
Values per Month =
VAR temptable =
ADDCOLUMNS (
FILTER (
ADDCOLUMNS (
CROSSJOIN (
'Years_Table',
ADDCOLUMNS (
'DataValues',
"StartYear", YEAR ( 'DataValues'[Date ini] ),
"EndYear", YEAR ( 'DataValues'[End date] )
)
),
"Flag",
IF ( [StartYear] <= [Years] && [EndYear] >= [Years], 1, 0 )
),
[Flag] = 1
),
"TotalMonths",
SWITCH (
TRUE (),
[StartYear] = [Years],
DATEDIFF (
'DataValues'[Date ini],
MIN ( DATE ( [years], 12, 31 ), 'DataValues'[End date] ),
MONTH
) + 1,
[StartYear] > [Years], DATEDIFF ( DATE ( YEAR ( [StartYear] ), 12, 31 ) + 1, 'DataValues'[Date ini], MONTH ),
[StartYear] < [Years]
&& [EndYear] > [Years], DATEDIFF ( DATE ( [Years], 1, 1 ), DATE ( [Years], 12, 31 ), MONTH ) + 1,
[EndYear] = [Years], DATEDIFF ( DATE ( [years], 1, 1 ), 'DataValues'[End date], MONTH ) + 1
)
)
RETURN
SUMX ( tempTable, [TotalMonths] * 'DataValues'[Monthly Value] )
Ahora solo use esta medida con la columna de años:
Lo acabo de Probar y funciona, solo por curiosidad si en caso tuviese tabla calendario relacionadas con fecha de inicio y fecha fin , como se podria lograr el mismo resultado
Esto depende de cómo se relacionen.
¿Cuál es la relación activa?
Fecha Inicio
Pruebe la siguiente fórmula:
Values per Month =
VAR temptable =
ADDCOLUMNS (
FILTER (
ADDCOLUMNS (
CROSSJOIN (
DISTINCT('Calendar'[Year]),
ADDCOLUMNS (
'DataValues',
"StartYear", YEAR ( 'DataValues'[Date ini] ),
"EndYear", YEAR ( 'DataValues'[End date] )
)
),
"Flag",
IF ( [StartYear] <= [Year] && [EndYear] >= [Year], 1, 0 )
),
[Flag] = 1
),
"TotalMonths",
SWITCH (
TRUE (),
[StartYear] = [Year],
DATEDIFF (
'DataValues'[Date ini],
MIN ( DATE ( [year], 12, 31 ), 'DataValues'[End date] ),
MONTH
) + 1,
[StartYear] > [Year], DATEDIFF ( DATE ( YEAR ( [StartYear] ), 12, 31 ) + 1, 'DataValues'[Date ini], MONTH ),
[StartYear] < [Year]
&& [EndYear] > [Year], DATEDIFF ( DATE ( [Year], 1, 1 ), DATE ( [Year], 12, 31 ), MONTH ) + 1,
[EndYear] = [Year], DATEDIFF ( DATE ( [year], 1, 1 ), 'DataValues'[End date], MONTH ) + 1
)
)
RETURN
SUMX ( tempTable, [TotalMonths] * 'DataValues'[Monthly Value] )
No olvides aceptar la respuesta correcta para ayudar a los demás.