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

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Syndicate_Admin
Administrator
Administrator

Calcular delta entre 2 filas y multiplicar por otra celda

Estimados todos,

Estoy tratando de replicar esta tabla a continuación en PBI, para obtener las últimas 2 columnas rojas (S y T):

PBI01.JPG

Podría calcular las columnas deltas, pero el resultado está en una línea diferente como se muestra a continuación:
(Todas las celdas resaltadas en amarillo deben estar en la primera línea para multiplicar por columna Cantidad = - 1779.28)

PBI02.JPG

Estoy usando la siguiente fórmula para el cálculo del índice de aumento de Delta:

PBI03.JPG

¿Hay que calcularlo en PBI?

Aquí puede encontrar mi archivo PBI:

https://drive.google.com/file/d/1n27rPYiqON7VefFoVRLh4ye_cBLvGeRB/view?usp=sharing

Gracias de antemano.

KR

Carina

2 ACCEPTED SOLUTIONS

Hola

Puede descargar mi archivo PBI desde aquí.

Espero que esto ayude.

Untitled.png

View solution in original post

Syndicate_Admin
Administrator
Administrator

Hi, @carinatina_pbi ;

Puede crear medidas de la siguiente manera:

Col 1 = MAX('Ticket'[Amount])*CALCULATE(MAX('Exchange rate'[Delta 1]),FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),1)))
Col 2 = MAX('Ticket'[Amount])*CALCULATE(MAX('Exchange rate'[Delta 2]),FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),2)))
Col 3 = MAX('Ticket'[Amount])*CALCULATE(MAX('Exchange rate'[Delta 3]),FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),3)))
Col 4 = MAX('Ticket'[Amount])*CALCULATE(MAX('Exchange rate'[Delta 4]),FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),4)))
Col 4 = MAX('Ticket'[Amount])*CALCULATE(MAX('Exchange rate'[Delta 4]),FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),4)))
total sum = MAXX(FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-1)),[Col 1])+MAXX(FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-2)),[Col 2])+MAXX(FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-3)),[Col 3])+MAXX(FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-4)),[Col 4])+MAXX(FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-5)),[Col 5])
Real Dif.Monthly = [Monthly Diff.]-([total sum]-SUMX(FILTER(ALL(Ticket),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-1)),[total sum]))
Real Dif.Monthly = [Monthly Diff.]-([total sum]-SUMX(FILTER(ALL(Ticket),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-1)),[total sum]))

El resultado final se muestra a continuación:

vyalanwumsft_0-1638166547675.png

Saludos
Apoyo a la comunidad Team_ Yalan Wu
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

View solution in original post

14 REPLIES 14
Syndicate_Admin
Administrator
Administrator

@carinatina_pbi De hecho, eso debería ser una solución fácil ya que el núcleo de la lógica está en su lugar. Voy a echar un vistazo cuando tenga la oportunidad.

Syndicate_Admin
Administrator
Administrator

@carinatina_pbi este es un problema muy desafiante e interesante de resolver. Aunque ya tienes una solución tengo una grieta en ella y la hice más dinámica con menos medidas y permite escalar la solución fácilmente (si es necesario).

Vea el archivo pbix adjunto y todas las medidas están en la tabla Número de meses. Esta tabla es el núcleo del cálculo y hace que todo sea dinámico, actualmente, tiene 5 columnas, pero si lo desea, puede hacer crecer esto a tantas como desee, simplemente cambie la tabla Número de meses.

El resultado de las medidas se encuentra en la página2. Hay una medida llamada New Total Sum PM con la que no estoy muy contento, pero funciona, en algún momento volveré a esto y lo mejoraré.

¿Darle una oportunidad y hacerme saber cómo va?

¡¡Bien!!

Síguenos en LinkedIn (en inglés)

Más información sobre el formato condicional en Microsoft Reactor

Mi última entrada de blog El poder de usar grupos de cálculo con relaciones inactivas (Parte 1) (perytus.com) Yo lo haría Elogios si mi solución ayudó. 👉 Si puede dedicar tiempo a publicar la pregunta, también puede hacer esfuerzos para felicitar a quien ayudó a resolver su problema. ¡Es una muestra de agradecimiento!

Visítenos en https://perytus.com, su ventanilla única para proyectos/formación/consultoría relacionados con Power BI.

Hola @parry2k

Gracias por la solución dinámica, pero solo funciona si tengo un boleto.

Si tengo más de uno, esto no funciona de la siguiente manera:

carinatina_pbi_0-1639597140625.png

Aquí puede encontrar un archivo con más de un ticket.

Si tienes alguna solución para eso, me ayudará mucho.

KR

Carina

Syndicate_Admin
Administrator
Administrator

Hi, @carinatina_pbi ;

Puede crear medidas de la siguiente manera:

Col 1 = MAX('Ticket'[Amount])*CALCULATE(MAX('Exchange rate'[Delta 1]),FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),1)))
Col 2 = MAX('Ticket'[Amount])*CALCULATE(MAX('Exchange rate'[Delta 2]),FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),2)))
Col 3 = MAX('Ticket'[Amount])*CALCULATE(MAX('Exchange rate'[Delta 3]),FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),3)))
Col 4 = MAX('Ticket'[Amount])*CALCULATE(MAX('Exchange rate'[Delta 4]),FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),4)))
Col 4 = MAX('Ticket'[Amount])*CALCULATE(MAX('Exchange rate'[Delta 4]),FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),4)))
total sum = MAXX(FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-1)),[Col 1])+MAXX(FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-2)),[Col 2])+MAXX(FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-3)),[Col 3])+MAXX(FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-4)),[Col 4])+MAXX(FILTER(ALL('Ticket'),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-5)),[Col 5])
Real Dif.Monthly = [Monthly Diff.]-([total sum]-SUMX(FILTER(ALL(Ticket),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-1)),[total sum]))
Real Dif.Monthly = [Monthly Diff.]-([total sum]-SUMX(FILTER(ALL(Ticket),EOMONTH([Period Month],0)=EOMONTH(MAX('Ticket'[Period Month]),-1)),[total sum]))

El resultado final se muestra a continuación:

vyalanwumsft_0-1638166547675.png

Saludos
Apoyo a la comunidad Team_ Yalan Wu
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Hola @v-yalanwu-msft

Gracias por esta solución. Funciona, pero solo tengo un ticket filtrado en el archivo:

PBI Correct Calc.JPG

Si tengo 2 tickets, obtuve un número incorrecto en las columnas Col, entonces las otras columnas basadas en eso también están equivocadas. ¿Ves alguna solución para eso?

PBI Wrong Calc.JPG

Aquí encontrarás el nuevo archivo PBI con 2 tickets.

Gracias de antemano.

KR

Carina

Syndicate_Admin
Administrator
Administrator

Hola

Me gustaría intentarlo. Comparta su archivo de MS Excel con todos los trabajos / fórmulas para que pueda entenderlos y convertirlos a expresiones DAX.

En este enlace encontrarás el excel con todas las fórmulas en la pestaña Resultados:

https://docs.google.com/spreadsheets/d/1Rnlu5_dMAdLn4Tj7vF5WkWiojG2t_Qw3/edit?usp=sharing&ouid=11713...

Gracias por su ayuda.

KR

Carina

Hola

Puede descargar mi archivo PBI desde aquí.

Espero que esto ayude.

Untitled.png

¡Gracias por su ayuda, @Ashish_Mathur!

Su solución funcionó perfectamente.

De nada.

@Ashish_Mathur

¿Ve alguna otra forma de calcular mis columnas de destino a continuación, sin crear varias columnas (Delta y Col)? Debido a que puedo tener tickets con 30 líneas, entonces, en base a esta solución de propuesta, necesitaré crear 30 columnas de Delta y también 30 columnas de Col, y lo intenté con 10 y PBI se está ejecutando para un tiempo de registro calculándolo.

carinatina_pbi_0-1639498743876.png

Gracias por su ayuda de nuevo de antemano.

KR

Carina

Hola

No, no se me ocurre otra manera.

Syndicate_Admin
Administrator
Administrator

Arreglemos delta1.

Quieres:

tarifa exch del próximo mes - la tarifa exch. de este mes

así que cambie las cosas que se restan (a-b debe ser b-a) y donde el código suma 1 (+1) al índice debe restar (-1)

-----

Eso debería darle suficiente información para solucionarlo. Déjame saber cómo te vas.

Gracias por su respuesta y ayuda.

De hecho, ahora puedo ver todos los valores en la primera línea ya que necesito calcular el siguiente colum (cantidad * delta n), pero cuando creo la segunda columna de multiplicación recibí este mensaje a continuación:
PBI04.JPG
Para agregar, ¿hay una forma automática de calcular como un bucle?
De lo contrario, tendré que crear como 30 líneas para delta y después más 30 para la multiplicación, ya que esto es solo un ejemplo, pero otros Tickets pueden tener más puntos / líneas.

La columna objetivo necesaria al final, es el Real Dif. Mensual que está calculando la siguiente fórmula:

Real Dif. Mensual = (Cantidad 2 - Cantidad * Exc. Tasa) - (suma de (Cantidad * Delta n) - línea por línea).

Subo mi archivo de Excel con todas las fórmulas en este enlace (resultados de la pestaña) tal vez esto sea más fácil de entender:

https://docs.google.com/spreadsheets/d/1Rnlu5_dMAdLn4Tj7vF5WkWiojG2t_Qw3/edit#gid=411313650

Gracias de antemano.

KR

Carina

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

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

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.

Top Solution Authors
Top Kudoed Authors