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
Syndicate_Admin
Administrator
Administrator

Comportamiento extraño entre SUMX y CONCATENATEX. ¿Qué está causando esto?

@Greg_Deckler @Pragati11 @parry2k @Ashish_Mathur @amitchandak

Noté un comportamiento extraño entre SUMX y CONCATENATEX. A continuación se muestra un pequeño cuadro de muestra y dos medidas. Estas dos medidas son exactamente las mismas excepto que una utiliza SUMX y otra utiliza CONCATENATEX. Estoy tratando de entender lo que está causando la diferencia de comportamiento en términos de las filas en las que estas funciones proporcionan resultados en una matriz visual.

sreenathv_0-1615016921806.png

Las medidas se dan a continuación...

SUMX Vs CONCATENATEX.png

Test SumX = 
VAR Components =
    VALUES ( Products[Component] )
VAR CostTest =
    SUMX (
        Components,
        VAR CurrentComponent = [Component]
        VAR HeaderPart =
            LOOKUPVALUE ( Products[Header], Products[Component], CurrentComponent )
        VAR CostOfHeader =
            SUMX (
                FILTER ( ALLSELECTED ( Products ), Products[Component] = HeaderPart ),
                Products[Cost]
            )
        RETURN
            CostOfHeader
    )
RETURN
    CostTest
Test ConcatenateX = 
VAR Components =
    VALUES ( Products[Component] )
VAR CostTest =
    CONCATENATEX (
        Components,
        VAR CurrentComponent = [Component]
        VAR HeaderPart =
            LOOKUPVALUE ( Products[Header], Products[Component], CurrentComponent )
        VAR CostOfHeader =
            SUMX (
                FILTER ( ALLSELECTED ( Products ), Products[Component] = HeaderPart ),
                Products[Cost]
            )
        RETURN
            CostOfHeader
    )
RETURN
    CostTest

Idealmente, ya sea que lo concatene o lo agregue, el resultado debe aparecer en la misma fila i, ¿verdad? ¿Qué está causando la diferencia?

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

No @sreenathv,

La principal diferencia es la propiedad de dos funciones. SUMX es un iterador de la propiedad de agregación digital, por lo que la función SUMX en la capa más externa se agregará de nuevo, mientras que la función CONCATENATEX no se agregará de nuevo.

Saludos
Liang
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

No @sreenathv,

La principal diferencia es la propiedad de dos funciones. SUMX es un iterador de la propiedad de agregación digital, por lo que la función SUMX en la capa más externa se agregará de nuevo, mientras que la función CONCATENATEX no se agregará de nuevo.

Saludos
Liang
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

Syndicate_Admin
Administrator
Administrator

las funciones del iterador fallan en diferentes filas. Concatenatex() falla en las filas E y F porque se produce un error en la búsqueda del encabezado. etcetera.

Las medidas se calculan para TODOS los elementos del objeto visual.

Eso es obvio. Pero esa no es mi pregunta. La pregunta es ¿por qué SUMX y CONCATENATEX no producen el resultado en la misma fila, teniendo en cuenta que el contexto de evaluación y todas las demás líneas de código son iguales?

Por ejemplo, si dos filas tienen valores 1 y 2 respectivamente, SUMX debe producir 3 y CONCATENATEX debe producir 12 en iteración en estas dos filas, si el contexto de evaluación y todos los demás escenarios posibles son los mismos. Entonces, ¿por qué el resultado aparece de manera diferente en diferentes filas? ¿Qué causa la diferencia?

Tenga en cuenta que no estoy tratando de lograr nada aquí. Este no es un escenario de la vida real que no pueda manejar en DAX. Las medidas que he publicado son casos hipotéticos escritos específicamente para ilustrar esta diferencia y el objetivo es sólo entender por qué hay una diferencia entre las evaluaciones de SUMX y CONCATENATEX en el mismo contexto exacto cuando el lenguaje DAX admite formalmente la sobrecarga del operador y los operadores no están fuertemente tipados. Es decir, en DAX, podemos usar un operador '+' en cadenas y usar de forma similar un operador '&' y dax lo manejará bien.

Por ejemplo,

"3" + "9" = 12, cuando el operador plus se utiliza en dos cadenas "3" y "9" para producir un número 12.

3 y 9 = "39", cuando el operador ampersand se utiliza en dos números 3 y 9 para producir una cadena 39.

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.

Top Kudoed Authors