Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
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í:
Estaría muy agradecido por algunas ideas, ya que ya he intentado algunas cosas sin éxito.
Solved! Go to 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] )
)
)
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.
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?
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.
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?
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] )
)
)
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.
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |