1

我有一个来自多个国家/地区的销售事实“销售”,并且在该事实表中创建了一个名为“销售”[收入]的度量

我想创建一个根据国家动态格式化的度量,因此美国销售额将格式化为 100 美元,英国销售额格式化为 100 英镑(如果过滤器上下文包括多个国家,那么它可以省略货币符号或返回空白( ))

我有一个国家维度,我将格式字符串添加为属性。

如何在 DAX 中实现这一点?我知道唯一可行的选择是创建 5 个单独的度量 [Revenue $]、[Revenue £] 等,但这会在客户端工具中造成混乱。我看过使用 FORMAT 但不能让它工作

谢谢

4

1 回答 1

0

我通过使用查找表解决了类似的问题。我会将我的解决方案应用于您的案例。

使用列 (symbol,currencycode,id) 创建一个名为 currencycodes 的表。它将存储每种货币代码及其符号。

确保您的 sales 表存储了表示销售所用货币的 currencycodeid。

使用以下算法为每个货币代码生成唯一的 id

(((int) CurrencyCode[0]) * 10000)

(((int) CurrencyCode[1]) * 100)

(((int) CurrencyCode[2]))

例如:美元 = 85|83|68 = 850000 + 8300 + 86 = 858386

我们将字符转换为 ASCII 码并将其设为数字​​。这使我们可以使用 MIN/MAX 将 DAX 中的不同货币代码作为标量。

在您的度量中,您执行以下操作

如果

(

DISTINCTCOUNT('Sales'[CurrencyCodeId]) = 1,

LOOKUP('CurrencyCodes'[Symbol], 'CurrencyCodes'[Id], MIN('Sales'[CurrencyCodeId])) & " " & SUM('Sales'[Amount]),

空白的()

)

因此,在度量中,我们得到了唯一货币代码 ID 的数量。如果它们都相同,我们使用查找函数来获取符号并将其与销售额的总和连接起来。

如果有某种方法可以将第一个值作为标量检索,则不需要 MIN/MAX。TOPN 返回行。

于 2014-12-27T19:36:34.177 回答