Cognos 简明教程

Cognos - Relationships in Metadata Model

关系用于创建元数据模型中多个对象上的查询。关系可以是双向的,若不创建关系,则对象就是元数据模型中没有用处的独立实体。

元数据模型中的每个对象都使用数据源中的主键或外键进行连接。您可以在元数据模型中创建或删除关系以满足业务要求。

有一些可用的关系,其中一部分包括:

  1. One to One - 当一个查询主题的实例与另一个实例相关时。例如:每个客户都有一个客户 ID。

  2. One to Many - 当一个查询主题的实例与多个实例相关时,就会发生这种关系。例如:每个医生都有许多患者。

  3. Many to Many - 当一个查询主题的许多实例与多个实例相关时,就会发生这种关系。例如:每个患者都有许多医生。

Cardinality Concept

它被定义为两个查询主题中每个主题的相关行的数目。基数以下列方式使用:

  1. 星形架构中的循环联接

  2. 优化访问数据源

  3. 避免对事实数据进行重复计数

当使用关系型数据库作为数据源时,可以考虑以下规则来定义基数 −

  1. Primary and Foreign keys

  2. 匹配查询项名称唯一表示已编制索引的列

  3. Matching query item names

定义基数的最常用方法是使用主键和外键。若要查看已导入的关键信息,请右键单击查询主题 → 编辑定义。您可以从数据源中导入多对多关系、可选关系和外连接。

Relationship Notation in Metadata Model

在 Framework manager 中,关系由 Merise notation 表示。该符号的第一部分表示此关系的连接类型。

  1. 0..1 表示零或一个匹配

  2. 1..1 表示一对一匹配

  3. 0..n 表示零或无匹配

  4. 1..n 表示一个或多个匹配

  5. 1 − 来自两个对象的包含所有匹配行的内连接。

  6. 0 − 来自两方的包含不匹配项的外部连接。

Creating or Modifying the Relationships

在元数据导入中创建一个关系,或者组合无连接的逻辑相关对象。您可以在对象之间手动创建关系,也可以基于选定条件自动定义对象之间的关系。

若要创建关系,请使用 CTRL 键选择一个或多个查询项目、主题或维度。然后转到 Action Menu → Create Relationship

如果这是个有效关系,Framework manager 将创建此关系的快捷方式。然后您可以单击确定按钮。

f sales

在元数据导入后创建关系后,您还可以在 Framework manager 中修改该关系或基数。

若要编辑关系,请单击关系,然后从 Action menu → click Edit Definition 中选择。

Relationship Expression tab → Select Query items, Cardinalities and Operators 中选择。

relationship defination

若要创建附加连接,请转到 Relationship Expression tab → New Link and Define New Relationship

若要测试此关系,请转到 Relationship SQL tab → rows to be returned → Test

relationship sql tab

单击确定按钮。

Creating a Relationship Shortcut

关系快捷方式定义为指向现有关系的指针,并重用现有关系的定义。如果对源关系进行任何更改,则会自动在快捷方式中更新更改。关系快捷方式还用于解决查询主题之间的模棱两可的关系。

只要您创建关系并满足以下这两个条件,Framework Manager 就会询问您是否要创建关系快捷方式。

  1. 新关系的至少一端是快捷方式。

  2. 原始对象之间存在关系。

转到 Action Menu → Create Relationship

如果这是有效的关系,则 Framework manager 希望创建到该关系的快捷方式。单击是。将显示一个列表,其中列出了所有关系,这些关系的一端是模型对象,而另一端是另一个模型对象或到另一个模型对象的快捷方式。

单击确定。

Create a Query Subject

查询主题定义为具有一对固有关系的查询项目集合。可以使用 Framework Manager 使用查询主题自定义他们检索的数据。

以下是 Framework Manager 中的查询主题类型 −

  1. Data Source Query Subject − 这些查询主题基于 SQL 语句定义的关系元数据,并且在将元数据导入模型时为每个表和视图自动创建。 Note − 数据源查询主题一次仅引用一个数据源的数据,但您可以直接编辑定义检索数据的 SQL 以编辑查询主题。

  2. Model Query Subjects − 它们不是直接从数据源创建的,而是基于在其他查询主题或维度中定义的查询项目。使用模型查询主题,它允许您创建更抽象和业务化的数据源视图。

  3. Stored Procedure Query Subjects − 从关系数据源导入过程时创建这些查询主题。IBM Cognos Framework Manager 仅支持用户定义的存储过程,不支持系统存储过程。

new querysubject

How to create a Data Source Query Subject?

来自 Actions Menu → Create → Query Subject

action menu

输入新查询主题的名称。

单击 Data Source → OK to open new Query Subject wizard

data source

按照步骤操作直到出现完成按钮 → 完成

右键单击 Query Subject → Edit Definition 。单击 SQL tab → Available database objects box, drag objects to the SQL box

您还可以插入数据源引用、插入宏、嵌入计算并嵌入筛选器。

从列表中选择操作,然后单击确定。

query information

Purpose

Action

Granularity Control

Determinants Tab

To test query subject

Test Tab

To view SQL

Query Information Tab

查看数据源中的系统表

“显示系统对象”复选框

Edit SQL

当您编辑任何关系数据源,创建或查询关系数据库时,将在后台使用 SQL。您可以使用以下选项:

  1. Cognos SQL

  2. Native SQL

  3. Pass through SQL

要编辑模型查询主题的 SQL,请从查询信息选项卡复制代码,并粘贴到新的数据源查询主题。有可能将模型查询主题转换为数据源查询主题。

  1. 单击数据源查询主题和 Action menu → Edit Definition

  2. 单击 SQL 按钮,拖动对象或键入所需的 SQL。

  3. Click OK.

edit sql

Change Type of SQL

在定义数据源查询主题时,可以选择要使用的 SQL 类型。在考虑 SQL 类型时应考虑以下因素:

SQL Type

Advantage

Disadvantage

Cognos SQL

改进性能可用于所有受支持的数据库

不支持非标准 SQL

Native SQL

Performance Optimized Specific to Database

SQL 在不同的数据库上不起作用。对子查询,您不能使用数据源不支持的 SQL。

Pass Through SQL

数据库支持的任何 SQL

FrameworkManager 没有自动优化性能的选项

另请注意,不能更改基于 OLAP 数据源的查询主题的 SQL 类型。

要更改 SQL 类型,请转到要更改的查询主题。

转到 Actions menu → Edit Definition and go to Query Information button

sql settings tab

转到 Options → SQL Settings tab

要更改 SQL 类型,请单击“SQL 类型列表”。然后,单击“确定”。