联接源数据

  可以使用一个源限定符转换来联接来自多个关系表的数据。这些表必须能从相同的实例或数据库服务器访问。
当映射使用相关的关系源时,您可以在一个源限定符转换中同时联接两个源。在会话期间,源数据库在传递数据至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。

Informatica 常用组件Source Qualifier之三 联接查询的更多相关文章

  1. Informatica 常用组件Source Qualifier之一 概述

     转换类型:主动.已连接 1 Source Qualifier 概述 当你添加关系表或平面文件源定义至映射时,需要将它连接至 Source Qualifier 组件.Source Qualifier ...

  2. Informatica 常用组件Source Qualifier之六 外部联接

    可以使用源限定符和应用程序源限定符转换在相同的数据库中执行两个源的外部联接.当 PowerCenter 执行外部联接时,它将返回其中一个源表的所有行和另一个源表中匹配联接条件的行. 如果您需要联接两个 ...

  3. Informatica 常用组件Source Qualifier之二 默认查询

    2 默认查询 对于关系源,PowerCenter Server 将在运行会话时为每个源限定符转换生成查询.对于每个在映射中使用的源列,默认查询均为 SELECT 语句.也就是说,PowerCenter ...

  4. Informatica 常用组件Source Qualifier之九 创建SQ转换

    可以配置 Designer 在您将源拖到映射中时默认创建源限定符转换,您也可以手动创建源限定符转换. 默认创建源限定符转换 可以配置 Designer 在您将源拖到映射中时自动创建一个源限定符转换. ...

  5. Informatica 常用组件Source Qualifier之七 使用排序端口

    使用已排序端口时,PowerCenter 将添加端口至默认查询中的 ORDER BY 子句.PowerCenter Server 将添加配置的端口号,从源限定符转换的顶部开始.在映射中包括以下任何转换 ...

  6. Informatica 常用组件Source Qualifier之五 User Defined Join

    User defined join :      输入用户定义的联接与输入自定义 SQL 查询类似.但是,只需输入 WHERE 子句的内容,而不是整个查询. 添加用户定义的联接时,源限定符转换包括默认 ...

  7. Informatica 常用组件Source Qualifier之八 Distinct

    如果希望 PowerCenter 从源选择唯一值,您可以使用"选择相异"选项.例如,您可以使用此功能从列出总销售额的表中提取唯一客户标识.使用"选择相异"过滤器 ...

  8. Informatica 常用组件Source Qualifier之七 输入过滤器

    通过输入源过滤器,可以降低 PowerCenter  查询的行数.如果在源过滤器中包括字符串 "WHERE" 或较大对象,PowerCenter 将使会话失败. 源限定符转换包括默 ...

  9. Informatica 常用组件Source Qualifier之四 SQL Query

    源限定符转换提供 SQL 查询选项以覆盖默认的查询.您可以输入您的源数据库支持的 SQL 语句.输入查询之前,请连接您要在映射中使用的所有输入和输出端口. 编辑 SQL 查询时,您可以生成并编辑默认查 ...

随机推荐

  1. 10.Spark Streaming源码分析:Receiver数据接收全过程详解

    原创文章,转载请注明:转载自 听风居士博客(http://www.cnblogs.com/zhouyf/)   在上一篇中介绍了Receiver的整体架构和设计原理,本篇内容主要介绍Receiver在 ...

  2. Java利用Redis实现消息队列

    应用场景 为什么要用redis?二进制存储.java序列化传输.IO连接数高.连接频繁 一.序列化 这里编写了一个java序列化的工具,主要是将对象转化为byte数组,和根据byte数组反序列化成ja ...

  3. 程序员必备的代码审查(Code Review)清单

    在我们关于高效代码审查的博文中,我们建议使用一个检查清单.在代码审查中,检查清单是一个非常好的工具——它们保证了审查可以在你的团队中始终如一的进行.它们也是一种保证常见问题能够被发现并被解决的便利方式 ...

  4. PHP之数组(遍历顺序)

    作者: Laruence(   ) 本文地址: http://www.laruence.com/2009/08/23/1065.html PHP的数组, 如果用foreach来访问, 遍历的顺序是固定 ...

  5. HDU 6182 A Math Problem

    暴力. $k$的$k$次方在$k=15$的时候,达到了最大不爆掉的情况. #include<bits/stdc++.h> using namespace std; long long an ...

  6. CodeForces 805B 3-palindrome

    构造. $bbaabbaabbaa......$输出前$n$个即可,这样不需要用到$c$,而且任意相邻三个都不会是回文. #include <cstdio> #include <cm ...

  7. 洛谷P3275 [SCOI2011]糖果 [差分约束系统]

    题目传送门 糖果 题目描述 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比 ...

  8. 使用Jedis

    前言 借助Jedis可以在Java上操作Redis. Jedis 到https://mvnrepository.com/去找jar包下载即可. 如果是maven项目: <!-- https:// ...

  9. Redis学习篇(四)之List类型及其操作

    Redis的List是一个双向链表 LPUSH 作用:向列表左端添加元素 语法:LPUSH key value value... 从左到右逐个添加到左端,前面的先添加, 可以一次添加多个元素 RPUS ...

  10. 【BZOJ 2839】 2839: 集合计数 (容斥原理)

    2839: 集合计数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 399  Solved: 217 Description 一个有N个元素的集合有2 ...