小数长度不会超过小数点后8位

问题描述 投票:0回答:2

我正在使用 Cognos Analytics 11 Report Studio,并且尝试引入带有试验小数的数字字段。然而,数据最多只显示小数点后 8 位。

我知道在 Cognos 11 中,您可以通过转到“数据”>“数据格式”>“数字”>“小数位数”来限制小数位数。但即使在尝试增加渲染的小数位数之后,我仍然停留在 8。

如果我将生成的 SQL 粘贴到我的 dbms 中,我可以验证我的数据应至少具有 13 位或更多小数位。此时我陷入困境,不太确定还能尝试什么?

注意: 所有导出类型都会发生这种情况; HTML、Excel、CSV、PDF。大家都有同样的问题。

cognos cognos-bi cognos-11
2个回答
2
投票

我从未见过 Cognos 故意排除小数长度。与上面的线程一样,我也假设这是因为 1。 精度未定义或设置为 0 或 2。 Cognos Analytics 在访问 Oracle 数据时应用的限制。

请记住,导出为 CSV 文件时,这样的情况是可以理解的,因为它有小数限制。

我会研究上面的两个案例,如果发现任何新内容,我会更新我的答案。在此期间,如果您迫切需要解决方案,您可以尝试以下一些方法,看看它们是否可以解决问题或为您提供潜在的解决方法。

解决方法 1:在所有祖先下指定十进制长度

通常,指定数据格式编号的十进制长度应该有效(不包括 CSV)。正如您上面所说,为此您将转到数据>数据格式>数字>小数位数

指定数据格式时,确保包含该列的所有祖先;您可能漏掉了一个。如果您的报告位于列表中,请确保您在

下指定小数精度

列出列enter image description here和“列出列正文enter image description here选择。

理论上,如果为两个选择器指定,这应该强制更高的小数精度。请记住,对于 CSV 导出,将忽略通过 Cognos 的数据格式化规则。所以这只适用于 HTML、Excel、PDF。

解决方法 2:转换数据

如果上述解决方案失败,另一种可能的解决方法是将您的项目(在表达式定义下)包装在 to_char() 中或转换为数字。指定其中的格式,它应该看起来像这样 to_char("Column Name", '99.9999999999')cast("Column Name", numeric(30,16)).

enter image description here

这将占小数点后 10 位,尽管您实际上可以根据需要将其设置为任意长度。

此解决方法的好处是,如果您的值仅包含 9 位小数,即使格式化为 10,您也不会收到末尾的尾随 0,并且精度将在其真实值之后被截断。与上述方法不同,这也适用于 CSV 导出。

希望其中之一有帮助!如果我找到排除过去 8 位小数的最初原因,我会更新此内容。


1
投票

Cognos Analytics 可能会对如何处理

FLOAT
做出假设。 您可能需要特意将数据类型转换为更具体的类型,例如
NUMBER(30, 16)

这是一个假设一些基本对象名称的过程。 根据需要调整。

  1. 打开查询(报告 > 查询 > 查询 1)
  2. 选择导致问题的查询项并打开表达式编辑器(属性 > 表达式或双击)
  3. 如果没有进行任何计算,数据项表达式应类似于
    [namespace].[querysubject].[queryitem]
    。 使用
    CAST()
    函数更改数据类型:
    cast([namespace].[querysubject].[queryitem], numeric(30,16))
© www.soinside.com 2019 - 2024. All rights reserved.