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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Fer20201
Regular Visitor

Error en medida SUMX

Buenas días.

Tengo esta media, donde pretendo hacer la operacion de la cantidad x el precio medio. Si os fijais la columna llamada "columana" es una columna calculada y es la que me da el calculo correcto, pero la medida me lo multiplica x 2, Sabéis porque?

 

Total coste componente =
  SUMX  ('TodosRebajesconfecha', 'TodosRebajesconfecha'[xcant_reb] * TodosRebajesconfecha[xprec_med_coste])
 

Fer20201_0-1716549077141.png

 

 
2 REPLIES 2
Fer2020
Regular Visitor

Gracias por contestar.

El problema lo tengo en con el campo precio medio, como puedes observar, la medida M_xprec_med_coste_Total, es la que está duplicando este campo la columna "Precio medio" es la correcto, el problema está al usar  la medida "M_xprec_med_coste_Total"

 

Fer2020_0-1717757075611.png

 

Syndicate_Admin
Administrator
Administrator

Hola,@Fer20201 , Hola,@lbendlin ,

Gracias por su preocupación sobre este tema.

¡Tu respuesta es excelente!
Y me gustaría compartir algunas soluciones adicionales a continuación.

De acuerdo con su descripción, se utiliza el mismo código de Dax en la columna calculate y la measure, pero se obtienen resultados diferentes, donde measure da resultados *2.

Esto se debe a que en las columnas de medición y cálculo, su entorno computacional es diferente.

El entorno de cálculo de measure es el contexto de filtrado:

El contexto de filtrado es el contexto (intervalo de cálculo) definido por una condición de filtrado creada por el usuario u otra función de Dax

medida en el contexto de filtrado actual se refiere al cálculo de un tiempo

Mientras que el filtrado de campo por filtro o Silcer, dependiendo de las condiciones de filtrado y el código dax afectará el resultado de la medida, es decir, la medida es un escalar (valor único) que cambia dinámicamente.

El entorno para calcular la columna es el contexto de fila.

Contexto de fila simplemente significa la fila actual, y la columna de cálculo proporcionará un contexto para cada fila actual para calcular el resultado.

Las columnas calculadas se calculan durante la actualización de datos y tienen valores estáticos.
Aquí está la prueba que realicé
El código es el siguiente:

M_ = 
SUMX('TodosRebajesconfecha','TodosRebajesconfecha'[quantity]*'TodosRebajesconfecha'[discounted price])

C_ = 
SUMX('TodosRebajesconfecha','TodosRebajesconfecha'[quantity]*'TodosRebajesconfecha'[discounted price])

El contexto actual se puede cambiar mediante la función calculate: el contexto de la fila se cambia al contexto de filtrado
Así:

C_2 = 
 CALCULATE(SUMX('TodosRebajesconfecha','TodosRebajesconfecha'[quantity]*'TodosRebajesconfecha'[discounted price]))

M_2 = 
 CALCULATE(SUMX('TodosRebajesconfecha','TodosRebajesconfecha'[quantity]*'TodosRebajesconfecha'[discounted price]))

Los resultados de la prueba son los siguientes:

Sin usar la función calcular, C_ realizó 'TodosRebajesconfecha'[cantidad]*'TodosRebajesconfecha' para cada fila, y finalmente realizó una suma de los valores de cada fila, devolviendo el número total de ventas con descuento de todos los productos, y este resultado no se vio afectado por el filtrado externo Este resultado no se ve afectado por las condiciones de filtrado externo, y siempre es el valor constante de 37535.24.

Después del uso de la función calculte, el entorno del cálculo cambia, C_2 se convierte en el mismo que la medida, calcula la cantidad correcta de ventas con descuento para cada producto y se verá afectado por los criterios de filtrado

vjtianmsft_0-1716800035926.png

vjtianmsft_1-1716800046829.png

Puedes comprobar tu código siguiendo mis sugerencias a continuación

  1. Compruebe el entorno computacional del código DAX que está usando.
  2. Utilice la función laculate para modificar el entorno computacional.

  1. Puede dividir su medida actual en partes más pequeñas, por ejemplo, utilizando SUMX para calcular primero el valor de una columna por separado.

Por ejemplo, divídelo en las siguientes dos medidas:

M_xcant_reb_Total = SUMX('TodosRebajesconfecha','TodosRebajesconfecha'[xcant_reb])

M_xprec_med_coste_Total = SUMX('TodosRebajesconfecha','TodosRebajesconfecha'[xprec_med_coste])

Determine dónde están las diferencias en los cálculos comparando sus resultados con el código anterior.

Espero que mis sugerencias le den buenas ideas, si tiene más preguntas, por favor aclare en una respuesta de seguimiento.

Saludos

Carson Jian,

Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Helpful resources

Announcements
Sept PBI Carousel

Power BI Monthly Update - September 2024

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

September Hackathon Carousel

Microsoft Fabric & AI Learning Hackathon

Learn from experts, get hands-on experience, and win awesome prizes.

Sept NL Carousel

Fabric Community Update - September 2024

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

Top Solution Authors