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

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
Syndicate_Admin
Administrator
Administrator

Sumar valores de una columna hasta que se produce un cambio

Hola querida comunidad.

Me gustaría saber si alguien tiene una idea para una fórmula Dax. Mi deseo sería que los valores de esta columna se agreguen hasta que cambie mi ID. Después de cada cambio de identificador, los valores deben agregarse de nuevo a cero. Además, sería útil tener algún tipo de cuenta hasta este cambio de identificación. Incluso si se repite el identificador, como es el caso aquí, debe empezar a contar de nuevo después de cada cambio.

A continuación se muestra un ejemplo de cómo debería verse. Las fórmulas DAX deben poder generar las dos columnas de la derecha como aquí:

leovinc14_0-1628808483200.png

Estaría muy agradecido por algunas ideas, ya que ya he intentado algunas cosas sin éxito.

1 ACCEPTED SOLUTION

Ahí, @leovinc14

Pruebe las columnas calculadas de la siguiente manera:

flag_change = 
VAR ID1 = 'Table'[ID]
VAR ID2 =
    CALCULATE (
        MAX ( 'Table'[ID] ),
        FILTER ( 'Table', 'Table'[Index ID] = EARLIER ( 'Table'[Index ID] ) - 1 )
    )
RETURN
    IF ( ISBLANK ( ID2 ), 0, IF ( ID1 <> ID2, 1, 0 ) )   // change:1 unchange:0
New ID Index = 
CALCULATE (
    SUM ( 'Table'[flag_change] ),
    FILTER ( 'Table', 'Table'[Index ID] <= EARLIER ( 'Table'[Index ID] ) )
)
SUM = 
CALCULATE (
    SUM ( 'Table'[Number of something] ),
    FILTER (
        'Table',
        'Table'[New ID Index] = EARLIER ( 'Table'[New ID Index] )
            && 'Table'[Index ID] <= EARLIER ( 'Table'[Index ID] )
    )
)    //Group by 'New Id Index' to get the accumulated value
Count = 
CALCULATE (
    COUNTROWS('Table'),
    FILTER (
        'Table',
        'Table'[New ID Index] = EARLIER ( 'Table'[New ID Index] )
            && 'Table'[Index ID] <= EARLIER ( 'Table'[Index ID] )
    )
)

54.png

Saludos
Equipo de soporte de la comunidad _ Eason
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

8 REPLIES 8
Syndicate_Admin
Administrator
Administrator

Ok, descubrí que tengo menos memoria RAM disponible para ejecutar algunas fórmulas. Power BI muestra el mensaje de error que indica que "no hay suficiente RAM para realizar esta operación". Así que reordené las dos primeras fórmulas un poco para evitar este problema:

ChangeStatus = IF('Table'[ID]=LOOKUPVALUE('Table'[ID TS_TA_None_RC_tr],'Table'[Index ID],'Table'[Index ID]-1),"","changed")

ChangeIndex = COUNTX ( FILTER ( ALL ('Table'), 'Table'[Index ID] <= EARLIER('Table'[Index ID]) && 'Table'[ChangeStatus] <> ""), 'Table'[Index ID])

Inspirado en esta página: https://community.powerbi.com/t5/Desktop/Reinit-count-when-value-changes/m-p/205258

Todo funciona maravillosamente ahora. Realmente muchas gracias por sus soluciones! 😃👍

Pero, ¿alguien tiene una idea de cómo resolver este problema de memoria RAM sin actualizar físicamente la computadora portátil o PC?

Syndicate_Admin
Administrator
Administrator

Hola

Dentro de cada ID, ¿en qué orden debe ocurrir la adición? ¿Hay una columna de fecha en algún lugar?

Hay una "columna de identificador de índice" adicional como un número secuencial. Y una columna con una fecha, pero esto no está en el orden del índice.

leovinc14_0-1628815142095.png

Hola

Compartir datos en un formato que se puede pegar en un archivo de MS Excel. Los datos que comparte deben tener una columna Date.

Muchas gracias por sus respuestas. Pero el orden de la fecha no es el mismo que el id. Lo que es decisivo para mí es el orden de la identificación. El "Número de algo" es en realidad los días hasta que el cambio de ID. He actualizado el ejemplo para mostrar el problema. ¿Hay alguna manera de crear las dos columnas "Count" y "Sum" a partir de las demás mediante DAX o algo similar?

leovinc14_0-1628851526555.png

Ahí, @leovinc14

Pruebe las columnas calculadas de la siguiente manera:

flag_change = 
VAR ID1 = 'Table'[ID]
VAR ID2 =
    CALCULATE (
        MAX ( 'Table'[ID] ),
        FILTER ( 'Table', 'Table'[Index ID] = EARLIER ( 'Table'[Index ID] ) - 1 )
    )
RETURN
    IF ( ISBLANK ( ID2 ), 0, IF ( ID1 <> ID2, 1, 0 ) )   // change:1 unchange:0
New ID Index = 
CALCULATE (
    SUM ( 'Table'[flag_change] ),
    FILTER ( 'Table', 'Table'[Index ID] <= EARLIER ( 'Table'[Index ID] ) )
)
SUM = 
CALCULATE (
    SUM ( 'Table'[Number of something] ),
    FILTER (
        'Table',
        'Table'[New ID Index] = EARLIER ( 'Table'[New ID Index] )
            && 'Table'[Index ID] <= EARLIER ( 'Table'[Index ID] )
    )
)    //Group by 'New Id Index' to get the accumulated value
Count = 
CALCULATE (
    COUNTROWS('Table'),
    FILTER (
        'Table',
        'Table'[New ID Index] = EARLIER ( 'Table'[New ID Index] )
            && 'Table'[Index ID] <= EARLIER ( 'Table'[Index ID] )
    )
)

54.png

Saludos
Equipo de soporte de la comunidad _ Eason
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Gracias @v-easonf-msft por su solución sugerida.

La primera fórmula funciona bien. Hay un pequeño problema con la segunda fórmula "Nuevo índice de id.". El archivo real tiene más de 100.000 filas. Para la fórmula DAX se cargó durante horas sin mostrar un resultado, por lo que tuve que detenerme. ¿Alguna idea de cómo podría resolver este problema? ¿O podría dividirse la fórmula en dos o tres pasos para que el PC no se vea abrumado?

Atentamente

leovinc14

Hola

En la penúltima fila, ¿por qué la respuesta debería ser 5? ¿Por qué no debería seguir siendo 1? Además, comparta los datos en un formulario que se pueda pegar en MS Excel.

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.

Top Solution Authors
Top Kudoed Authors