Power BI:如何动态更改货币

时间:2016-08-25 16:40:09

标签: powerbi dax

我们要求用户在仪表板中选择他想要查看的货币,如下例所示:

enter image description here

默认情况下,它是GBP,如果用户更改为USD,我们需要按美元显示支出。在幕后我们已经有了表InvoiceDetail,其中包含事先进行货币转换的列:

SpendInGBP
SpendInUSD
SpendInEUR

当用户使用ChicletSlicer选择不同的货币到不同的列时,我不确定如何映射。

1 个答案:

答案 0 :(得分:2)

如果您有一个包含所有可用格式的表格,则可以实现。

我已经创建了这些表格作为示例:

MyTable

enter image description here

CurrencyFormat

enter image description here

MyTable表中,我创建了两个名为FormatTotal Sales的措施。

Format = LASTNONBLANK ( CurrencyFormat[Format], 1 )

Total Sales = Total Sales = FORMAT(SUM(MyTable[Sales]),[Format])

注意Total Sales指标使用[Format]指标从切片器中获取所选格式。

添加ChicletSlicer并在FormatName窗格中的CurrencyFormat表格中设置Category列,您应该会得到预期的结果。

enter image description here

另请注意,我使用的格式可能因您的需要而异,因此您必须对格式字符串添加一些更改,请快速阅读documentation

    Format            Region
$#,##0;($#,##0)     SpendInUSD
£#,##0;(£#,##0)     SpendInGBP
€#,##0;(€#,##0)     SpendInEUR

更新: OP希望根据切片器获取正确列的总和。

幸运的是,您的表格中包含每种货币的列,正如您在我的建议中找到的将切片器值映射到您的度量时,这是最终表达式:

Spend =
IF (
    LASTNONBLANK ( 'Currency'[Code], 1 ) = "GBP",
    SUM ( Invoice[SpendGBP] ),
    IF (
        LASTNONBLANK ( 'Currency'[Code], 1 ) = "USD",
        SUM ( Invoice[SpendUSD] ),
        SUM ( Invoice[SpendEUR] )
    )
) 

如果您需要进一步的帮助,请告诉我。