我通过使用查找表解决了类似的问题。我会将我的解决方案应用于您的案例。
使用列 (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 返回行。