Forum Discussion
Total acumulado
Hola
Estoy en una pérdida absoluta en cuanto a cómo calcular un total acumulado. He intentado el googling, leer los foros, seguir la documentación, descomponer el cálculo, probarlo como una medida y una columna calc'd; Siempre parece referirme al mismo número. Así, por ejemplo; Marzo será 10, 12 de abril, pero en lugar de mostrarme 10 para marzo y 22 para abril, me muestra 10 para marzo y 12 para abril.
Por ejemplo: https://gyazo.com/41bd333cedac290e6980772906ff0034 con una medida
Yo mi columna Mes como una columna de fecha, he intentado usar todo tipo de características incluyendo, calc, sum, sumx, funciones basadas en el tiempo.
El filtro comúnmente recomendado de [Fecha] <-MAX [Fecha] siempre devuelve un error. La función Earlier devuelve errores con preocupaciones que no hay una función por encima de ella. Cualquier ayuda sería muy apreciada; He pasado horas hoy tratando de resolver esto y tengo la sensación de que hay una diferencia en pivottable dax y powerbi dax. Quiero ser capaz de dar forma y transformar mis datos en powerbi, usando dax in powerbi.
Cualquier ayuda sería muy apreciada.
@ElliotP Lamento lo del post original. Era de mi teléfono y tenía errores tipográficos
Bien, aquí está la fórmula para Ejecutar Total como una Columna Calculada (con formato prorerly)
Columna total en ejecución : CALCULATE ( SUM ( 'Todos los datos del sitio web (2)'[UniquePageviews] ), ALL ( 'Todos los datos del sitio web (2)' ), 'Todos los datos del sitio web (2)'[Fecha] <- ANTERIOR ( 'Todos los datos del sitio web (2)'[Fecha] ) )¡Y como puedes ver, funciona!
Y aquí está la fórmula MEASURE
Medición total en ejecución : CALCULATE ( SUM ( 'Todos los datos del sitio web (2)'[UniquePageviews] ), FILTER ( ALL ( 'Todos los datos del sitio web (2)'), 'Todos los datos del sitio web (2)'[Fecha] <- MAX ( 'Todos los datos del sitio web (2)'[Fecha] ) )Lo que también funciona...
81 Replies
- sdjensen
Solution Sage
¿Leíste este artículo? Realmente explica todo lo que necesita saber sobre el total acumulado
- ElliotP
Post Prodigy
@sdjensen He leído ese artículo y esa es la base con la que he estado trabajando, pero en vano. Cuando intento imponer la medida en una tabla o crear una nueva columna con esos datos, simplemente me da el mismo valor que corresponde a los datos.
Fotos para demostrar mejor el problema:
https://gyazo.com/ca41ce0b2d8ec572608d4afda4cffd32
https://gyazo.com/4e8d9b3e1cc38c514048272ced01a534
https://gyazo.com/14a6089654df6e90e7fd5595fd842ebd
La columna De fecha se establece en una fecha, las vistas de página únicas se establecen en Números enteros. Estoy honestamente perdido en este punto.
- AnonymousNot applicable
Una medida común que probablemente encontrará útil en PowerPivot o SSAS Tabular Models es encontrar totales en ejecución. Por ejemplo, es posible que desee ver las ventas totales de un producto a medida que se acumula con el tiempo, o para los modelos de inventario el total disponible en un momento dado. Puedes encontrar más consejos y trucos en mi blog, www.bipatterns.com.
Comencemos con una medida base en una tabla dinámica muy simple.
Total de Ventas :
CALCULAR ( SUM ( FactSales[SalesAmount] ) ) )Ahora vamos a tomar nuestro primer intento de calcular un total en ejecución. Esta es la fórmula más intuitiva, pero tiene un escollo común que no es necesariamente fácil de ver de inmediato.
Ventas totales acumuladas:
CALCULAR (
[Ventas totales],
FILTRO (
ALL ( DimDate[Datekey] ),
DimDate[Fecha clave] <- MAX ( ( DimDate[Datekey] ) )
)
)
Partes clave de la fórmula: el uso de ALL(DimDate[DateKey]) da como resultado que se ignore el contexto actual, por lo que se analizarán las fechas fuera del contexto de fila dinámica actual. El segundo paso clave es la comparación de DimDate[Datekey] <- MAX ( ( DimDate[Datekey] ). Esto significa que se calcularán todas las fechas de la columna DateKey anteriores al contexto de fila de la tabla dinámica actual.Si ponemos esta medida en una mesa, obtendremos los números correctos, pero tendremos un problema restante.
La fórmula devuelve un número para las fechas que no tienen ventas. Necesitamos agregar un poco de manejo de errores, que se describe a continuación.
Ventas acumuladas (correctas) :
SI (
COUNTROWS ( FactSales ) > 0,
CALCULAR (
[Ventas totales],
FILTRO (
ALL ( DimDate[Datekey] ),
DimDate[Fecha clave] <- MAX ( ( DimDate[Datekey] ) )
)
),
BLANK ()
)La función IF comprueba que hay ventas en el contexto seleccionado actual, devolviendo de lo contrario en blanco. Puede ver la diferencia entre las dos medidas siguientes:
Si tiene alguna pregunta para mí, puede comunicarse conmigo a través de LinkedIn o en la comunidad de PowerBI.
Por favor, márquelo como una solución o dar un kudo si funciona para usted, de lo contrario hágamelo saber si se encuentra con un problema y voy a hacer todo lo posible para ayudar.
Gracias
- Syndicate_Admin
Administrator
HolaIntento la fórmula anterior, pero no puedo obtener resultados, no sé por qué. ¿Puedes ayudar?CALCULAR (SUM ( vwExecucaoMensalItem[BudgetPurchaseValue] ),FILTRO (ALL (vwExecucaoMensalItem[Fecha] ),vwExecucaoMensalItem[Fecha] < MAX ( vwExecucaoMensalItem[Fecha] ))) - Syndicate_Admin
Administrator
Hola @rdurkin , no soy capaz de entender cómo la instrucción IF está manejando el error? Por favor, explique de una manera un poco más clara. Gracias.
- Syndicate_Admin
Administrator
Mientras trato de aprender Power BI,
Me he enfrentado a la misma pregunta también, pero los datos que tengo pueden tener ligeramente diferentes de la situación anterior.
Tengo un ejemplo de datos que son los datos de ventas de algunos países.
Quiero encontrar las ventas totales acumuladas, pero tengo ventas que ocurren más de una vez en el mismo día.
He trate de aplicar la fórmula anterior, pero su sólo se aplica en el nivel 'año', pero aún así el valor también es incorrecto.
Esto es lo que pretendo obtener: Gráfico que quiero tener
Estos son los datos de ejemplo: Imagen de datos de ejemplo
Esta es la fórmula que trato de aplicar: Fórmula del total acumulado que traté de aplicar
(donde la fecha aquí es la 'Fecha de pedido' y con el valor que es 'Ventas')
Realmente apreciamos si alguien puede tener respuesta, si hay algo que quieras, te lo siento.
¡Muchas gracias!
- Syndicate_Admin
Administrator
Hola
Tengo esta expresión trabajando en un gráfico de barras para que muestre el total de ejecución correctamente cuando el campo [Fecha] está seleccionado como eje X. Sin embargo, si uso la jerarquía de fechas como eje X, ya no funcionará. En lugar de correr total, da el total del período. Por ejemplo, si el total de ventas en enero es 100 y 200 en febrero, muestra 100 para enero y 200 para febrero, en lugar de 100 para enero y 300 para febrero como debería. ¿Alguien sabe cuál podría ser el problema?
CALCULAR ( SUM ( [TotalSales] ); FILTRO( TODOS ( [Ventas] ); Ventas[Fecha] <-MAX( Ventas[Fecha] ) ) ) - Syndicate_Admin
Administrator
Hola
Me enfrento a problemas para obtener las expresiones DAX correctas.
La columna Total en ejecución se calcula manualmente... este es el resultado que quiero lograr con la Medida Total corriente. El total de ejecución se resume para cada equipo y a través de las fechas.
Estoy usando la expresión DAX actual, pero se está ejecutando total independientemente del equipo.
Medición total en ejecución ( Running Total Measure)
CALCULATE(
SUM(Sheet1[Cantidad]),FILTER(ALL(Sheet1),Sheet1[Date]<-MAX(Sheet1[Fecha])))¿Alguien puede ayudar? Gracias.
- serh2New Member
Hola
He estado tratando de suma acumulada durante mucho tiempo, pero no pude. Doy el ejemplo a continuación, si me puedes ayudar, en serio estaré agradecido. Gracias por su considiración. Que dios te bendiga.
Trato de 2017-01 + 2017-02 y trato de escribir nueva hoja . Les doy un ejemplo de excelencia.
- Zhengy
Advocate I
¿Por qué en medida usamos MAX () pero usamos anteriormente () en la columna calculada? ¿Son intercambiables?
- AnonymousNot applicable
¿Alguien sabe cómo obtener el total acumulado por sitio?
Date_Time Sitio Número 1/01/2015 6:00 AA 35 1/01/2015 6:00 Bb 22 1/01/2015 6:00 Cc 47 1/01/2015 18:00 AA 12 1/01/2015 18:00 Bb 65 1/01/2015 18:00 Cc 24 2/01/2015 6:00 AA 35 2/01/2015 6:00 Bb 78 2/01/2015 6:00 Cc 65 2/01/2015 18:00 AA 12 2/01/2015 18:00 Bb 45 2/01/2015 18:00 Cc 68 3/01/2015 6:00 AA 66 3/01/2015 6:00 Bb 74 3/01/2015 6:00 Cc 32 3/01/2015 18:00 AA 36 3/01/2015 18:00 Bb 54 3/01/2015 18:00 Cc 69 4/01/2015 6:00 AA 24 4/01/2015 6:00 Bb 56 4/01/2015 6:00 Cc 35 4/01/2015 18:00 AA 45 4/01/2015 18:00 Bb 39 4/01/2015 18:00 Cc 57 5/01/2015 6:00 AA 78 5/01/2015 6:00 Bb 35 5/01/2015 6:00 Cc 15 - BrentonC
Helper I
@drnareshchauhan
Es un poco hacky aunque se podría crear referencias de la tabla y filtrar en cada sitio (Si no había demasiados) Utilice la solución suministrada a la suma acumulativa basada en la fecha. Entonces une todas las mesas... aunque estoy seguro de que debe haber una mejor manera...
Editar:
Estoy avergonzado de que incluso pensé en eso, una manera mucho mejor de sumar en dos columnas en su situación es el uso de Python# 'dataset' holds the input data for this script dataset['cumsum'] = dataset.groupby(['site','datepd'])['number'].cumsum()
Notas:Pandas no le gusta devolver las fechas correctamente, crear una columna duplicada que es el tipo de fecha datepd de su columna de fecha.
Cambie la fecha original al texto para que tenga una referencia de la fecha después.
Utilice el código anterior.Seleccione el conjunto de datos.
Quite la columna datepd
Vuelva a cambiar la columna de fecha al tipo de fecha.
Debería estar listo para irnos.
- Syndicate_Admin
Administrator
Gracias por la solución. ¿Podría sugerir cómo podemos usar la fórmula DAX / Measure para obtener una suma acumulativa como esta?
- BrentonC
Helper I
Utilicé las soluciones proporcionadas aunque necesitaba restablecer la suma cada semana, esto funcionó bien para mí. Se ha añadido una variable para el número de semana con el que comparar. Añade cada día a medida que va hasta que llega a una nueva semana, comienza de nuevo.
Running SOP = var x = SOP[Week Number] return CALCULATE ( SUM ( 'SOP'[Production Tonnes]) , ALL (SOP), ('SOP'[Date] <= EARLIER ( 'SOP'[Date]) && weeknum(SOP[Date],2) == x)) - Syndicate_Admin
Administrator
Hola
Lo intenté como se me sugirió, pero sólo conseguir que funcione casi.
Dado que no hay datos reales a partir del 01/01/2021, se mostrará el último valor. ¿Cómo puedo mostrar el acumulado solo si hay un valor real?
Reales acumulativos =CALCULAR(SUM(«Previsión de ingresos por contrato»[Real]),FILTRO(ALL('Previsión de ingresos por contrato'),'Previsión de ingresos por contrato'[Mes] <= ANTERIOR ( 'Previsión de ingresos por contrato'[Mes])))¡Gracias de antemano!
Salud