Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
1 year ago

IGNORAR VALORES NEGATIVOS

Hola, tengo una matriz visual que tiene valores negativos y estos se incluyen en el total de la tabla, ¿cómo puedo hacer que ignore los valores negativos, todos estos a continuación son medidas

Total pedido (KSM) = ([Facturado (KSM)]+[Pedidos no cumplidos (KSM)]+[Órdenes de repronóstico de S&OE (KSM)])

4 Replies

  • Hola @Julier ,

    Para asegurarse de que los valores negativos se omiten mientras se mantiene un total correcto en el objeto visual de matriz, debe modificar la fórmula DAX para que solo los valores positivos contribuyan a la suma. En lugar de simplemente comprobar si el total es mayor que cero, lo que podría causar totales generales incorrectos, debe excluir los valores negativos en el nivel de fila mediante SUMX. Esto garantiza que tanto los valores de fila individuales como el total general se calculen correctamente.

    Total Ordered (KSM) = 
    SUMX(
        VALUES('YourTable'[KeyColumn]), -- Replace 'YourTable' with your actual table name
        VAR Total = [Invoiced (KSM)] + [Unfulfilled Orders (KSM)] + [S&OE Reforecast Orders (KSM)]
        RETURN IF(Total > 0, Total, 0)
    )
    

    Este enfoque recorre en iteración cada fila única de la tabla especificada y suma solo los valores positivos. Si un total de nivel de fila es negativo, se reemplaza por cero, lo que garantiza que los valores negativos no contribuyan al resultado final. Como alternativa, si está trabajando directamente con medidas y desea evitar que los componentes individuales aporten valores negativos, puede utilizar la función MAX para tratar los valores negativos como cero antes de sumarlos.

    Total Ordered (KSM) = 
    MAX([Invoiced (KSM)], 0) + MAX([Unfulfilled Orders (KSM)], 0) + MAX([S&OE Reforecast Orders (KSM)], 0)
    

    Este método garantiza que ninguna de las medidas individuales contribuya con cantidades negativas. Sin embargo, no los filtra a nivel de fila, lo que hace que el enfoque SUMX sea una solución más sólida para obtener totales generales precisos. Avíseme si necesita algún refinamiento basado en su conjunto de datos específico.

    Saludos

  • Hola @Julier

    Pruebe esto:

    SUMX (
        // Iterates over a filtered summary table and sums the values of [@value]
        FILTER (
            // Filters the summarized table to include only rows where [@value] > 0
            SUMMARIZECOLUMNS (
                'Table'[Column1],  // Groups data by 'Column1'
                'Table'[Column2],  // Groups data by 'Column2'
                "@value", [Total Ordered (KSM)]  // Creates a new column "@value" with [Total Ordered (KSM)]
            ),
            [@value] > 0  // Keeps only rows where "@value" is greater than 0
        ),
        [@value]  // Sums the "@value" column from the filtered table
    )
    

    Las medidas anteriores crean una tabla de resumen virtual de [Total pedido (KSM)] basada en los valores Columna1 y Columna2 (reemplácelos por columnas reales). A continuación, la tabla virtual se filtra para mantener solo aquellas con valores superiores a 0 y, finalmente, se suma mediante SUMX.

  • Hi @Julier ,
    To exclude negative values from the total in your matrix visual, you need to modify your measure so that it only includes positive values. You can use the IF or FILTER function in DAX to ensure that negative values are ignored. Use this,

    Total Ordered (KSM) = 
    VAR InvoicedVal = IF([Invoiced (KSM)] > 0, [Invoiced (KSM)], 0)
    VAR UnfulfilledVal = IF([Unfulfilled Orders (KSM)] > 0, [Unfulfilled Orders (KSM)], 0)
    VAR ReforecastVal = IF([S&OE Reforecast Orders (KSM)] > 0, [S&OE Reforecast Orders (KSM)], 0)
    
    RETURN InvoicedVal + UnfulfilledVal + ReforecastVal
    

    Esta fórmula garantiza que solo se incluyan los valores positivos en el cálculo total y que los valores negativos se traten como cero.

  • Hola @Julier ,

    Puede utilizar el siguiente dax para ignorar los valores negativos:

    Total pedido (KSM) =
    IF([Facturado (KSM)] > 0, [Facturado (KSM)], 0) +
    IF([Pedidos no cumplidos (KSM)] > 0, [Pedidos no cumplidos (KSM)], 0) +
    IF([S&OE Reforecast Orders (KSM)] > 0, [S&OE Reforecast Orders (KSM)], 0)

    O

    Total pedido (KSM) =
    MAX([Facturado (KSM)], 0) +
    MAX([Pedidos no cumplidos (KSM)], 0) +
    MAX([Órdenes de repronóstico S&Oe (KSM)], 0)

    Espero que esto ayude.

    ¿Respondí a su consulta? Marque esto como solución si esto ayuda, se agradecen las felicitaciones.

    Saludos cordiales,

    Neeraj