cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Regular Visitor

Campo calculado basado en la fila anterior

Hola

Estoy tratando de calcular el siguiente campo (resultados) en PBI ( editor de consultas ). El cálculo debe agruparse por CustomerCode, ITEM, TYPE y la primera fila del grupo debe calcularse como Z1+X1-X2 y, a continuación, la 2a hasta la última fila del grupo debe ser el resultado anterior+X1-X2. Avísame si tienes alguna solución en mente. Gracias de antemano

1a fila - Z1 + X1– X2 ; 15-0-4 x 11

2a fila - prevresult(1a fila) + X1 – X2 ; 11+0-1 a 10

WeekStartCustomerCodeArtículoDepartamentoTipoZ1X1X2Resultado Fórmula
9/28/2020AaamanzanaFinalA15 411 Z1 - X1 + X215 + 0 - 4 x 11
10/5/2020AaamanzanaFinalA15 110 PrevResult + X1 - X211 + 0 - 1 x 10
11/2/2020AaamanzanaFinalA153 13 PrevResult + X1 - X210 + 3 - 0 x 13
10/12/2020AaamanzanaOPSB10 19 Z1 - X1 + X210 + 0 - 1 x 9
10/19/2020AaamanzanaOPSB10 27 PrevResult + X1 - X29 + 0 - 2 x 7
11/2/2020AaamanzanaOPSB10 16 PrevResult + X1 - X27 + 0 - 1 x 6
9/21/2020AaaPlátanoOPSA131 14 Z1 - X1 + X213 + 1 - 0 x 14
10/5/2020AaaPlátanoOPSA13 113 PrevResult + X1 - X214 + 0 - 1 x 13
10/12/2020AaaPlátanoOPSA131311 PrevResult + X1 - X213 + 1 - 3 x 11

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
Super User II
Super User II

@naitx23

Puede utilizar DAX para crear una columna (no en el editor de consultas)

1.PNG

Column = 
VAR _start=CALCULATE(min('Table'[WeekStart]),ALLEXCEPT('Table','Table'[CustomerCode],'Table'[ITEM],'Table'[Type]))
VAR Z1= MAXX(FILTER('Table','Table'[WeekStart]=_start&&'Table'[CustomerCode]=EARLIER('Table'[CustomerCode])&&'Table'[ITEM]=EARLIER('Table'[ITEM])&&'Table'[Type]=EARLIER('Table'[Type])),'Table'[Z1])
VAR X1=SUMX(FILTER('Table','Table'[CustomerCode]=EARLIER('Table'[CustomerCode])&&'Table'[ITEM]=EARLIER('Table'[ITEM])&&'Table'[Type]=EARLIER('Table'[Type])&&'Table'[WeekStart]<=EARLIER('Table'[WeekStart])),'Table'[X1])
VAR X2=SUMX(FILTER('Table','Table'[CustomerCode]=EARLIER('Table'[CustomerCode])&&'Table'[ITEM]=EARLIER('Table'[ITEM])&&'Table'[Type]=EARLIER('Table'[Type])&&'Table'[WeekStart]<=EARLIER('Table'[WeekStart])),'Table'[X2])
RETURN Z1+X1-X2

2.PNG





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




View solution in original post

5 REPLIES 5
Highlighted
Helper III
Helper III

Permítanme prefacio esto que todavía soy un poco nuevo para PBI, pero creo que sé cómo hacer lo que necesita.

Para ello, primero tendrá que agregar una columna de índice (prefiero empezar a partir de 0).

Una vez que tenga la columna de índice, puede crear una nueva columna calculada para utilizar una expresión DAX de la siguiente manera:

Columna - LOOKUPVALUE('*TableName*'[Resultado], '*TableName*'[Index], '*TableName*'[Index]-1)+0

Es posible que deba cambiar parte de la sintaxis para que funcione. Y obviamente para la primera fila, ya que no puede extraer datos de una fila anterior (ya que no hay una), es posible que deba colocar la expresión dentro de una expresión IF.

Puede haber una mejor manera de hacerlo, pero creo que al menos debería funcionar.

Highlighted

gracias por responder, pero si te das cuenta de cada inicio del grupo la fórmula es Z1 + X1 -X2.

en la primera fila la fórmula es Z1 + X1 -X2

fila siguiente hasta el final del grupo es previousresult(1a fila) + X1 - X2

WeekStartCustomerCodeArtículoDepartamentoTipoZ1X1X2Resultado Fórmula
9/28/2020AaamanzanaFinalA15 411 Z1 - X1 + X215 + 0 - 4 x 11
10/5/2020AaamanzanaFinalA15 110 PrevResult + X1 - X211 + 0 - 1 x 10
11/2/2020AaamanzanaFinalA153 13 PrevResult + X1 - X210 + 3 - 0 x 13
10/12/2020AaamanzanaOPSB10 19 Z1 - X1 + X210 + 0 - 1 x 9
10/19/2020AaamanzanaOPSB10 27 PrevResult + X1 - X29 + 0 - 2 x 7
11/2/2020AaamanzanaOPSB10 16 PrevResult + X1 - X27 + 0 - 1 x 6
Highlighted
Super User II
Super User II

@naitx23

Puede utilizar DAX para crear una columna (no en el editor de consultas)

1.PNG

Column = 
VAR _start=CALCULATE(min('Table'[WeekStart]),ALLEXCEPT('Table','Table'[CustomerCode],'Table'[ITEM],'Table'[Type]))
VAR Z1= MAXX(FILTER('Table','Table'[WeekStart]=_start&&'Table'[CustomerCode]=EARLIER('Table'[CustomerCode])&&'Table'[ITEM]=EARLIER('Table'[ITEM])&&'Table'[Type]=EARLIER('Table'[Type])),'Table'[Z1])
VAR X1=SUMX(FILTER('Table','Table'[CustomerCode]=EARLIER('Table'[CustomerCode])&&'Table'[ITEM]=EARLIER('Table'[ITEM])&&'Table'[Type]=EARLIER('Table'[Type])&&'Table'[WeekStart]<=EARLIER('Table'[WeekStart])),'Table'[X1])
VAR X2=SUMX(FILTER('Table','Table'[CustomerCode]=EARLIER('Table'[CustomerCode])&&'Table'[ITEM]=EARLIER('Table'[ITEM])&&'Table'[Type]=EARLIER('Table'[Type])&&'Table'[WeekStart]<=EARLIER('Table'[WeekStart])),'Table'[X2])
RETURN Z1+X1-X2

2.PNG





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




View solution in original post

Highlighted

@ryan_mayu ¡Muchas gracias! ¡Esto es exactamente lo que necesito!

Highlighted

@naitx23

¡De nada!





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




Helpful resources

Announcements
Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

Community Conference

Microsoft Power Platform Communities

Check out the Winners!

secondImage

Create an end-to-end data and analytics solution

Learn how Power BI works with the latest Azure data and analytics innovations at the digital event with Microsoft CEO Satya Nadella.

Top Solution Authors