Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago
Solved

Medida no correcta Moneda

Tenga una tabla llamada Cost_Data y tiene costos en tres monedas diferentes USD, GBP y EUR. Otra tabla llamada Currency_Convert con columnas Moneda, Símbolo, Formato. Estoy tratando de tener una rebanadora que puede seleccionar USD, GB o EUR y el costo se actualizará. Lo que tengo funciona, pero no es extraer el símbolo correcto de los datos. Intenté usar el formato de mi tabla de Currency_convert, pero eso lo cambia a texto y no tiene valor numérico para usar en otro lugar.

Aquí está el archivo.
https://drive.google.com/file/d/1q3Ep2NC83Bx9lnirCd6LEgJbcpuBsDSS/view?usp=sharing

Mi segmentación de datos se muestra en EUR y el número es correcto para la columna de moneda verdadera, pero el símbolo es incorrecto.

Pretengineer_0-1650477075794.png

  • Hay @Pretengineer ,

    La razón por la que el gráfico de líneas no se muestra después de usar la nueva medida es que los datos obtenidos en el formato FORMAT son esencialmente una cadena de texto. Incluso si el formato de los datos se cambia a número o moneda, no se puede ordenar por tamaño, sino solo en orden alfabético.

    Pero los valores en el gráfico de líneas deben ser del tipo de datos numéricos, por lo que no puede mostrar nada.

    Si desea que el símbolo se desplace correctamente en el gráfico de líneas, debe tener tres medidas, establecer el símbolo de moneda correspondiente para cada medida, aquí está mi solución.

    Cost EUR' =
    IF (
        SELECTEDVALUE ( Currency_Convert[Currency] ) = "EUR",
        MAX ( 'Cost_Data'[Cost EUR] ),
        BLANK ()
    )
    
    Cost GBP' =
    IF (
        SELECTEDVALUE ( Currency_Convert[Currency] ) = "GBP",
        MAX ( 'Cost_Data'[Cost GBP] ),
        BLANK ()
    )
    
    Cost USD' =
    IF (
        SELECTEDVALUE ( Currency_Convert[Currency] ) = "USD",
        MAX ( 'Cost_Data'[Cost USD] ),
        BLANK ()
    )
    

    Obtiene el resultado correcto para cada moneda.

    Adjunto mi muestra a continuación como referencia.

    Saludos
    Equipo de apoyo a la comunidad _ kalyj

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

5 Replies

  • Hay @Pretengineer ,

    Aquí una solución:

    tomfox_0-1650481436510.png

    tomfox_1-1650481450594.png

    tomfox_2-1650481463569.png

    Y aquí su medida DAX actualizada:

    True Currency = 
    Var USD_Cost = Max(Cost_Data[Cost USD])
    Var GBP_Cost = Max(Cost_Data[Cost GBP])
    Var EUR_Cost = Max(Cost_Data[Cost EUR])
    Var Currency_ID = Cost_Data[Currency Selected]
    
    Return
    SWITCH( 
       TRUE(),
            Currency_ID = "USD" , FORMAT(USD_Cost,"$#,##0"),
            Currency_ID = "GBP" , FORMAT(GBP_Cost,"£#,##0"),
            Currency_ID = "EUR" , FORMAT(EUR_Cost,"€#,##0"),
            0)

    ¿Esto resuelve su problema? 🙂

    [EDITAR]

    Si desea mostrar dos decimales, puede usar este código aquí:

    True Currency = 
    Var USD_Cost = Max(Cost_Data[Cost USD])
    Var GBP_Cost = Max(Cost_Data[Cost GBP])
    Var EUR_Cost = Max(Cost_Data[Cost EUR])
    Var Currency_ID = Cost_Data[Currency Selected]
    
    Return
    SWITCH( 
       TRUE(),
            Currency_ID = "USD" , FORMAT(USD_Cost,"$#.00"),
            Currency_ID = "GBP" , FORMAT(GBP_Cost,"£#.00"),
            Currency_ID = "EUR" , FORMAT(EUR_Cost,"€#.00"),
            0)

    /Tom
    https://www.tackytech.blog/
    https://www.instagram.com/tackytechtom/

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      @tomfox

      Gracias por la sugerencia, en realidad probé esto y funciona para la tabla, pero no funciona en el gráfico. Todavía no entiendo por qué el gráfico no funciona. Además, en la tabla el total de esa columna también es incorrecto.

      Pretengineer_0-1650483219096.png

  • @tomfox

    Gracias por la sugerencia, en realidad probé esto y funciona para la tabla, pero no funciona en el gráfico. Todavía no entiendo por qué el gráfico no funciona. Además, en la tabla el total de esa columna también es incorrecto.

    Pretengineer_0-1650482586486.png

  • Hay @Pretengineer ,

    Este parece ser un problema algo conocido. Dado que la función de formato traduce el número a texto, funciona bien en tablas pero no en gráficos... Busqué un poco en Google y encontré esto:

    Resuelto: DAX para cambiar dinámicamente el símbolo de moneda faci... - Microsoft Power BI Community

    Entonces, mi sugerencia es tener dos medidas, una para las tablas con el signo de moneda correcto. Y otro para gráficos. Todavía muestra la conversión correcta del tipo de cambio, pero se pierde el símbolo de la moneda....

    tomfox_0-1650485734557.png

    Aquí las medidas (fijé los valores totales también 🙂 😞

    True Currency Number = 
    Var USD_Cost = SUM(Cost_Data[Cost USD])
    Var GBP_Cost = SUM(Cost_Data[Cost GBP])
    Var EUR_Cost = SUM(Cost_Data[Cost EUR])
    Var Currency_ID = Cost_Data[Currency Selected]
    
    RETURN
    SWITCH( 
        TRUE(),
            Currency_ID = "USD" , USD_Cost,
            Currency_ID = "GBP" , GBP_Cost,
            Currency_ID = "EUR" , EUR_Cost,
            0
    )
    True Currency Text = 
    Var Currency_ID = Cost_Data[Currency Selected]
    RETURN
    SWITCH( 
       TRUE(),
            Currency_ID = "USD" , FORMAT(Cost_Data[True Currency Number],"$#.00"),
            Currency_ID = "GBP" , FORMAT(Cost_Data[True Currency Number],"£#.00"),
            Currency_ID = "EUR" , FORMAT(Cost_Data[True Currency Number],"€#.00"),
            0
    )


    Además, cambié el tipo de las medidas a Moneda para el texto [Moneda verdadera] y a Decimal para [Número de moneda verdadera].

    /Tom
    https://www.tackytech.blog/
    https://www.instagram.com/tackytechtom/

  • Hay @Pretengineer ,

    La razón por la que el gráfico de líneas no se muestra después de usar la nueva medida es que los datos obtenidos en el formato FORMAT son esencialmente una cadena de texto. Incluso si el formato de los datos se cambia a número o moneda, no se puede ordenar por tamaño, sino solo en orden alfabético.

    Pero los valores en el gráfico de líneas deben ser del tipo de datos numéricos, por lo que no puede mostrar nada.

    Si desea que el símbolo se desplace correctamente en el gráfico de líneas, debe tener tres medidas, establecer el símbolo de moneda correspondiente para cada medida, aquí está mi solución.

    Cost EUR' =
    IF (
        SELECTEDVALUE ( Currency_Convert[Currency] ) = "EUR",
        MAX ( 'Cost_Data'[Cost EUR] ),
        BLANK ()
    )
    
    Cost GBP' =
    IF (
        SELECTEDVALUE ( Currency_Convert[Currency] ) = "GBP",
        MAX ( 'Cost_Data'[Cost GBP] ),
        BLANK ()
    )
    
    Cost USD' =
    IF (
        SELECTEDVALUE ( Currency_Convert[Currency] ) = "USD",
        MAX ( 'Cost_Data'[Cost USD] ),
        BLANK ()
    )
    

    Obtiene el resultado correcto para cada moneda.

    Adjunto mi muestra a continuación como referencia.

    Saludos
    Equipo de apoyo a la comunidad _ kalyj

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