第三节 常用组件 之 Source Qualifier 连接源数据
来源:互联网 发布:淘宝助理怎么上架商品 编辑:程序博客网 时间:2024/05/23 00:17
联接源数据
您可以使用一个源限定符转换来联接来自多个关系表的数据。这些表必须能从相同的实例或数据库服务器访问。
当映射使用相关的关系源时,您可以在一个源限定符转换中同时联接两个源。在会话期间,源数据库在传递数据至 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 子句的内容,这指定了自定义查询中的联接。
在下列情况下您可能需要覆盖默认联接:
列不具有主键-外键关系。
- 联接用到的列的数据类型不匹配。
- 您需要指定不同类型的联接,例如外部联接。
异类联接
要执行异类联接,请使用联接转换。当您需要联接下列类型的源时,请使用联接转换:
- 联接不同源数据库的数据
- 联接不同平面文件系统的数据
- 联接关系源和平面文件
创建键关系
如果表具有主键-外键关系,那么您可以在源限定符转换中联接表。但是,您可以在 Source Analyzer 中通过链接不同表中相匹配的列来创建主键-外键关系。这些列不必是键,但它们应该包括在每个表的索引中。
提示: 如果源表超过 1000 行,您可以通过对主键-外键编制索引来增强性能。如果源表少于 1000 行,则对主键-外键编制索引反而会降低性能。
例如,某零售连锁公司办公室需要基于订单提取收到的付款。ORDERS 和 PAYMENTS 表没有共享主键和外键。但是,两个表都包括 DATE_SHIPPED 列。您可以在 Source Analyzer 的元数据中创建主键-外键关系。
注意,两个表未链接。因此,Designer 不会识别 DATE_SHIPPED 列上的关系。
您可以通过链接 DATE_SHIPPED 列在 ORDERS 和 PAYMENTS 表之间创建一种关系。Designer 将自动向 ORDERS 和 PAYMENTS 表定义中的 DATE_SHIPPED 列添加主键和外键。
创建两个表之间的关系
主键-外键关系仅存在于元数据中。您无需生成 SQL 或更改源表。
一旦键关系存在,您就可以使用源限定符转换来联接两个表。默认情况下,联接基于 DATE_SHIPPED。
- 第三节 常用组件 之 Source Qualifier 连接源数据
- 第八节 常用组件 之 Source Qualifier 使用排序端口
- 第一节 常用组件 之 Source Qualifier 概述
- 第九节 常用组件 之 Source Qualifier Distinct
- 第五节 常用组件 之 Source Qualifier 输入用户定义的联接
- 第二节 常用组件 之 Source Qualifier 默认查询
- 第四节 常用组件 之 Source Qualifier 添加 SQL 语句
- 第六节 常用组件 之 Source Qualifier 外部联接
- 第七节 常用组件 之 Source Qualifier 输入过滤器
- 第十一节 常用组件 之 Source Qualifier 创建SQ转换
- 第三节 常用组件 之 Filter 创建FIL
- 第三节 常用组件 之 Aggregator 分组依据端口
- 第十节 常用组件 之 Source Qualifier 会话前和会话后 SQL
- 第三节 常用组件 之 Lookup 关系和平面文件查找
- 第三节 ElasticSearch数据导入之Logstash
- 第三节 hive之元数据
- 第三节:整型数据和实型数据
- 第三节 css常用属性&&盒模型
- Discuz! 全局变量 $_G
- 从零开始学swift(四)-算法之二叉树的建立与遍历
- B树与MySql
- HDU 1180 诡异的楼梯
- 一步一步学习C++(类)之继承与派生
- 第三节 常用组件 之 Source Qualifier 连接源数据
- Unity手游开发--NGUI实现冷却技能(CD)功能
- ubuntu下SVN服务器安装配置
- 机房合作(二):我怎样做组长(编码本身不重要)
- 黑马程序员——OC三大特性----封装、继承、多态
- Leetcode2: Rotate Array
- 【STL】 next_permutation用法
- Array.forEach() & Using square brackets to obtain the value of a property
- 排序算法--计数排序(java)