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

Diferentes resultados usando variable en lugar de medida

¡Hola a todos!
¿Podría alguien explicarme lo que está pasando entre bastidores? Realmente no puedo entender lo que está pasando.
Así que tengo el visual que se muestra a continuación. Sólo me interesan las columnas Antes y Después. La primera captura de pantalla es la correcta y la segunda es la problemática. Verá que en la segunda captura de pantalla los valores de ambas columnas son los mismos.

Annotation 2020-06-25 132704.pngAnnotation 2020-06-25 133136.png

Ahora a continuación comparto todas las medidas que usé para ambas columnas. También muestro qué línea cambio para pasar de la correcta a la incorrecta (está en la última medida en la parte inferior):

Before Snapshot ID = 
CALCULATE(
    MIN('Snapshot Info'[Snapshot ID]); 
    FILTER(
        ALL('Snapshot Info');
        'Snapshot Info'[Date Time] = MIN('Snapshot Info'[Date Time])
    )
)

Before Avg Time Profile = 
CALCULATE (
    AVERAGE ( 'TIME PROFILE'[Value] );
    FILTER(
        'TIME PROFILE';
        'TIME PROFILE'[Snapshot ID] = [Before Snapshot ID]
    );
    TREATAS (
        VALUES ( 'Snapshot Info'[Start Time] );
        'TIME PROFILE'[Start Time Interval]
    )
)

After Snapshot ID = 
CALCULATE(
    MAX('Snapshot Info'[Snapshot ID]); 
    FILTER(
        ALL('Snapshot Info');
        'Snapshot Info'[Date Time] = MAX('Snapshot Info'[Date Time])
    )
)

After Avg Time Profile = 
var __After = 
    CALCULATE(
        MAX('Snapshot Info'[Snapshot ID]);
        FILTER(
            ALL('Snapshot Info');
            'Snapshot Info'[Date Time] = MAX('Snapshot Info'[Date Time])
        )
    )
return            
CALCULATE (
    AVERAGE ( 'TIME PROFILE'[Value] );
    FILTER(
        'TIME PROFILE';
        //This works (correct screenshot)
        'TIME PROFILE'[Snapshot ID] = __After
        //This doesn't (problematic screenshot)
        'TIME PROFILE'[Snapshot ID] = [After Snapshot ID]  
    );
    TREATAS (
        VALUES ( 'Snapshot Info'[Start Time] );
        'TIME PROFILE'[Start Time Interval]
    )
)

Entonces, ¿podría alguien explicarme qué está pasando? Gracias

3 REPLIES 3
v-xicai
Community Support
Community Support

Hola @NikBat2020 ,

En su escenario, hay dos contextos de filtro " FILTER( 'TIME PROFILE'..." y " TREATAS( ...)", y cuando creamos la variable como "var __After ? CALCULATE(...) ", la expresión se ejecuta en los dos contextos de filtro, que es el atributo en el que se evalúa el cálculo. Como resultado. para cada atributo , el PROMEDIO ( 'TIME PROFILE'[Value] ) calcular dentro de los contextos de filtro de primicia completos " FILTER( 'TIME PROFILE'..." y "TREATAS( ...)". Así que devolverá el resultado correcto.

Mientras que para la medida independiente [Después del identificador de instantánea ], los valores se calculan dentro del ámbito en el que se escriben y, a continuación, el resultado de ellos se almacena y se utiliza en el resto de la expresión de [Después del perfil de tiempo medio], que es el contexto del filtro.

Saludos

Amy

Equipo de apoyo a la comunidad _ Amy

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Anonymous
Not applicable

Hola @v-xicai

Gracias por su respuesta! Desafortunadamente todavía no podía entender lo que está pasando. Usted dijo:


Mientras que para la medida independiente [Después del identificador de instantánea ], los valores se calculan dentro del ámbito en el que se escriben y, a continuación, el resultado de ellos se almacena y se utiliza en el resto de la expresión de [Después del perfil de tiempo medio], que es el contexto del filtro.


Por lo tanto, si entiendo esto correctamente, [Después del ID de instantánea] se ha calculado de antemano y su resultado se está utilizando para filtrar [Después del perfil de tiempo medio]. Pero eso no significa que ya que tengo la cláusula ALL(...), siempre obtendría el resultado correcto y sería capaz de filtrar los valores que necesito?

Hola @NikBat2020 ,

Puede consultar los enlaces:

https://community.powerbi.com/t5/Desktop/var-different-result/td-p/283143 ,

https://community.powerbi.com/t5/Desktop/VAR-different-result-than-without-it/td-p/518723,

https://radacad.com/caution-when-using-variables-in-dax-and-power-bi .

Saludos

Amy

Equipo de apoyo a la comunidad _ Amy

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

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.