Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Estoy tratando de resolver un problema de llenar un estanque. Podemos suponer que el estanque está vacío con una cierta capacidad en el día 0. En el primer día, se podía agregar agua y sacarse del estanque. Si no hay suficiente agua en el estanque para lo que se saca, hay una segunda fuente. Del mismo modo, si queremos poner más agua en el estanque de la que hay capacidad para, se puede enviar a otro lugar. A continuación se muestra una tabla de ejemplo.
En el día 1, se añaden 100 galones y se retiran 50. Esto deja 50 galones en el estanque.
En el día 2, se agregan 200 galones, pero se quitan 400. Debido a que no hay 400 galones disponibles, el estanque está vacío.
Este es un problema fácil en Excel porque puede hacer referencia a la celda de arriba para ver cuán lleno estaba el estanque ayer. No puedo averiguar cómo hacer esto en PBI. He intentado usar los trucos de índice en el código DAX y m sugerido en este foro, pero parece que necesito algún tipo de columna de suma acumulada que 'restablece' cuando el estanque se vacía.
¡Gracias por tu ayuda! Realmente he estado luchando con el problema.
Capacidad de inicio | 10000 | Galones | |||
Día | Añadir al estanque (galones) | Restar del estanque (galones) | Agua en estanque (galones) | Agua adicional necesaria (galones) | Enviar a otro estanque (galones) |
0 | 0 | ||||
1 | 100 | 50 | 50 | 0 | 0 |
2 | 200 | 400 | 0 | 150 | 0 |
3 | 50 | 10 | 40 | 0 | 0 |
4 | 100 | 50 | 90 | 0 | 0 |
5 | 3000 | 10 | 3080 | 0 | 0 |
6 | 4000 | 0 | 7080 | 0 | 0 |
7 | 0 | 500 | 6580 | -6580 | 0 |
8 | 4000 | 20 | 10000 | 0 | 560 |
9 | 0 | 10000 | 0 | 0 | 0 |
10 | 70 | 50 | 20 | 0 | 0 |
Lo descubrí. Olvidé de List.Accumulate que le permite hacer cálculos recursivos. Coloque esta consulta y la siguiente función en power query para que funcione. La consulta contiene los datos de ejemplo que ha publicado. Simplemente copie cada uno en una consulta en blanco independiente.
Consulta con resultados finales
Dejar
Fuente: Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("XY/LDQAhCER74ewmoOKnFrP9t7FGRGQPIvpmhjAGEAQgxFn5FDlvGBBnFxfNqITYeFILicaZs4/unvLsEuIxJ2xeUGSUG qftY/r/vFS1J44WffImkWEWWQ5XERTde1LmYJJKN1h3jR9wM-", BinaryEncoding.Base64), Compression.Deflate)), let _t ((texto de tipo) meta [Serialized.Text ? true]) en la tabla de tipos [Día - _t, "Añadir al estanque (galones)" - _t, "Restar del estanque (galones)" - _t, "Agua en estanque (galones)" - _t, "Agua adicional necesaria (galones)" - _t, "Enviar a otro estanque (galones)" - _t]),
"Tipo cambiado" - Tabla.TransformColumnTypes(Fuente, "Día", Int64.Type, "Añadir al estanque (galones)", Int64.Type, "Restar del estanque (galones)", Int64.Type, "Agua en estanque (galones)", Int64.Type, "Agua adicional necesaria (galones)", Int64.Type, "Enviar a otro estanque(galones)",
"Columnas renombradas" ? Tabla.RenameColumns('Tipo Cambiado'''''Añadir al estanque (galones)", "Agregar","Restar del estanque (galones)", "Eliminar"-,
"Eliminar otras columnas" ? Tabla.SelectColumns(?"Columnas renombradas", "Agregar", "Eliminar", "Agua en estanque (galones)",),
"Añadido personalizado" - Tabla.AddColumn ("Eliminado otras columnas", "Delta", cada [Agregar]-[Quitar]),
"Changed Type1" á Table.TransformColumnTypes('Added Custom'',''Delta',Int64.Type'),
"Función personalizada invocada" - Tabla.AddColumn ("Changed Type1", "Volumen", cada fxDayVolume([Day])),
"Changed Type2" ? Table.TransformColumnTypes("Invoked Custom Function","Volume", Int64.Type,),
Custom1 - Table.TransformColumns("Changed Type2", á"Volume", cada uno si _<0 entonces 0 _))
En
Personalizado1
Función para iterar a través de cada día
fxDayVolume (día) ?>
Dejar
Fuente: List.FirstN(PondAdds[Delta], día),
Custom1 - List.Accumulate(Source,0, (prev, current) ?> si prev < 0 then current else prev + current)
En
Personalizado1
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
Esto le mostrará lo que es en el día anterior Agua en estanque total en una columna calculada:
Previous Day =
VAR CurrentDay = Pond[Day]
VAR PreviousDayTotal =
MAXX(
FILTER(
ALL(Pond),
Pond[Day] = CurrentDay - 1
),
Pond[Water in Pond (gallons)]
)
RETURN
PreviousDayTotal
Pero no estoy seguro de que sea el mejor enfoque, y se limita a las cantidades diarias. Una medida sería una mejor manera de hacer esto, ya que podría manejar cualquier rango de fechas, pero no entiendo su problema y la solución esperada suficiente para comenzar con eso con la información dada.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingCovering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |