如何在Power BI的DAX上控制小数精度

时间:2017-08-22 14:14:23

标签: powerbi dax powerbi-datasource

假设我有一个表“Table1”,字段为Field1,“Table2”为Field2。我在“表1”中有另一个计算列,“CField”具有公式:

CField = ROUND(表1 [Field1] *相关(表2 [Field2]); 2)

该公式总体上运作良好,但有一段时间它没有给出正确的价值。例如:

  • Field1 = 50.23
  • Field2 = 0.065

在计算器中计算得出3.26495。舍入到2位小数应该给出3.26,但在这种情况下,PowerBI给出3.27。

我最好的假设是,Field1 * Field2的结果计算为CURRENCY,因此在舍入到3.27之前四舍五入为3.265。

我的问题是:有没有办法强制Power BI保持我需要的精度并得到我想要的3.26的结果?

编辑:3.27不只是一个显示问题。如果我将小数添加到显示的值,它给出3.27000。

2 个答案:

答案 0 :(得分:3)

不知何故,我能够通过特定的数据类型设置重现这种情况。您可以检查这是否与您的情况相同。

正如你所说,这与Format无关(即显示问题)。问题出在Data type。当所有三列都设置为Decimal Number时,Power BI将返回3.26

decimal number

但是,当Field1更改为Fixed decimal number时,Power BI会返回3.27

fixed decimal number

根据Power BI documentation

  

固定十进制数 - 具有小数分隔符的固定位置。   小数点分隔符始终具有右侧四位数并允许   有意义的19位数。它可以代表的最大值是   922,337,203,685,477.5807(正面或负面)。固定十进制   在舍入可能引入错误的情况下,数字类型很有用。

因此,对此的解释是结果3.26495四舍五入为3.2650(四位小数),然后四舍五入为3.27(由DAX函数舍入)。

<强>结论: 将所有Data type更改为Decimal Number应解决舍入错误问题。

虽然我仍不清楚当Field1的数据类型为Fixed decimal number而非CField时,为何会出现这种情况。欢迎任何补充意见。

答案 1 :(得分:0)

检查列数据类型。在Power BI中,十进制实际上是一个浮点,因此不应与其他数据库产品(如SQL Server)中的十进制数据类型混淆。