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

Next up in the FabCon + SQLCon recap series: The roadmap for Microsoft SQL and Maximizing Developer experiences in Fabric. All sessions are available on-demand after the live show. Register now

Reply
Syndicate_Admin
Administrator
Administrator

El total de DAX SUMX no funciona

Esta es mi medida. Quiero poder filtrar por la dimensión Fecha. A continuación, quiero recuperar la última fecha antes de la fecha MAX de la dimensión de fecha archivada. Esta fecha se utiliza para encontrar los valores de factprognosisLine que quiero. Esto debe calcularse para cada línea de la dimensión Trabajo. Después de eso, quiero sumar los valores. Utilizo SUMX para esto. desafortunadamente esto no está funcionando como quiero. El valor que obtengo es demasiado alto. Parece ser un error, pero puede que esté cometiendo un error.

¿Alguien puede ayudarme?

# Prognose opbrengsten OP =

VAR max_date = MAX('Date'[Date])

VAR _dateID =

CALCULATE(

MAX(factPrognosisLine[PrognosisDateID]),

FILTER(

Prognosis,

Prognosis[PrognosisFrozen] = "true" &&

Prognosis[PrognosisDate] <= MAX('Date'[Date])

),

ALL('Date')

)

RETURN

SUMX(

VALUES(Job),

CALCULATE(

SUM ( 'factPrognosis'[PrognosisTotalRevenuesRoughAmount_RCY] ),

FILTER(ALL(factPrognosisLine), factPrognosisLine[PrognosisDateID] = _dateID),

ALL('Date'),

FILTER(

Job,

Job[PostingDateClosing] > max_date ||

Job[PostingDateClosing] < DATE(1900, 1, 2)

)

)

)

Este es un ejemplo. Esta es la tabla completa.

sanderdeweert_0-1733733217096.png

Estas son las relaciones

sanderdeweert_1-1733733224577.png

10 REPLIES 10
Syndicate_Admin
Administrator
Administrator

Hola @sanderdeweert ,

Según la descripción, ¿está obteniendo los resultados correctos? Si ha resuelto el problema, considere Acéptelo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente. Si no es así, intente crear varias medidas para comprobar qué resultados del paso son incorrectos.

Measure =
VAR _dateID = CALCULATE( MAX(factPrognosisLine[PrognosisDateID]), FILTER( Prognosis, Prognosis[PrognosisFrozen] = "true" && Prognosis[PrognosisDate] <= MAX('Date'[Date]) ), ALL('Date') ) RETURN _dateID
Measure 2 = 
SUMX(
VALUES(Job),
CALCULATE(
SUM('factPrognosis'[PrognosisTotalRevenuesRoughAmount_RCY]),
FILTER(
ALL(factPrognosisLine),
factPrognosisLine[PrognosisDateID] = Measure
),
FILTER(
Job,
Job[PostingDateClosing] > max_date ||
Job[PostingDateClosing] < DATE(1900, 1, 2)
)
)
)

Función SUMX (DAX) - DAX | Microsoft Learn

Saludos

Sabiduría Wu

Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

La solución está funcionando, pero es extremadamente lenta. No sé cómo hacerlo más rápido.

Hola

Si hay demasiados datos en la tabla y la fórmula DAX es demasiado compleja, puede afectar al tiempo de cálculo.

Saludos

Sabiduría Wu

Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Syndicate_Admin
Administrator
Administrator

Posibles problemas y sugerencias
Filtrado por dimensión de fecha:

El uso de ALL('Date') en varios lugares podría estar haciendo que la medida ignore el contexto actual de la dimensión Date. Esto podría dar lugar a valores más altos de lo esperado, ya que quita todos los filtros de la tabla Date.
Cálculo de _dateID:

El cálculo de _dateID utiliza ALL('Date'), que elimina los filtros de la tabla Date. Es posible que esto no sea lo que desea si necesita respetar el contexto actual de la dimensión Fecha.
Cálculo de SUMX:

La función SUMX recorre en iteración VALUES(Job), pero el CALCULATE interno podría verse afectado por las instrucciones ALL('Date') y FILTER(ALL(factPrognosisLine),), lo que podría dar lugar a resultados inesperados.
Medida revisada
A continuación, se presenta una versión revisada de su medida que intenta abordar estos problemas:

Previsión de ingresos OP =
VAR max_date = MAX('Fecha'[Fecha])

VAR _dateID =
CALCULAR(
MAX(factPrognosisLine[PrognosisDateID]),
FILTRO(
Pronóstico
Prognosis[PrognosisFrozen] = "verdadero" &&
Prognosis[PrognosisDate] <= max_date
)
)

DEVOLUCIÓN
SUMX(
VALORES(Trabajo),
CALCULAR(
SUM('factPrognosis'[PrognosisTotalRevenuesRoughAmount_RCY]),
FILTRO(
ALL(factPrognosisLine),
factPrognosisLine[PrognosisDateID] = _dateID
),
FILTRO(
Trabajo
Job[PostingDateClosing] > max_date ||
FECHA <(1900, 1, 2)
)
)
)
Explicación
max_date: Esta variable captura la fecha máxima en el contexto actual de la dimensión Fecha.
_dateID: esta variable calcula el PrognosisDateID más reciente donde PrognosisFrozen es true y PrognosisDate es menor o igual que max_date, sin quitar el contexto Date.
Cálculo de SUMX: la función SUMX recorre en iteración VALUES(Job) y calcula la suma de PrognosisTotalRevenuesRoughAmount_RCY para cada trabajo, utilizando las tablas factPrognosisLine y Job filtradas.

Saludos
Saud Ansari
Si esta publicación ayuda, acéptala como una solución para ayudar a otros miembros a encontrarla. ¡Agradezco sus felicitaciones!

¡Gracias por tu respuesta a Quik!

El problema con esta solución es que solo obtengo las filas de trabajo donde de prognosisDate está dentro del contexto de fecha filtrado. Un ejemplo: Si filtro por junio de 2024, quiero obtener los valores de los últimos pronósticos antes de finales de junio de 2024. En el siguiente ejemplo sería el pronósticoFecha 13-03-2024 (13 de marzo de 2024).

sanderdeweert_0-1733734549177.png

Vamos a ajustar la medida para asegurarnos de que captura la última fecha de pronóstico antes del final del contexto de fecha filtrado.

Medida revisada
Previsión de ingresos OP =
VAR max_date = MAX('Fecha'[Fecha])

VAR _dateID =
CALCULAR(
MAX(factPrognosisLine[PrognosisDateID]),
FILTRO(
LLA(Pronóstico),
Prognosis[PrognosisFrozen] = "verdadero" &&
Prognosis[PrognosisDate] <= max_date
)
)

DEVOLUCIÓN
SUMX(
VALORES(Trabajo),
CALCULAR(
SUM('factPrognosis'[PrognosisTotalRevenuesRoughAmount_RCY]),
FILTRO(
ALL(factPrognosisLine),
factPrognosisLine[PrognosisDateID] = _dateID
),
FILTRO(
Trabajo
Job[PostingDateClosing] > max_date ||
FECHA <(1900, 1, 2)
)
)
)

Saludos
Saud Ansari
Si esta publicación ayuda, acéptala como una solución para ayudar a otros miembros a encontrarla. ¡Agradezco sus felicitaciones!


Eso todavía no funciona. La cantidad para cada trabajo es la correcta. El total no es correcto. Aquí es donde me sigo quedando atascado.

Reemplacé SUM(factprognosis) por factPrognosisLine[PrognosisTotalRevenues_PL]. Esto es lo mismo en ambas medidas. En el editor tabular solo suma 3 valores de este hecho.

sanderdeweert_0-1733741002268.png

sanderdeweert_1-1733741016173.png

Probemos otro enfoque para asegurarnos de que estamos sumando correctamente los valores de cada trabajo.

Medida revisada
Previsión de ingresos OP =
VAR max_date = MAX('Fecha'[Fecha])

VAR _dateID =
CALCULAR(
MAX(factPrognosisLine[PrognosisDateID]),
FILTRO(
LLA(Pronóstico),
Prognosis[PrognosisFrozen] = "verdadero" &&
Prognosis[PrognosisDate] <= max_date
)
)

DEVOLUCIÓN
SUMX(
VALORES(Trabajo),
CALCULAR(
SUM(factPrognosisLine[PrognosisTotalRevenues_PL]),
FILTRO(
ALL(factPrognosisLine),
factPrognosisLine[PrognosisDateID] = _dateID
),
FILTRO(
TODOS (Trabajo),
Job[PostingDateClosing] > max_date ||
FECHA <(1900, 1, 2)
)
)
)
Explicación
max_date: Captura la fecha máxima en el contexto actual de la dimensión Fecha.
_dateID: Calcula el PrognosisDateID más reciente donde PrognosisFrozen es true y PrognosisDate es menor o igual que max_date, utilizando ALL(Prognosis) para asegurarse de que se tienen en cuenta todas las fechas de pronóstico.
Cálculo de SUMX: recorre en iteración VALUES(Job) y calcula la suma de PrognosisTotalRevenues_PL para cada trabajo, utilizando las tablas factPrognosisLine y Job filtradas.
Cambios clave
ALL(Job): Garantiza que el filtro de la tabla Job se aplique correctamente dentro de la función CALCULATE.
factPrognosisLine[PrognosisTotalRevenues_PL]: utiliza la columna especificada para sumar los valores.
Consejos de depuración
Comprobar contexto de filtro: asegúrese de que el contexto de filtro se aplique correctamente mediante el uso de ALL para quitar filtros cuando sea necesario y VALUES para iterar sobre el contexto correcto.
Resultados intermedios: cree medidas intermedias para comprobar los valores de max_date, _dateID y los resultados del cálculo de SUMX para depurar dónde podría estar ocurriendo el problema.
Pruebe esta medida revisada y vea si resuelve el problema.

Saludos
Saud Ansari
Si esta publicación ayuda, acéptala como una solución para ayudar a otros miembros a encontrarla. ¡Agradezco sus felicitaciones!

Todavía no está funcionando. Ahora todavía faltan los valores de algunos trabajos (creo que porque no hay ALL (Date) en el filtrado) y los valores de los trabajos son demasiado altos

sanderdeweert_0-1733743331584.png

De alguna manera funciona cuando pongo un SUMX en otra medida =

# Pronóstico de ingresos V3 =
SUMX(
'Trabajo',
[# Previsión de ingresos OP]
)

Esta es la medida original
# Ingresos previstos OP =
VAR max_date = MÁXIMO('Fecha'[Fecha])
VAR _dateID =
CALCULAR(
MÁXIMO(factPrognosisLine[PrognosisDateID]),
FILTRO(
Pronóstico,
Pronóstico[Pronóstico congelado] = "Cierto" &&
Pronóstico[Fecha de pronóstico] <= MÁXIMO('Fecha'[Fecha])
),
TODO('Fecha')
)
DEVOLUCIÓN
SUMX(
VALORES(Trabajo),
CALCULAR(
factPrognosisLine[PrognosisTotalRevenues_PL],
FILTRO(TODO(factPrognosisLine), factPrognosisLine[PrognosisDateID] = _dateID),
TODO('Fecha'),
FILTRO(
Trabajo,
Trabajo[PublicaciónFechaCierre] > max_date ||
Trabajo[PublicaciónFechaCierre] < FECHA(1900, 1, 2)
)
)
)

Helpful resources

Announcements
New to Fabric survey Carousel

New to Fabric Survey

If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.

Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

March Power BI Update Carousel

Power BI Community Update - March 2026

Check out the March 2026 Power BI update to learn about new features.

Top Kudoed Authors