Forum Discussion

GraceTCL's avatar
GraceTCL
Helper II
5 years ago
Solved

Currency conversion and division error

Hi,

 

I am trying to show a measure in local currency rate (after catering for null values) and to convert it to value in USD.

For this I am trying to follow steps at https://www.daxpatterns.com/currency-conversion/.

 

Unfortunately I am getting this error:

My sample file with above error is at link:

https://www.dropbox.com/s/hkhx0yziyakgtbn/Sample.pbix?dl=0

 

Can someone help? Thanks!

  • MFelix's avatar
    MFelix
    5 years ago

    Hi GraceTCL ,

     

    You don't have the same granularity, on the exchange rate you have a value once a month and your data you have weekly values, altough they are all in the same month when you do the filtering of the table you can notice that the values for the weeks were the date does not match the end of the month you don't have results.

     

    The image below comes from DAX studio and has you can see the result of the table is a empty value for the exchange rate:

    If by other and you change the table to the month and year you get results however this needs to be picked up from the one side of the relationship in this case the exchange rate however the total is still zero:

    An important part of the calculations is also the direction of the relationships in your case you have one to many from the exchange rate to the date table, if you use the date table you are using the many side of the relationship and you calculation will break.

     

    If you use the formula I have sent (see example below adjusted to your file) the calculation is performed correctly:

     

    Promo Cost USD V2 = 
    VAR DatesExchange =
        SUMMARIZE (
            'Exchange Rate',
            'Exchange Rate'[end_date_id],
            'Exchange Rate'[exchange_one_usd]
        )
    VAR Result =
        SUMX (
            DatesExchange,
            DIVIDE (
                [Promo Cost LC],
                'Exchange Rate'[exchange_one_usd]
            )
        )
    RETURN
        Result

     

    Context is everything in measures and it comes from the tables themselves, passing trough the relationships and going into visualizations and filters. In this case your issue is granularity and relationships.

     

     

     

     

     

6 Replies

  • Hi, GraceTCL 

    I am not sure how your actual data model looks like, but I suggest changing the model a little bit like below.

    All measures are in the sample pbix file.

     

     

    https://www.dropbox.com/s/yk60lce8i1i6qxw/Sample%20%281%29.pbix?dl=0 

     

    Hi, My name is Jihwan Kim.

     

    If this post helps, then please consider accept it as the solution to help other members find it faster, and give a big thumbs up.

     

    Linkedin: linkedin.com/in/jihwankim1975/

    Twitter: twitter.com/Jihwan_JHKIM

  • Hi GraceTCL .

     

    The issue is with your granularity since you have information on a weekly basis but you exchange is on a monthly format the calculations aren't matching so you have blank values you need to have the following measure:

    GMV_LC Exchange = 
    
        VAR DatesExchange =
            SUMMARIZE (
                'Exchange Rate',
                'Exchange Rate'[end_date_id],
                'Exchange Rate'[exchange_one_usd]
            )
        VAR Result =
                    SUMX (
                        DatesExchange,
                        DIVIDE(CALCULATE(SUM(FoodMetrics[GMV_LC])) , 'Exchange Rate'[exchange_one_usd])
                    )
        RETURN
            Result

     

    also check the relationships:

     

    Result below and in attach PBIX file:

     

     

     

     

    • GraceTCL's avatar
      GraceTCL
      Helper II

      MFelix Thanks for your reply. Your solution works. 

      May I clarify - base on your proposed calculation, are we instead summarizing the exchange rate and not the numbers in the FoodMetrics tables to a month wise view? Am I interepting wrongly as I thought it should be the other way round where we summarize the FoodMetrics table?

       

      If there are null values in GMV_LC problem, will this dax formula still work?

      • MFelix's avatar
        MFelix
        Super User

        Hi GraceTCL ,

         

        That is correct because you have different granularities between both tables so you need to pick up the values of the exchange rate first and then make the division.

         

        Has you may notice on the calculation provided by DAXPATTERNS you add a column to the summarization of the Main table with the exchange rate, in this case I'm not doing that I'm picking up the value for that month of the exchange rate and use it on the division.

         

        To avoid errors you can add an adittional parameter on the divide with a 0 or some other value similar to this:

         

        GMV_LC Exchange =
        VAR DatesExchange =
            SUMMARIZE (
                'Exchange Rate',
                'Exchange Rate'[end_date_id],
                'Exchange Rate'[exchange_one_usd]
            )
        VAR Result =
            SUMX (
                DatesExchange,
                DIVIDE (
                    CALCULATE ( SUM ( FoodMetrics[GMV_LC] ) ),
                    'Exchange Rate'[exchange_one_usd],
                    0 -- alternative result if division is error or infinite
                )
            )
        RETURN
            Result