Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Calling all Data Engineers! Fabric Data Engineer (Exam DP-700) live sessions are back! Starting October 16th. Sign up.
Hola
Estoy intentando crear una medida total acumulativa que se detenga después de la última transacción en la tabla de hechos (la fecha en la tabla de dimensiones de fecha continúa en el futuro):
La medida actual (sin intentar detener el total acumulado):
Total Price running total in DateKey =
CALCULATE(
SUM('Fact Transaction'[Total Price]),
FILTER(
CALCULATETABLE(
SUMMARIZE(
'Dim YearMonth'
,'Dim YearMonth'[Sort]
,'Dim YearMonth'[DateKey]
),
ALLSELECTED('Dim YearMonth')
),
ISONORAFTER(
'Dim YearMonth'[Sort], MAX('Dim YearMonth'[Sort]), DESC,
'Dim YearMonth'[DateKey], MAX('Dim YearMonth'[DateKey]), DESC
)
)
)
Después de revisar otras publicaciones en el foro, traté de detener el total acumulado agregando:
&& 'Dim YearMonth'[DateKey] <= MAX('Fact Transaction'[Date Key])
Así:
Total Price running total in DateKey =
CALCULATE(
SUM('Fact Transaction'[Total Price]),
FILTER(
CALCULATETABLE(
SUMMARIZE(
'Dim YearMonth'
,'Dim YearMonth'[Sort]
,'Dim YearMonth'[DateKey]
),
ALLSELECTED('Dim YearMonth')
),
ISONORAFTER(
'Dim YearMonth'[Sort], MAX('Dim YearMonth'[Sort]), DESC,
'Dim YearMonth'[DateKey], MAX('Dim YearMonth'[DateKey]), DESC
)
&& 'Dim YearMonth'[DateKey] <= MAX('Fact Transaction'[Date Key])
)
)
Eso funcionó, pero causó problemas con el total acumulado: los meses sin transacciones ahora no muestran el total acumulado a diferencia de antes:
He creado un PBIX simulado con los datos, cualquier ayuda sobre esto sería muy apreciada, ya que ahora se ha invertido mucho tiempo en ello:
Total acumulado Issue.pbix
Gracias
Si desea conservar el filtro en el elemento 3, pruebe esto:
sjoerdvn =
VAR dis = ALLSELECTED('Dim Item')
VAR ldf = CALCULATE(MAX('Dim YearMonth'[Sort]), ALL('Dim YearMonth'),TREATAS(CALCULATETABLE(VALUES('Fact Transaction'[Date Key]), ALL(), dis), 'Dim YearMonth'[DateKey]))
VAR lds = MAX('Dim YearMonth'[Sort])
RETURN
IF (lds <= ldf
,CALCULATE(
SUM('Fact Transaction'[Total Price]),
ALL('Dim YearMonth'),
'Dim YearMonth'[Sort] <= lds)
)
Muchas gracias @sjoerdvn , el único problema es que el total acumulado finaliza para cada línea en la última transacción del artículo que tiene la última fecha de transacción.
Sin embargo, acepto su respuesta como solución porque es una mejora significativa con respecto a lo que he podido lograr hasta ahora.
Estaba asumiendo que eso era lo que querías...
Pruebe esto
sjoerdvn =
VAR ldf = CALCULATE(MAX('Dim YearMonth'[Sort]), ALL('Dim YearMonth'),TREATAS(CALCULATETABLE(VALUES('Fact Transaction'[Date Key]),ALL('Dim YearMonth')), 'Dim YearMonth'[DateKey]))
VAR lds = MAX('Dim YearMonth'[Sort])
RETURN
IF (lds <= ldf
,CALCULATE(
SUM('Fact Transaction'[Total Price]),
ALL('Dim YearMonth'),
'Dim YearMonth'[Sort] <= lds)
)
10/10! ¡Muchas gracias, ahora puedo pasar la tarde entendiendo lo que hiciste!
Ya veo.
Si desea incluir los meses en los que item3 tiene un valor, cambie la primera línea por esta:
VAR ldf = CALCULATE(MAX('Dim YearMonth'[Sort]), ALL('Dim YearMonth'),TREATAS(CALCULATETABLE(VALUES('Fact Transaction'[Date Key]), ALL()), 'Dim YearMonth'[DateKey]))
Además, tenga en cuenta que PBIX no se puede descargar desde allí ...
Total Price running total in DateKey =
VAR ldf = CALCULATE(MAX('Dim YearMonth'[Sort]), ALL(), CROSSFILTER('Fact Transaction'[DateKey],'Dim YearMonth'[DateKey],Both))
VAR lds = MAX('Dim YearMonth'[Sort])
RETURN
IF (lds <= ldf
CALCULATE(
SUM('Fact Transaction'[Total Price]),
ALL('Dim YearMonth'),
'Dim YearMonth'[Sort] <= lds)
)
Todavía no hay alegría 😞
Este enlace de Dropbox debería funcionar:
https://www.dropbox.com/t/yqNdgpW40NocCAgU
Ya veo. Por lo tanto, no es una dimensión de fecha. Además, no podemos usar la clave de fecha para determinar los valores acumulados. Para mayor eficiencia, recomendaría usar una clave que esté ordenada, porque ahora necesitamos una búsqueda adicional. Publicaré algo de DAX a continuación.
¿Qué aspecto tiene la tabla de dimensiones de fechas? Estaba asumiendo que DateKey era una fecha o un número entero.
@sjoerdvn , la DateKey es un campo de texto (concatenación de año, guión y mes):
No puedo usar un campo de fecha normal porque los requisitos de mi usuario significan que tengo que establecer el año como 1, 2, 3, etc. para poder colocar elementos de diferentes años uno encima del otro en un gráfico de líneas dependiendo de si es su primer año de existencia, segundo año de existencia, etc.
Tengo un archivo .pbix simulado configurado aquí: PBIX
Simplemente calcule primero la fecha máxima en la tabla de hechos, ignorando todos los filtros.
Además, creo que la medida puede ser mucho más sencilla
Total Price running total in DateKey =
VAR ldf = CALCULATE(MAX('Fact Transaction'[Date Key]), ALL())
VAR lds = MAX('Dim YearMonth'[DateKey])
RETURN
IF (lds <= ldf
CALCULATE(
SUM('Fact Transaction'[Total Price]),
ALL('Dim YearMonth'),
'Dim YearMonth'[DateKey] <= lds)
)
Hola @sjoerdvn ,
Consulte la captura de pantalla a continuación después de la implementación. El total acumulado parece dejar de funcionar y comienzan a aparecer valores para, por ejemplo, '1-Jan' a pesar de que este período es anterior al inicio de las transacciones para cualquiera de los artículos:
CumulativeTotal =
VAR LastTransDate = [LastTransactionDate] (here you calculate last transaction date with Calculate ..ALL)
RETURN
CALCULATE(
SUM('FactTable'[Amount]),
FILTER(
ALLSELECTED('DateTable'),
'DateTable'[Date] <= MAX('DateTable'[Date]) &&
'DateTable'[Date] <= LastTransDate
)
)
Hola @Alex87 ,
Consulte la implementación en la captura de pantalla a continuación. El total acumulado parece dejar de funcionar y los valores parecen aparecer para, por ejemplo, '1-Jan' a pesar de que este período es anterior al inicio de las transacciones para cualquiera de los elementos:
Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!
Check out the October 2025 Power BI update to learn about new features.