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.
Hola
Tengo una tabla de transacciones bastante grande (más de 27 millones de líneas y creciendo) con inventario y sus transacciones de costos relacionadas. Para obtener un inventario (o costo) en el saldo de la mano hago la fórmula estándar
Balance Qty = CALCULATE(SUM('Item Value New'[Item Ledger Entry Quantity]),FILTER(ALL(Dates),Dates[Date]<=MAX(Dates[Date])))
Lo cual funciona muy bien. Sin embargo, ahora lo que quiero hacer es obtener un promedio de los saldos de inventario a mano sobre un intervalo de fechas. De esa manera para los artículos que se producen con menos frecuencia, todavía tenemos una buena idea de la cantidad de transporte y el valor del inventario.
Para ello, primero intenté crear una nueva tabla con columnas de resumen que tendrían el saldo a mano para cada fecha, y luego tomar un promedio de ese saldo
Inv Summary Col = SUMMARIZECOLUMNS('Item Value New'[Item Ledger Entry Quantity], 'Item Value New'[Posting Date],
"Bal Qty", CALCULATE(SUM('Item Value New'[Item Ledger Entry Quantity]), FILTER(ALL('Item Value New'[Posting Date]), 'Item Value New'[Posting Date]<=MAX('Item Value New'[Posting Date] ) ) ),
"Bal Cost", CALCULATE(SUM('Item Value New'[Cost Amount (Actual)]) , FILTER(ALL('Item Value New'[Posting Date]) , 'Item Value New'[Posting Date] <= MAX('Item Value New'[Posting Date] ) ) )
)
Entonces hago un promedio con algo como
Promedio (Pary de Bal)
Sin embargo, aunque eso funcionaba bien en el escritorio de Power BI, cada vez que intentaba actualizar desde el servicio Power BI recibí un error de asignación de memoria después de que la actualización agotaba el tiempo de espera en unas dos horas.
Así que ahora probé un método alternativo. Básicamente sólo dos medidas
Balance Qty = CALCULATE(SUM('Item Value New'[Item Ledger Entry Quantity]),FILTER(ALL(Dates),Dates[Date]<=MAX(Dates[Date])))
seguido por
Avg Bal Qty = AVERAGEX(VALUES(Dates[Date]),[Balance Qty])
Lo que parece que está haciendo el trabajo, pero cuando actualizo la matriz (por ejemplo, expandir la jerarquía de productos, o cambiar a una categoría de producto diferente), las cosas van REALMENTE lentas.
Entonces, ¿hay una mejor manera de abordar esto?
Gracias
¿puede insertarlo en un procedimiento almacenado SQL y rellenar algunas tablas planas con datos de resumen? ¿O construir cubos en otro lugar?
Ni idea. Nunca había hecho eso antes.
De acuerdo. Bueno, supongo que estás sobrepasando los límites de lo que es posible con un espacio de trabajo no premium. Dicho esto, el uso de "AverageX" será mucho más costoso que "Average" porque tiene que calcularlo para cada fila del conjunto de datos.
El desafío con una importación de 27 millones de filas en la memoria de la base de datos powerBI es que va a ser masiva. Es por eso que sugerí la agregación fuera de PowerBI, primero.
"Dicho esto, el uso de "AverageX" será mucho más costoso que "Average" porque tiene que calcularlo para cada fila del conjunto de datos. "
Entiendo que esto no es cierto. Y que Average y AverageX son progamáticamente iguales, y ese promedio se traduce realmente a Average X en tiempo de ejecución. Véase "La guía definitiva de Dax".
@Kroneborge: Voy a echar un vistazo, gracias por compartir. Siento no tener una solución para ti.
Covering 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 |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |