2013-07-17 132 views
0

我对Cognos有一个奇怪的问题。你可以看到这个问题下面的图片中:Cognos正在总结措施

List result

每个Credit Alert可以有与之关联的单个调整。但金额通常在数百或数千。但显然我们只是总结了所有的Adjustment Amounts

下面我在建模层中附加了Cognos Framework Manager模型(large image link)。正如你所看到的F_CREDIT_ALERT有链接到D_INVOICE_ADJ其链接到F_INVOICE_ADJ(它有措施Request AmountGST这是用来创建Adjustment Amount ex GST)。

Cognos Framework Manager model

这个问题的任何帮助将是非常赞赏。此外,关于该模型的任何一般提示/评论也会有帮助。

感谢

回答

0

首先,生成报告Studio中的SQL,看看发生了什么(工具 - >显示生成的SQL)。这会给我们一个很好的想法。

可能,这是模型中的循环连接问题。意思是,Cognos从F_CREDIT_ALERT到F_INVOICE_ADJ有多条路径(通过D_INVOICE_ADJ或D_SNAPSHOT_DATE)。这也存在于多个地方。 Cognos在决定哪条路径时并不聪明;在最长的时间里,它只是首先按字母顺序排列(可能还是这样,但是我很久以前还没有这种类型的连接模型)。您需要对此进行建模 - 一种方法是创建一些对象的多个实例,例如D_SNAPSHOT_DATE。

您是否计划在Query Studio中提供此功能?我预见了给定多个事实表和循环联接的主要聚合问题。您可能需要用简单的星型模式创建更小的集市。一些建模行为可能更容易通过创建SQL视图进行处理,这些视图以适当的聚合级别进行连接。

我去年写了这弥补我们的一些新的开发者,也可能是一些帮助,如果你想创建一个强大的,成熟的模式:http://therealtoddnappi.blogspot.com/2012/07/cognos-modeling-guidelines-and-standards.html

+0

感谢您的答复。我从模型中删除了循环连接。基本上,如果我运行一个测试,从'F_INVOICE_ADJ'中选择'Request Amount',并从'F_CREDIT_ALERT'中选择FACT_LKUP_KEY,它可以正常工作。当我点击“自动总和”时,它会将查询更改为交叉连接。交叉连接SQL:http://pastebin.com/njVtyhFb – mlevit

+0

这可能是由于F_INVOICE_ADJ和F_CREDIT_ALERT之间的基数为1..N而导致的。 Cognos可能无法正确解释这一点。创建视图的另一种方法是将查询主题合并在一起以创建虚拟星型模式。我不确定这对您的数据是否合理,但这是一种常用技术。例如,首先将F_INVOICE_ADJ连接到D_INVOICE_ADJ,创建一个新的QS,然后将其连接到F_CREDIT_ALERT。在这两种技术之间,你应该能够正确控制基数。 – toddsonofodin