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 证明的实践的一部分,需要更正。因为我无法确定是否真的有业务目的需要这样的三角形,所以我不能也不会描述适当的建模操作,因为它们取决于实体之间关系的业务目的,这需要我们回到圣拉尔夫。
我在 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 证明的实践的一部分,需要更正。因为我无法确定是否真的有业务目的需要这样的三角形,所以我不能也不会描述适当的建模操作,因为它们取决于实体之间关系的业务目的,这需要我们回到圣拉尔夫。