Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
1 year ago
Solved

Error de límite excedido con Direct Query

Hola a todos

Estoy usando una consulta directa y tengo 89000 filas provenientes de mi código.

Después de escribir a continuación la medida dax, recibo este error.

Por favor, ayúdanos a solucionar esto

MOH =
VAR Disponible = SUMA('Consulta2'[Disponible para vender])
VAR MOM_Value = [MAMÁ] -- asumiendo que MOM es una medida

DEVOLUCIÓN
SI(
Disponible > 0 && MOM_Value = 0,
9999,
MAMÁ_

  • @viswaaa ,

    Este tipo de error suele producirse en el modo DirectQuery cuando la consulta se vuelve demasiado compleja o pesada para que el origen subyacente la controle de forma eficaz.

    Mirando su medida:

    MOH =
    VAR Available = SUM('Query2'[Available to Sell])
    VAR MOM_Value = [MOM]
    
    RETURN
    IF(
        Available > 0 && MOM_Value = 0,
        9999,
        MOM_
    )

    Algunas cosas que hay que comprobar:

    1. Compruebe la medida [MOM]
      Si [MOM] está realizando algún cálculo complejo o utiliza funciones CALCULATE, FILTER o de inteligencia de tiempo, es posible que esté generando una consulta SQL muy pesada en segundo plano.

    2. Evitar el contexto de fila dentro de DirectQuery
      Las medidas que dependen de cálculos de nivel de fila (especialmente con conjuntos de datos grandes como 89.000 filas) pueden alcanzar fácilmente los límites de consulta. Intente simplificar la lógica o agregar previamente los datos si es posible.

    3. Intente usar IF con ISBLANK() o COALESCE()
      A veces, el uso de = 0 en una medida puede causar problemas si el valor está realmente en blanco. Probar:

       RETURN
       IF(
           Available > 0 && COALESCE(MOM_Value, 0) = 0,
           9999,
           MOM_Value
       )
    1. Considere la posibilidad de cambiar al modo de importación
      Si el rendimiento y los límites de consulta son un problema recurrente, y no es necesario que los datos estén en tiempo real, cambiar al modo de importación puede ayudar a evitar estas limitaciones.

    Avísame si puedes compartir la medida [MOM], eso podría ayudar a reducirla aún más.

    Si mi respuesta resolvió su consulta, por favor márquela como la Solución Aceptada para ayudar a otros. Además, le agradecería que me felicitara si le resultó útil mi respuesta.

5 Replies

  • @viswaaa ,

    Este tipo de error suele producirse en el modo DirectQuery cuando la consulta se vuelve demasiado compleja o pesada para que el origen subyacente la controle de forma eficaz.

    Mirando su medida:

    MOH =
    VAR Available = SUM('Query2'[Available to Sell])
    VAR MOM_Value = [MOM]
    
    RETURN
    IF(
        Available > 0 && MOM_Value = 0,
        9999,
        MOM_
    )

    Algunas cosas que hay que comprobar:

    1. Compruebe la medida [MOM]
      Si [MOM] está realizando algún cálculo complejo o utiliza funciones CALCULATE, FILTER o de inteligencia de tiempo, es posible que esté generando una consulta SQL muy pesada en segundo plano.

    2. Evitar el contexto de fila dentro de DirectQuery
      Las medidas que dependen de cálculos de nivel de fila (especialmente con conjuntos de datos grandes como 89.000 filas) pueden alcanzar fácilmente los límites de consulta. Intente simplificar la lógica o agregar previamente los datos si es posible.

    3. Intente usar IF con ISBLANK() o COALESCE()
      A veces, el uso de = 0 en una medida puede causar problemas si el valor está realmente en blanco. Probar:

       RETURN
       IF(
           Available > 0 && COALESCE(MOM_Value, 0) = 0,
           9999,
           MOM_Value
       )
    1. Considere la posibilidad de cambiar al modo de importación
      Si el rendimiento y los límites de consulta son un problema recurrente, y no es necesario que los datos estén en tiempo real, cambiar al modo de importación puede ayudar a evitar estas limitaciones.

    Avísame si puedes compartir la medida [MOM], eso podría ayudar a reducirla aún más.

    Si mi respuesta resolvió su consulta, por favor márquela como la Solución Aceptada para ayudar a otros. Además, le agradecería que me felicitara si le resultó útil mi respuesta.

  • @viswaaa ,

    Gracias por ponerse en contacto con el Foro de la comunidad de Microsoft.

    Gracias @burakkaragoz por compartir la respuesta.

    Hola @viswaaa , Además de @burakkaragoz respuesta, estoy agregando algunos puntos más.

    1. Agregar previamente o almacenar en caché los resultados

    Si puede cambiar al modo de importación en lugar de DirectQuery o crear una tabla de agregación.

    2. Simplifique la medida [MOM]

    Examine [MOM] si implica CALCULATE, PARALLELPERIOD o inteligencia de tiempo en conjuntos grandes, o utilice datos agregados previamente.

    3. Evite calcular con cardinalidad alta

    Envuelva su lógica en IF(HASONEVALUE(...)) o limítela a cálculos de nivel de resumen:

    MOH =
    SI(
    HASONEVALUE('Query2'[Producto]),
    VAR disponible = SUM('Query2'[disponible para vender])
    VAR MOM_Value = [MAMÁ]
    RETURN IF(Disponible > 0 && MOM_Value = 0, 9999, MOM_Value),
    EN BLANCO()
    )

    4. Utilice SELECTEDVALUE en lugar de SUM

    VAR disponible = SELECTEDVALUE('Query2'[disponible para vender], 0)

    5. Limitar las combinaciones de elementos visuales y segmentaciones

    Intente filtrar los datos en el informe o en la medida mediante ISFILTERED o IF(HASONEFILTER(...)) para limitar la evaluación cuando las segmentaciones de datos estén demasiado abiertas.

    Consulte el hilo de la comunidad y el artículo de Microsoft.

    Resuelto: Consulta directa - Límite excedido inesperadamente - Comunidad de Microsoft Fabric

    Uso de DirectQuery en Power BI Desktop - Power BI | Microsoft Learn

    Si mi respuesta ha resuelto su consulta, márquela como la "Solución aceptada" para ayudar a otros. Además, se agradecería un "Felicitaciones" si le resultó útil mi respuesta.

    Gracias

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      @viswaaa ,

      Si mi respuesta ha resuelto su consulta, márquela como la "Solución aceptada" para ayudar a otros. Además, se agradecería un "Felicitaciones" si le resultó útil mi respuesta.

      Gracias

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        @viswaaa ,

        Si mi respuesta ha resuelto su consulta, márquela como la "Solución aceptada" para ayudar a otros. Además, se agradecería un "Felicitaciones" si le resultó útil mi respuesta.

        Gracias