Sql server 产品的SSAS维度显示错误的价格格式

Sql server 产品的SSAS维度显示错误的价格格式,sql-server,visual-studio,ssas,mdx,Sql Server,Visual Studio,Ssas,Mdx,我的SSAS多维数据集中有一个产品维度(SSAS 2016),它具有不同的价格属性,如销售价格和购买价格。 数据源是一个MS SQL表,每个价格列定义为数字(28,12)。 我尝试了不同的方法将这些列格式化为货币,但失败了。 货币格式在度量值组上工作正常,但在产品维度上工作不正常。 浏览器始终显示“.3200000000000”等值,而不是“0,32”。 我不知道还有什么,请帮助。您可以在维度设计器中设置格式。该属性位于源组中的NameColumn下 excel和ssrs至少忽略了维度设计器中的

我的SSAS多维数据集中有一个产品维度(SSAS 2016),它具有不同的价格属性,如销售价格和购买价格。 数据源是一个MS SQL表,每个价格列定义为数字(28,12)。 我尝试了不同的方法将这些列格式化为货币,但失败了。 货币格式在度量值组上工作正常,但在产品维度上工作不正常。 浏览器始终显示“.3200000000000”等值,而不是“0,32”。
我不知道还有什么,请帮助。

您可以在维度设计器中设置格式。该属性位于源组中的
NameColumn


excel和ssrs至少忽略了维度设计器中的格式选项

作为一种解决方法,在维度中添加一个string/nvarchar属性,该属性根据所需的模式进行格式化。您可以在数据仓库维度表中显示该属性,也可以使用视图生成该属性

添加:要格式化字符串,可以使用tsql
格式化
函数(上一版本的sql server 2012支持),如以下示例所示:

SELECT FORMAT(qry.col, 'N2') AS convertedString FROM (
    SELECT CONVERT(numeric(28,12), .320000000000) AS col
    UNION ALL
    SELECT CONVERT(numeric(28,12), 1.1) AS col
    UNION ALL
    SELECT CONVERT(numeric(28,12), 100) AS col
    UNION ALL
    SELECT CONVERT(numeric(28,12), 1000) AS col
) AS qry
nvarchar结果如下所示:

0.32
1.10
100.00
1,000.00

我试图将格式设置为货币和####0,00;-###名称列上的0,00,甚至键列上的0,00。。。它不起作用了。我想我错过了一些别的东西,也许不是。连接到SSA(Excel等)的客户端不会强制实现所有属性。我一直在寻找你可以参考的文档,但都是空白。如果SSAS将值作为.32发送,而客户端未检查/使用格式字段,则无法强制执行。另一种方法是将数据以格式化字符串的形式呈现给SSAS(我知道,我知道-但如果这是dim表中的数据,则这是参考数据,而不是要求和的度量值)。我不知道这是否有帮助,但我在执行整个过程后立即通过Visual Studio 2015浏览维度。据我所知,这个答案不正确。我相信克里斯的回答是对的。嗨,格雷格洛韦,你是对的。Chris提供了更好的方法。我的答案取决于所选择的客户是否尊重该物业的价值。Chris展示了一种很好的方法来解决支持是可选的,而不是必需的这一事实。你是说在dsv中添加一列并将其格式化为字符串吗?我在dsv中尝试了一个新的命名计算,并将其转换为“cast(saleprice as money)”,即使在VisualStudio浏览器中不起作用。在度量值组上,每种格式都可以正常工作,但在维度级别上则不行。请尝试将dsv列的第二个答案中的表达式转换为nvarchar,甚至使用format函数转换为第三个答案,然后在sql中或使用data source view的browse data函数检查结果:format终于成功了,我不确定是否有更好的方法,但这种格式(SalesPrice,'N','de')作为SalesPrice向我显示了所需的结果。