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

联接源数据 

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

当映射使用相关的关系源时,您可以在一个源限定符转换中同时联接两个源。在会话期间,源数据库在传递数据至 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值