Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

No hay suficiente memoria para completar esta operación

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,

  • Inteligencia de tiempo desactivada
  • Mayor caché de datos
  • Caché borrada
  • Vista previa de datos deshabilitada para descargar en segundo plano

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

9 REPLIES 9
Syndicate_Admin
Administrator
Administrator

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:

Costo = máx.(filtro('COSTO','COSTO'[CLAVE]='TABLA'[precio clave]&&'TABLA'[peso total]>='COSTO'[rango mínimo]),'COSTO'[CPK])
Gracias por tu ayuda
Syndicate_Admin
Administrator
Administrator

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.

hyman9090_1-1675674489242.png

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.

Carpeta compartida

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?

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.