我有来自多个国家/地区的销售事实'销售',我在该事实表中创建了一个名为'销售'[收入]
的衡量标准我想创建一个基于国家/地区动态格式化的度量标准,因此美国销售额将为100美元,英国销售额为100英镑(如果过滤器上下文包含多个国家/地区,那么它可以省略货币符号或return blank())
我有一个国家/地区维度,我已将格式字符串添加为属性。
如何在DAX中实现这一目标?我知道的唯一选择是创建5个单独的度量[Revenue $],[Revenue£]等等,但这会在客户端工具中造成混乱。我已经看过使用FORMAT但是无法让它工作
由于
答案 0 :(得分:0)
我使用查找表解决了类似的问题。 我会将我的解决方案应用到您的案例中。
创建一个名为currencycodes的表,其中包含列(符号,货币代码,ID)。它将存储每个货币代码及其符号。
确保您的销售表存储currencycodeid,该货币代码表示销售的货币。
使用以下算法为每个货币代码生成唯一ID
(((int)CurrencyCode [0])* 10000)
(((int)CurrencyCode [1])* 100)
(((int)CurrencyCode [2]))
E.x。:USD = 85 | 83 | 68 = 850000 + 8300 + 86 = 858386
我们将字符转换为ASCII码并将其设为数字。这允许我们使用MIN / MAX将DAX中的不同货币代码作为标量。
在您的指标中,您执行以下操作
如果
(
DISTINCTCOUNT(' Sales' [CurrencyCodeId])= 1,
LOOKUP(' CurrencyCodes' [Symbol],' CurrencyCodes' [Id],MIN(' Sales' [CurrencyCodeId]))& " " &安培; SUM('销售' [量]),
BLANK()
)
因此,在衡量标准中,我们获得了唯一的货币代码ID。 如果它们完全相同,我们使用查找函数来获取符号并将其与销售额的总和连接起来。
如果有某种方法将第一个值作为标量检索,则不需要MIN / MAX。 TOPN返回行。