zoukankan      html  css  js  c++  java
  • Informatica 常用组件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
    View Code

      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。
  • 相关阅读:
    Docker从12升级到17ce
    镜像清理和删除
    flask-session 在redis中存储session
    linux后台运行python程序 nohup
    flask 自动切换环境
    Linux SSH登录很慢的解决方法
    docker-compose docker启动工具,容器互联
    为什么企业需要IT资产管理
    sql 中取整,四舍五入取整,向下取整,向上取整。
    sqlalchemy 获取表结构。
  • 原文地址:https://www.cnblogs.com/HondaHsu/p/4452712.html
Copyright © 2011-2022 走看看