Forum Discussion

DavidK's avatar
DavidK
Frequent Visitor
5 years ago

Filtro

Hola

por favor, sería tan amable y me ayude con mi código dax. No puedo menos que me desaceleré por qué no tengo suficiente memoria.


Mi código es:

Columna : COUNTROWS(FILTER(Sales_table,Sales_table[Date_issued_X]<-Combinación[Fecha]&&Sales_table[ID]-Combinación[ID])))


pero cuando uso sólo una condición, por ejemplo:


Columna : COUNTROWS(FILTER(Sales_table,Sales_table[Date_issued_X]<-Combinación[Fecha]))


No voy a tener problema con la memoria, pero cuando uso ambas condiciones en el filtro recibo esta información:


Error de memoria: Error de asignación de memoria . Intente simplificar o reducir el número de consultas.

Gracias de antemano.

Dávid

5 Replies

  • Hola @DavidK ,

    Sólo quiere comprobar que en sus datos tiene filas de datos donde ambas condiciones se encuentran simultáneamente?

    Gracias

    Pragati

    • DavidK's avatar
      DavidK
      Frequent Visitor

      yes, second condiotion should reduce count row

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hola @DavidK,

    ¿Cuánta memoria inactiva tiene su dispositivo, ¿ha funcionado en el cliente de escritorio de 32 bits? AFAIK, 32bit tiene un límite de memoria de 4 GB en el uso de la aplicación:

    Límites de memoria para versiones de Windows y Windows Server

    Creo que esto debería estar relacionado con los cálculos de iterador, su fórmula calculará en cada fila de la tabla 'Combinación' para iterar y comprobar con registros de tablas de venta. ('combinación' recuento de filas X 'sales' recuento de filas de tabla)

    Optimización de iteradores anidados en DAX

    BTW, también puede usar Dax studio para rastrear cuántas filas calcula la fórmula DAX en:

    DAX Studio

    saludos

    Xiaoxin Sheng

      • Anonymous's avatar
        Anonymous
        Not applicable

        hola @DavidK,

        Esto debería estar más relacionado con las cantidades de datos. Después de que termine de revisar su archivo de muestra y descubrí que tienen registros 81M y 40K.

        Para este escenario, la fórmula iterará y calculará más de 3240B (81M x 40K) filas. Obviamente gastará una gran cantidad de recursos del sistema para calcular.

        Si agrega más condiciones a la expresión, costará más recursos que menos condiciones versión. (parece que su dispositivo es lo suficientemente bueno para procesar la versión simple, pero falló en más versiones de condición)

        En mi opinión, me gustaría sugerirle que use la expresión de medida en lugar de la fórmula de columna calculada, solo calcula cuándo la utiliza para analizar visualizaciones.

        Además, también puede intentar realizar algunos agregados previos en el resultado para reducir el intervalo de bucle de registros y, a continuación, puede calcular en menos registros para evitar el problema de "asignación de memoria".

        Aviso: 1 GB de memoria igual a 1.048.576 KB. Si suponemos que cada bucle de filas de 100K pasará 1 KB de memoria, 3240B filas también requieren 31 GB de memoria para almacenar en caché rápidamente y calcular en el rango expandido de registros o pasar más tiempo para ejecutar con recursos inactivos hasta el tiempo de espera de cálculo. (el escenario real y el cálculo no pueden ser tan complejos o de bajo rendimiento de lo que supuesto)

        saludos

        Xiaoxin Sheng