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

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.

Reply
kimalto452
Frequent Visitor

Suma por categoría dos variantes

Hola, soy nuevo con powe bi. No entiendo por qué funciona este código

Precio total por categoría ?
Categoría VAR[grupo]
RETURN CALCULATE( SUM ([precio]), FILTER (tabla1,[grupo]-categoría) )
y este código no funciona
Precio total por categoría ?
CALCULATE( SUM ([precio]), FILTER (tabla1,[grupo]-[grupo]) )
1 ACCEPTED SOLUTION
Greg_Deckler
Super User
Super User

@kimalto452 - Esto es algo de contexto. Probablemente la curva de aprendizaje más grande con DAX es entender el contexto. Es literalmente, el concepto DAX más importante. Como tal, merece una explicación a fondo más que algo vago.

Por lo tanto, se trata de una columna calculada para que se aplique el contexto de fila (consulte el artículo). por lo tanto

Considere este código:

Categoría VAR[grupo]
RETURN CALCULATE( SUM ([precio]), FILTER (tabla1,[grupo]-categoría) )
Lo que esto está diciendo es:
  1. Obtener el valor de la columna "grupo" dentro de la fila actual
  2. Ahora, SUMA la columna de precio para cada fila de la tabla comparando el valor de la columna de grupo de esa fila con este valor que se almacena en la variable "categoría", si coinciden, a continuación, sumarlos

Esto devolverá lo que se pretendía. Dame una suma de la columna de precio para todas las filas de esta tabla que coinciden con el mismo valor de grupo que la fila actual.

Frente a este código:

Precio total por categoría ?
CALCULATE( SUM ([precio]), FILTER (tabla1,[grupo]-[grupo]) )
Lo que esto dice es:
  1. Sumar la columna de precio para cada fila de la tabla comparando el valor de la columna de grupo de esa fila con el valor de columna de grupo de esa misma fila y, si coinciden, su resume

Por lo tanto, es por eso que obtiene la cantidad total sumada para todas las filas en la segunda fórmula porque obviamente la columna de grupo de cada fila coincide con la columna de grupo de esa fila.

Ahora, considere esta fórmula:

Columna 3 - CALCULATE(SUM([price]),FILTER('Table (13)',[group]-EARLIER([group])))
Esta fórmula genera el mismo valor que el primer cálculo. Esto se debe a que EARLIER hace que el cálculo haga referencia a un contexto "anterior" fuera del contexto actual, lo que significa que hace referencia al contexto de fila de la fila original y no al contexto de fila actual de cada fila.
Esperemos que esto lo explique bien. El contexto es el concepto más importante cuando se trata de DAX y merece ser explicado a fondo y completamente cuando se trata. Si puede dominar el contexto, dominará DAX.
Yo si tienes preguntas.
BTW: Esta es una pregunta extremadamente inteligente para hacer! ¡elogios!


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

3 REPLIES 3
Ashish_Mathur
Super User
Super User

Hola

En la segunda fórmula, ¿qué quieres decir con [grupo]


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
Greg_Deckler
Super User
Super User

@kimalto452 - Esto es algo de contexto. Probablemente la curva de aprendizaje más grande con DAX es entender el contexto. Es literalmente, el concepto DAX más importante. Como tal, merece una explicación a fondo más que algo vago.

Por lo tanto, se trata de una columna calculada para que se aplique el contexto de fila (consulte el artículo). por lo tanto

Considere este código:

Categoría VAR[grupo]
RETURN CALCULATE( SUM ([precio]), FILTER (tabla1,[grupo]-categoría) )
Lo que esto está diciendo es:
  1. Obtener el valor de la columna "grupo" dentro de la fila actual
  2. Ahora, SUMA la columna de precio para cada fila de la tabla comparando el valor de la columna de grupo de esa fila con este valor que se almacena en la variable "categoría", si coinciden, a continuación, sumarlos

Esto devolverá lo que se pretendía. Dame una suma de la columna de precio para todas las filas de esta tabla que coinciden con el mismo valor de grupo que la fila actual.

Frente a este código:

Precio total por categoría ?
CALCULATE( SUM ([precio]), FILTER (tabla1,[grupo]-[grupo]) )
Lo que esto dice es:
  1. Sumar la columna de precio para cada fila de la tabla comparando el valor de la columna de grupo de esa fila con el valor de columna de grupo de esa misma fila y, si coinciden, su resume

Por lo tanto, es por eso que obtiene la cantidad total sumada para todas las filas en la segunda fórmula porque obviamente la columna de grupo de cada fila coincide con la columna de grupo de esa fila.

Ahora, considere esta fórmula:

Columna 3 - CALCULATE(SUM([price]),FILTER('Table (13)',[group]-EARLIER([group])))
Esta fórmula genera el mismo valor que el primer cálculo. Esto se debe a que EARLIER hace que el cálculo haga referencia a un contexto "anterior" fuera del contexto actual, lo que significa que hace referencia al contexto de fila de la fila original y no al contexto de fila actual de cada fila.
Esperemos que esto lo explique bien. El contexto es el concepto más importante cuando se trata de DAX y merece ser explicado a fondo y completamente cuando se trata. Si puede dominar el contexto, dominará DAX.
Yo si tienes preguntas.
BTW: Esta es una pregunta extremadamente inteligente para hacer! ¡elogios!


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
amitchandak
Super User
Super User

@kimalto452 , para comprobar esto probarlo así y comprobar los valores

Categoría VAR[grupo]
RETURN CALCULATE( [group], FILTER (table1,[group]-category) )


Precio total por categoría ?
CALCULATE( [group], FILTER (table1,[group]-[group]) )

en mi entender que obtendrá algún valor en todas las líneas, en el segundo caso usted debe obtener diferentes valores. contexto de fila debe aplicarse

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

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