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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

Resumiendo una columna y estableciendo en 0 si es positivo, mantenga si es negativo

Hola a todos - espero que todos estén a salvo y haciendo bien por ahí!!!

Estoy tratando de resumir todos los ingresos por un estado que es negativo. Si el valor termina siendo positivo, entonces quiero que se establezca en 0 - el punto aquí para sumar sólo el dinero que estamos perdiendo. Para agregarle un nivel de complejidad, para un mes determinado hay varios valores que entran en el valor general. Así, por ejemplo - un valor de ingresos para marzo para Washington en mi ejemplo puede ser -2500. Con el fin de conseguir que tenía que sumar los valores para ese estado para ese mes por lo que había algunos números positivos y negativos en el calc para finalmente llegar a -2500. Digamos que hubo -5000 ingresos negativos y 2500 positivos, por lo que el valor final cuando se pone en una tabla pbi es -2500. Mi calc actual está ignorando los aspectos positivos y simplemente sumando los negativos que no es lo que quiero. Así que en ese ejemplo anterior mi dax está devolviendo -5000 y no -2500. Este es un ejemplo de lo que quiero:

Sum1.PNG

Puse mi resultado deseado de la dax en la que estoy pidiendo ayuda - que devolvería ese valor. Para dar un ejemplo de las salidas que entran en ese valor - se vería así:

sum2.PNG

Estos son todos los valores que pasan en el backend para llegar al valor -2500 para WA. Probé una consulta e ignoré los positivos y simplemente devuelve un valor de -5000. Creo que necesito resumir el grupo primero. Aquí está el dax que probé:

SUMX('Table_Revenue',IF('Table_Revenue'[Ingresos]<0,'Table_Revenue'[Ingresos],0))

¿Sería una suma dentro de una suma?

Cualquier sugerencia son muy apreciadas!!

Yb

12 REPLIES 12
BA_Pete
Super User
Super User

@YoungBuck ,

Pruebe esto y vea si funciona para usted:

sum_revenue.PNG



Now accepting Kudos! If my post helped you, why not give it a thumbs-up?

Proud to be a Datanaut!




Anonymous
Not applicable

Hola - gracias por la respuesta - funciona, pero necesita un poco de ajuste. Establece el valor en 0, pero como puede ver - todavía resumió el valor global con el positivo. En su imagen de abajo - los ingresos deseados deben ser -3500, no -3000. En la última suma - su todavía contando el positivo 500.

Anonymous
Not applicable

Golpe....

LOL, lo siento @YoungBuck ,

Por favor, pruebe la siguiente medida:

desiredRevenue = 
    IF(
        HASONEVALUE(revenue[state]),
        IF(
            SUM(revenue[revenue]) > 0,
            0,
            SUM(revenue[revenue])
        ),
        SUMX(
            FILTER(
                SUMMARIZE(
                    revenue,
                    revenue[state],
                    "sumRev", SUM(revenue[revenue])
                ),
                [sumRev] < 0
            ),
            [sumRev]
        )
    )

Obtengo el siguiente resultado:

sumLTzero.PNG



Now accepting Kudos! If my post helped you, why not give it a thumbs-up?

Proud to be a Datanaut!




Anonymous
Not applicable

La medida dada por @BA_Pete puede escribirse mucho más simple:

your revenue = 
    SUMX(
        values( revenue[state] ),
        var __rev = CALCULATE( SUM( revenue[revenue] ) )
        return
         ( __rev < 0 ) * __rev
    )

Mejor

D

Hola @darlove ,

Esa es una solución muy elegante, gracias por mejorar la mía masivamente!

¿Podría ayudar a mi comprensión de la siguiente parte de su código, por favor?

( __rev < 0 ) * __rev

¿Qué está pasando exactamente aquí y cómo, o qué términos debo buscar para aprender acerca de esta técnica por favor?

Muchas gracias.



Now accepting Kudos! If my post helped you, why not give it a thumbs-up?

Proud to be a Datanaut!




Anonymous
Not applicable

@darlove , @BA_Pete ,

gracias por las respuestas chicos - estoy usando el método de Darlove, pero todavía no sumando el grupo a la derecha. Cuando lo pongo en práctica muestro que ignora los valores positivos en el número total y simplemente sumando los negativos. Así que para una de mis columnas, por ejemplo, muestra -2500 para el valor real pero con este calc - muestra -2800 porque ignora el +300 que entró en el número total. ¿Pensamientos?

Anonymous
Not applicable

Creo que es la función values en el código lo que hace que no se calcule bien. Está pasando y mirando todos los valores de nuevo y descartando los positivos y sumando todos los negativos. En su código - si lo ejecuto, me da números negativos inflados. Así que si yo hubiera dicho +5000 y -3500 - mi columna general ahora lo establece en +1500. Con el código que dio - en lugar de establecer el resultado en 0 sólo me da el -3500 completamente ignorando los positivos .
Así que saqué los valores y probé este **** aquí está mi código real sin las columnas falsas que di antes:
Prueba 7
VAR _version - SELECTEDVALUE(Perspectiva[Versión real], "real ? real")
devolución
CALCULAR(
VAR _Rev - CALCULATE(SUM('Attributes'[Value USD]))
devolución
(_Rev < 0 ) * _Rev,
'Atributos'[Versión] - _version,
'Atributos'[KPI] - "ingresos normalizados"
)
Esto funciona en que toma el valor dado para cada mes, estoy poniendo esto en gráficos, etc así que evaluarlo por mes. Si el valor es negativo lo muestra, si es positivo lo establece en 0. El único problema que tengo es si tengo 3 valores - -500, +500, -500 por ejemplo - esto establecería el valor de +500 a 0. Hace esto, pero mi sum todavía termina siendo -500. Debe ser -1000. Así que su ignorar el ajuste de +a 0 y sólo sumando uCualquier idea de por qué?
Gracias - YB.
Anonymous
Not applicable

@BA_Pete , @darlove , Todo.....

¿Alguna idea al respecto? Todavía no puede encontrar una manera de resumir la agrupación una vez que la he establecido en cero. Después del código, sigue resumido el grupo general e ignora cómo establecemos algunos en cero para ser números positivos. ¡Cualquier pensamiento sería muy apreciado!

Yb

Anonymous
Not applicable

Lo que intentas hacer es difícil. Esto se debe a que parece que desea resumir los números de forma diferente en función de la granularidad y la dimensión que se han seleccionado. Esto requiere mucho código y la fórmula estará estrechamente ligada al modelo. Me refiero a un montón de código. Una vez que quieres resumir sobre los estados, otras veces quieres resumir a lo largo de meses. Probablemente hay otros dims que te gustaría resumir. Esto hará que la fórmula sea gigantesca y tendrá que tener en cuenta casi todos y cada uno de los atributos en muchas dimensiones. Sin saber qué dimensiones y atributos desea sumar, no hay forma de crear una fórmula. Y como dije, será gigantesco.

Mejor
D
Anonymous
Not applicable

Hola. No es magia. En DAX bools son ints disfrazados (como lo están en Python, por cierto). ( __rev < 0 ) es true o false. Si se multiplica por un número, devuelve 1 o 0. Por lo tanto, 1 * __rev - __rev cuando __rev es < 0, y 0 * __rev a 0 cuando __rev es > 0.

Mejor
D

Muy guay. Gracias por tomarse el tiempo @darlove


Now accepting Kudos! If my post helped you, why not give it a thumbs-up?

Proud to be a Datanaut!




Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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