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
iamprajot
Responsive Resident
Responsive Resident

Valor fijo al combinar dos medidas mientras se usa primero como variable en segundo lugar.

Hola

Estoy usando 2 medidas como se indica a continuación y quiero fusionarlas en una, pero al fusionar (usando cálculos de primero en segundo) estos 2, la respuesta es incorrecta y un valor fijo.

Tal vez si se utiliza el cálculo de origen como variable en el Sales hace que el valor se convierta en fijo - ¿cómo puede ser dinámico ?

Fuente de ventas ?
VAR CZK ?
SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_CZK] )
VAR USD ?
SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_USD] )
VAR EUR ?
SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_EUR] )
devolución
SWITCH ( SELECTEDVALUE(_Currency[Currency]), "CZK", CZK, "USD", USD, "EUR", EUR )

Ventas ?
VAR _Start - FECHA(2012,1,1)
VAR _End - FECHA(2020,12,31)
devolución
CALCULATE([Sales Source],B06_CO_with_Deliveries_and_Sales_Accruals[ACCRUALS_IN_DIVISION_100_FLAG] EN "Yes", "No")

Objetivo ?

VAR CZK ?
SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_CZK] )
VAR USD ?
SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_USD] )
VAR EUR ?
SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_EUR] )
SWITCH ( SELECTEDVALUE(_Currency[Currency]), "CZK", CZK, "USD", USD, "EUR", EUR )
VAR _Start - FECHA(2012,1,1)
VAR _End - FECHA(2020,12,31)
devolución
CALCULATE([Sales Source],B06_CO_with_Deliveries_and_Sales_Accruals[ACCRUALS_IN_DIVISION_100_FLAG] EN "Yes", "No")

Gracias

2 ACCEPTED SOLUTIONS
AlB
Super User
Super User

No @iamprajot

Las variables de DAX son inmutables. Su valor no cambiará después de la declaración, por lo que la aplicación de un CALCULATE en ellos no tendrá ningún efecto. También hace referencia a una variable entre corchetes [ ]. Eso debería generar un error. Prueba esto:

Target =
VAR _Start =
    DATE ( 2012, 1, 1 )
VAR _End =
    DATE ( 2020, 12, 31 )
RETURN
    CALCULATE (
        SWITCH (
            SELECTEDVALUE ( _Currency[Currency] ),
            "CZK", SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_CZK] ),
            "USD", SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_USD] ),
            "EUR", SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_EUR] )
        ),
        B06_CO_with_Deliveries_and_Sales_Accruals[ACCRUALS_IN_DIVISION_100_FLAG]
            IN { "Yes", "No" }
    )

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

View solution in original post

@iamprajot Las variables se calculan cuando se definen, que es la belleza de ellas. Nos permite crear valores estáticos, totales generales o incluso cálculos de contexto de fila, etc. y luego usar ese número más adelante en el cálculo.

Por lo tanto, dondequiera que defina la variable por primera vez, DAX calculará su valor y reemplazará todo el formlua con ese valor para cualquier momento que utilice esa variable. NO se reemplaza con la fórmula.

Las medidas son diferentes. Siempre se calculan a petición, pero tienen una función CALCULATE implícita a su alrededor. Por lo tanto, cada vez que se utiliza una medida en una fórmula DAX, DAX reemplaza esa medida con CALCULATE (fórmula de medida). No se reemplaza con el valor como variables.

En muchos casos, el uso de una variable para definir su medida y combinar en una no cambiará el resultado final, pero en su caso debe mantener el contexto que estaba sucediendo cuando estaba utilizando la medida, así que por favor utilice los resultados @AlB ha sugerido.

Como punto de partida desordenado, simplemente puede reemplazar su medida con la fórmula EN LA MISMA UBICACIóN (no usando variables), y luego simplificar desde allí para obtener lo @AlB ha sugerido. Aquí está el reemplazo inicial (desordenado):

Ventas ?
VAR _Start - FECHA(2012,1,1)
VAR _End - FECHA(2020,12,31)
devolución
CALCULATE(
VAR CZK ?
SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_CZK] )
VAR USD ?
SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_USD] )
VAR EUR ?
SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_EUR] )
devolución
SWITCH ( SELECTEDVALUE(_Currency[Currency]), "CZK", CZK, "USD", USD, "EUR", EUR )
,B06_CO_with_Deliveries_and_Sales_Accruals[ACCRUALS_IN_DIVISION_100_FLAG] EN "Sí", "No" )

Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

View solution in original post

4 REPLIES 4
AlB
Super User
Super User

No @iamprajot

Las variables de DAX son inmutables. Su valor no cambiará después de la declaración, por lo que la aplicación de un CALCULATE en ellos no tendrá ningún efecto. También hace referencia a una variable entre corchetes [ ]. Eso debería generar un error. Prueba esto:

Target =
VAR _Start =
    DATE ( 2012, 1, 1 )
VAR _End =
    DATE ( 2020, 12, 31 )
RETURN
    CALCULATE (
        SWITCH (
            SELECTEDVALUE ( _Currency[Currency] ),
            "CZK", SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_CZK] ),
            "USD", SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_USD] ),
            "EUR", SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_EUR] )
        ),
        B06_CO_with_Deliveries_and_Sales_Accruals[ACCRUALS_IN_DIVISION_100_FLAG]
            IN { "Yes", "No" }
    )

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

AllisonKennedy
Super User
Super User

@iamprajot ¿Obtiene el resultado correcto cuando están separados? ¿Por qué necesita fusionarlos en una sola medida? Vea si este post ayuda a explicar cómo las medidas tienen un CALCULATE implícito alrededor de ellas que provoca una transición de contexto: Transición de contexto DAX: Por qué puede ser útil usar una [Medida] dentro de una medida


Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

Gracias por responder @AllisonKennedy y sí estoy obteniendo el resultado correcto, ya que no está sucediendo mucho en el código DAX.

Sin embargo, lo que estoy tratando de hacer es si todo se puede hacer en una sola medida con el uso de variables, entonces por qué utilizar varias medidas que hacen referencia a medidas dependientes. Es fácil de esa manera administrar si todo está en un solo lugar en lugar de encontrar dependencias.

@iamprajot Las variables se calculan cuando se definen, que es la belleza de ellas. Nos permite crear valores estáticos, totales generales o incluso cálculos de contexto de fila, etc. y luego usar ese número más adelante en el cálculo.

Por lo tanto, dondequiera que defina la variable por primera vez, DAX calculará su valor y reemplazará todo el formlua con ese valor para cualquier momento que utilice esa variable. NO se reemplaza con la fórmula.

Las medidas son diferentes. Siempre se calculan a petición, pero tienen una función CALCULATE implícita a su alrededor. Por lo tanto, cada vez que se utiliza una medida en una fórmula DAX, DAX reemplaza esa medida con CALCULATE (fórmula de medida). No se reemplaza con el valor como variables.

En muchos casos, el uso de una variable para definir su medida y combinar en una no cambiará el resultado final, pero en su caso debe mantener el contexto que estaba sucediendo cuando estaba utilizando la medida, así que por favor utilice los resultados @AlB ha sugerido.

Como punto de partida desordenado, simplemente puede reemplazar su medida con la fórmula EN LA MISMA UBICACIóN (no usando variables), y luego simplificar desde allí para obtener lo @AlB ha sugerido. Aquí está el reemplazo inicial (desordenado):

Ventas ?
VAR _Start - FECHA(2012,1,1)
VAR _End - FECHA(2020,12,31)
devolución
CALCULATE(
VAR CZK ?
SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_CZK] )
VAR USD ?
SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_USD] )
VAR EUR ?
SUM ( B06_CO_with_Deliveries_and_Sales_Accruals[ACTUAL_AMOUNT_IN_EUR] )
devolución
SWITCH ( SELECTEDVALUE(_Currency[Currency]), "CZK", CZK, "USD", USD, "EUR", EUR )
,B06_CO_with_Deliveries_and_Sales_Accruals[ACCRUALS_IN_DIVISION_100_FLAG] EN "Sí", "No" )

Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

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.