Cognos Analytics 连接多个表

Cognos Analytics join multiple tables

我在 Cognos Analytics 11.1.7 中工作。

我有一个包含三个 table 的数据模块。 Table1和2包含我们做的所有交易,其中table1包含汇款人的交易部分,table2包含收款人的交易部分。 IE。一笔交易被分成两个tables。 Table3 持有帐号。

我想创建一个显示汇款人的客户 ID 和帐号的报告。但是,在某些情况下,汇款人的帐户丢失了。这些客户 ID 具有唯一的客户 ID(Y 而不是 X)。在那些情况下,我需要受益人的客户 ID 和帐号。考虑以下三个 tables

Table 1: 汇款人

CUSTOMER_ID ORDER_NR
1X 123
2Y 456
1X 789

Table 2:受益人

CUSTOMER_ID ORDER_NR
4X 123
6X 456
6X 789

Table 3:帐户

CUSTOMER_ID ACCOUNT_NR
1X 1111
2Y
3X 3333
4X 4444
5X 5555
6X 6666

我要的基本上是下面的报告:

今天所有交易的报告

CUSTOMER_ID ACCOUNT_NR ORDER_NR
1 1111 123
6 6666 456
1 1111 789

我已经用 switch case 解决了 CUSTOMER_ID 列:

CASE
    WHEN REMITTER.CUSTOMER_ID CONTAINS 'Y'
    THEN BENEFICIARY.CUSTOMER_ID
    ELSE REMITTER.CUSTOMER_ID
END

现在的问题是,我无法在上面创建的列和 ACCOUNTS table 之间创建连接(关系),因为我自己的列直接位于数据模块“下方”(在同一级别如左侧索引列表中的 tables)。但是,如果我在 REMITTER table“下”创建一个列,我将无法使用上面的案例计算。 Cognos 给出以下错误:

The expression is not valid.

XQE-MSR-0008 In module "Whosebug", the following query subjects are not joined: "REMITTER", "BENEFICIARY".

我试图通过在 ORDER_NR 上创建 REMITTER 和 BENEFICIARY 之间的各种连接来避免错误,但 Cognos 一直给我这个错误。

我还尝试创建一个连接的“三角形”,其中 REMITTER 和 BENEFICIARY 在 ORDER_NR 上连接,REMITTER 和 ACCOUNTS 在 CUSTOMER_ID 上连接,BENEFICIARY 和 ACCOUNTS 在 [上连接=60=]。这是行不通的。但是,当我删除 REMITTER/ACCOUNT 或 BENEFICIARY/ACCOUNTS 加入时,它与我保持加入的 table 一起工作。

我在这里慢慢失去理智。谢谢!

使用查询。

在报告中,创建一个查询来解决 remitter/beneficiary 问题,然后将其加入另一个获取帐户数据的查询。

如果必须保留此功能——因为许多不知名的报表开发人员会使用它来生成许多未知的报表——你仍然可以做同样的事情,但在数据集中。

正如 C'est Moi 所暗示的,您也可以在数据模块中执行此操作,方法是将汇款人和收款人加入计算 Customer_Id 的 table。

这些实体之间关系的性质是什么?

这是一个你应该针对模型中的所有内容提出的问题。

这种关系的模式驱动模型中对象之间的关系,进而驱动您在建模中需要做出的决定。

例如,这是桥 table 的情况吗?如果是这样,您需要了解它,以便您可以适当地建模。

最后还是落到了Kimball身上:

  • 认清事实
  • 确定尺寸

我假设基数是汇款到账户的受益人汇款人到收款人账户.

将收款人和汇款人放入模块中的一个视图中,创建其与账户的关系,删除中间table与账户的关系(这样SQL将使用您创建的关系)。

我认为将计算放在中间的 table 中也可以解决问题。

我不能说我可以在你描述的 'triangle' 连接 table 和业务目的之间映射,所以我无法使用该信息来理解实体关系。这种关系模式被特别确定为需要识别的模式,并且作为 Cognos 证明的实践的一部分,需要更正。因为我无法确定是否真的有业务目的需要这样的三角形,所以我不能也不会描述适当的建模操作,因为它们取决于实体之间关系的业务目的,这需要我们回到圣拉尔夫。