Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
He cargado un Excel de 4MB en PBI (que concluye alrededor de 66,000 filas de datos). Y luego creé algunas columnas calculadas, y una de ellas obtuvo un error a continuación:
There's not enough memory to complete this operation. Please try again later when there may be more memory available.
Busqué en línea y probé algunas sugerencias, por ejemplo,
Sin embargo, todas las pruebas anteriores fueron en vano.
Algunos hilos sugirieron que podría deberse al formato DAX mal escrito.
No sé si mi DAX es malo o no porque es bastante simple. A continuación se muestra el DAX que tiene tal "problema de memoria":
MaxLastHotTime =
CALCULATE(
MAX('new vessel'[New Off Chassis Time]),
ALLEXCEPT('new vessel', 'new vessel'[TRACTOR_NO], 'new vessel'[VoyageID]),
'new vessel'[New On Chassis Time] < EARLIER('new vessel'[New On Chassis Time])
)
Tuve una prueba para quitar la función EARLY(). Funciona completamente bien.
Tuve una prueba para minimizar el archivo de datos (ya que Excel es en realidad un registro combinado, con un registro de cantidad de un mes que se está armando). Funciona completamente bien también.
Por lo tanto, sé que la causa raíz se debe a la función EARLY().
¿Alguien puede ayudar a resolver este problema?
Para su información, es la especificación de mi computadora portátil:
Memory: 16GB
CPU: Intel i5 7th Gen
Hola, tengo el mismo problema sobre la memoria para completar la operación, cambié toda la fórmula anterior como se sugirió, pero el problema persiste.
También he usado maxx en DAX para calcular el valor aproximado:
Hola @hyman9090 ,
¿Qué tan grande es el tamaño de su modelo de datos?
¿Puedes publicar una imagen de las métricas del modelo o incluso exportarlas mejor con DAX Studio?
¿Sucede esto en su escritorio o en el servicio?
Saludos
Denis
Gracias, @selimovd
Después de cargar en el PBI, es de aproximadamente 4MB. Lamento no tener un DAX Studio actualmente. Será bueno si se puede resolver sin tocar DAX Studio.
Estoy usando PBI Desktop.
A continuación se muestra el modelo y su relación.
Hola @hyman9090 ,
eso es muy extraño, filas de 60K y un tamaño de archivo de 4MB y obtienes una excepción de memoria insuficiente.
¿Cuál es su fuente de datos? ¿Haces alguna transformación loca en el archivo? ¿Es posible compartir su archivo PBIX?
¿Has deavtivado la hora de la fecha automática?
Saludos
Denis
Gracias @selimovd ,
Sí, es muy extraño, y realmente no tengo idea de por qué sucede con este simple DAX.
La fuente de datos es solo un archivo de Excel de 4 MB, y no hice ninguna transformación loca ... simplemente muy ordinario, puedo decir.
A continuación se muestra mi archivo PBIX compartido.
Hola @hyman9090 ,
No puedo reproducir el comportamiento.
Para mí tarda unos 5 segundos en actualizar todo el archivo.
¿Puedes reiniciar e intentarlo de nuevo? ¿O tal vez tiene otra computadora o una máquina virtual para probar?
Saludos
Denis
Lo intenté una vez justo después de reiniciar mi computadora, pero aún no puedo obtener los valores ...
Hola @hyman9090 ,
ah lo siento, pensé que obtienes el error cuando aplicas en PowerQuery.
Sí, en la columna calculada obtengo el mismo error. Desde mi punto de vista, esto proviene de la función EARLY, que puede ser bastante costosa.
En general, ya no se recomienda usar ANTES, ya que la función es bastante confusa. La recomendación es usar variables en su lugar.
Aquí de dax.guide:
It is recommended using variable (VAR) saving the value when it is still accessible, before a new row context hides the required row context to access the desired value.
Como no tuve el resultado inicial, realmente no puedo comparar. Pero creo que la siguiente columna calculada debería producir el resultado que desea y sin problemas de rendimiento:
MaxLastHotTime_New =
VAR vTractorCurrentRow = 'new vessel'[TRACTOR_NO]
VAR vVoyageCurrentRow = 'new vessel'[VoyageID]
VAR vNewOnChassisCurrentRow = 'new vessel'[New On Chassis Time]
RETURN
CALCULATE(
MAX('new vessel'[New Off Chassis Time]),
ALL('new vessel'),
'new vessel'[TRACTOR_NO] = vTractorCurrentRow
&& 'new vessel'[VoyageID] = vVoyageCurrentRow
&& 'new vessel'[New On Chassis Time] < vNewOnChassisCurrentRow
)
Déjame saber si eso funciona para ti.
Si necesita ayuda, por favor hágamelo saber.
Si respondo a su pregunta, estaría feliz si pudiera marcar mi publicación como una solución ✔️ y darle un pulgar hacia arriba 👍
Saludos
Denis
Blog: WhatTheFact.bi
Sígueme: twitter.com/DenSelimovic
Gracias, @selimovd
¡¿Realmente?! ¿Quiere decir que logra tener valores en la columna calculada "MaxLastHotTime"?
Por cierto, ¿cuál es la especificación de su computadora?