第三节 常用组件 之 Source Qualifier 连接源数据

来源:互联网 发布:淘宝助理怎么上架商品 编辑:程序博客网 时间:2024/05/23 00:17

联接源数据 

您可以使用一个源限定符转换来联接来自多个关系表的数据。这些表必须能从相同的实例或数据库服务器访问。

当映射使用相关的关系源时,您可以在一个源限定符转换中同时联接两个源。在会话期间,源数据库在传递数据至 PowerCenter 之前先执行联接。如果源表编制了索引,此操作可以增强性能。

提示: 为异类源使用联接转换以及用联接转换联接平面文件。 

默认联接

当您在一个源限定符转换中联接相关表时,PowerCenter 将基于每个表中的相关键来联接表。
这种默认联接是内同等联接,在 WHERE 子句中使用以下语法:
Source1.column_name = Source2.column_name

默认联接中的列必须具有:
主键-外键关系
匹配的数据类型

例如,您可以查看当月的所有订单,包括订单编号、订单数量和客户名称。ORDERS 表包括订单编号和每份订单的数量,但是不包括客户名称。要包括客户名称,您需要联接 ORDERS 和 CUSTOMERS 表。因为两个表均包括客户标识,所以您可以在一个源限定符转换中联接两个表。 


当您包括多个表时,PowerCenter Server 将为映射中使用的所有列生成 SELECT 语句。在本例中,SELECT 语句与以下语句类似:

SELECT CUSTOMERS.CUSTOMER_ID, CUSTOMERS.COMPANY, CUSTOMERS.FIRST_NAME, CUSTOMERS.LAST_NAME, CUSTOMERS.ADDRESS1, CUSTOMERS.ADDRESS2, CUSTOMERS.CITY, CUSTOMERS.STATE, CUSTOMERS.POSTAL_CODE, CUSTOMERS.PHONE, CUSTOMERS.EMAIL, ORDERS.ORDER_ID, ORDERS.DATE_ENTERED, ORDERS.DATE_PROMISED, ORDERS.DATE_SHIPPED, ORDERS.EMPLOYEE_ID, ORDERS.CUSTOMER_ID, ORDERS.SALES_TAX_RATE, ORDERS.STORE_ID
FROM CUSTOMERS, ORDERS
WHERE CUSTOMERS.CUSTOMER_ID=ORDERS.CUSTOMER_ID


WHERE 子句是一个同等联接,它包括来自 ORDERS 和 CUSTOMER 表的 CUSTOMER_ID。 


自定义联接 
如果需要覆盖默认联接,您可以输入 WHERE 子句的内容,这指定了自定义查询中的联接。 
在下列情况下您可能需要覆盖默认联接: 

  1. 列不具有主键-外键关系。

  2. 联接用到的列的数据类型不匹配。
  3. 您需要指定不同类型的联接,例如外部联接。

异类联接

要执行异类联接,请使用联接转换。当您需要联接下列类型的源时,请使用联接转换:
  1. 联接不同源数据库的数据
  2. 联接不同平面文件系统的数据
  3. 联接关系源和平面文件

创建键关系

        如果表具有主键-外键关系,那么您可以在源限定符转换中联接表。但是,您可以在 Source Analyzer 中通过链接不同表中相匹配的列来创建主键-外键关系。这些列不必是键,但它们应该包括在每个表的索引中。
        提示: 如果源表超过 1000 行,您可以通过对主键-外键编制索引来增强性能。如果源表少于 1000 行,则对主键-外键编制索引反而会降低性能。
        例如,某零售连锁公司办公室需要基于订单提取收到的付款。ORDERS 和 PAYMENTS 表没有共享主键和外键。但是,两个表都包括 DATE_SHIPPED 列。您可以在 Source Analyzer 的元数据中创建主键-外键关系。
注意,两个表未链接。因此,Designer 不会识别 DATE_SHIPPED 列上的关系。
        您可以通过链接 DATE_SHIPPED 列在 ORDERS 和 PAYMENTS 表之间创建一种关系。Designer 将自动向 ORDERS 和 PAYMENTS 表定义中的 DATE_SHIPPED 列添加主键和外键。

        创建两个表之间的关系

 

        如果不连接列,Designer 将不会识别关系。
        主键-外键关系仅存在于元数据中。您无需生成 SQL 或更改源表。
        一旦键关系存在,您就可以使用源限定符转换来联接两个表。默认情况下,联接基于 DATE_SHIPPED。


0 0
原创粉丝点击