我正在使用 Cognos Analytics 11 Report Studio,并且尝试引入带有试验小数的数字字段。然而,数据最多只显示小数点后 8 位。
我知道在 Cognos 11 中,您可以通过转到“数据”>“数据格式”>“数字”>“小数位数”来限制小数位数。但即使在尝试增加渲染的小数位数之后,我仍然停留在 8。
如果我将生成的 SQL 粘贴到我的 dbms 中,我可以验证我的数据应至少具有 13 位或更多小数位。此时我陷入困境,不太确定还能尝试什么?
注意: 所有导出类型都会发生这种情况; HTML、Excel、CSV、PDF。大家都有同样的问题。
我从未见过 Cognos 故意排除小数长度。与上面的线程一样,我也假设这是因为 1。 精度未定义或设置为 0 或 2。 Cognos Analytics 在访问 Oracle 数据时应用的限制。
请记住,导出为 CSV 文件时,这样的情况是可以理解的,因为它有小数限制。
我会研究上面的两个案例,如果发现任何新内容,我会更新我的答案。在此期间,如果您迫切需要解决方案,您可以尝试以下一些方法,看看它们是否可以解决问题或为您提供潜在的解决方法。
通常,指定数据格式编号的十进制长度应该有效(不包括 CSV)。正如您上面所说,为此您将转到数据>数据格式>数字>小数位数。
指定数据格式时,确保包含该列的所有祖先;您可能漏掉了一个。如果您的报告位于列表中,请确保您在
下指定小数精度理论上,如果为两个选择器指定,这应该强制更高的小数精度。请记住,对于 CSV 导出,将忽略通过 Cognos 的数据格式化规则。所以这只适用于 HTML、Excel、PDF。
如果上述解决方案失败,另一种可能的解决方法是将您的项目(在表达式定义下)包装在 to_char() 中或转换为数字。指定其中的格式,它应该看起来像这样 to_char("Column Name", '99.9999999999') 或 cast("Column Name", numeric(30,16)).
这将占小数点后 10 位,尽管您实际上可以根据需要将其设置为任意长度。
此解决方法的好处是,如果您的值仅包含 9 位小数,即使格式化为 10,您也不会收到末尾的尾随 0,并且精度将在其真实值之后被截断。与上述方法不同,这也适用于 CSV 导出。
希望其中之一有帮助!如果我找到排除过去 8 位小数的最初原因,我会更新此内容。
Cognos Analytics 可能会对如何处理
FLOAT
做出假设。 您可能需要特意将数据类型转换为更具体的类型,例如 NUMBER(30, 16)
。
这是一个假设一些基本对象名称的过程。 根据需要调整。
[namespace].[querysubject].[queryitem]
。 使用 CAST()
函数更改数据类型: cast([namespace].[querysubject].[queryitem], numeric(30,16))