在映射中,未连接的查找转换与管道是分开的。您可以使用 :LKP 引用限定符编写表达式以调用其它转换中的查找。未连接查找的常用用法包括:

  • 测试表达式中某个查找的结果
  • 基于查找结果过滤行
  • 基于查找的结果将行标记为更新,如更新缓慢更改的维表
  • 在一个映射中多次调用相同的查找

        配置未连接的查找转换时,请完成以下步骤: 

  • 添加输入端口。
  • 添加查找条件。
  • 指定一个返回值。
  • 调用其它转换中的查找。

步骤 1. 添加输入端口

为 :LKP 表达式中的每个参数创建一个输入端口。您需要在查找转换中为每个准备创建的查找条件添加一个输入端口。您可以为每个条件创建不同的端口,或者在多个条件中使用相同的输入端口。

        例如,一个零售店上个月在所有部门之间提高了价格。会计部门只希望将提高了价格的项目所对应的行载入目标中。要完成此操作,请执行以下任务:  

  • 创建查找条件,该条件将源中的 ITEM_ID 和目标中的 ITEM_ID 进行比较。
  • 对源中每个项目的 PRICE 和目标表中的价格进行比较。
  • 如果项目已存在于目标表中,而该项目在源中的价格低于或等于目标表中的价格,则您需要删除该行。
  • 如果源中的价格比目标表中的项目价格高,则您需要更新该行。
  • 创建一个数据类型为 Decimal (37,0) 的输入端口 (IN_ITEM_ID),以与 ITEM_ID 相匹配,并创建一个数据类型为 Decimal (10,2) 的输入端口 IN_PRICE,以与 PRICE 查找端口相匹配。

步骤 2. 添加查找条件

正确配置端口后,请定义一个查找条件,用于对转换输入值和查找源或高速缓存中的值进行比较。为提高性能,请先添加带有等号的条件。

在本例中,请添加以下查找条件:

    ITEM_ID = IN_ITEM_ID PRICE <= IN_PRICE

如果项目存在于映射源和查找源中,而映射源价格低于或等于查找价格,则条件成立,查看返回由返回端口指派的值。如果查找条件不成立,则查找返回 NULL。  因此,编写更新策略表达式时,请在 IIF 中嵌套使用 ISNULL 以测试是否存在空值。

步骤 3. 指定一个返回值

对于未连接查找,您可以将多个输入值传递到转换中,但只有一列数据从转换输出。 将一个查找/输出端口指定为返回端口。PowerCenter 可以返回一个来自查找查询的值。使用返回端口指定返回值。如果从更新策略或过滤器表达式中调用未连接查找,则您可以全面地检查是否存在空值。在这种情况下,返回端口可以是任意端口。但是,如果从执行计算的表达式中调用查找,则返回值必须是您希望计算所包含的值。

要继续更新策略示例,您可以将 ITEM_ID 端口定义为返回端口。更新策略表达式检查返回的空值。如果查找条件成立,PowerCenter 将返回 ITEM_ID。如果条件不成立,PowerCenter Server 将返回 NULL。

步骤 4. 通过表达式调用查找

        从其它转换的 :LKP 表达式中,为未连接查找转换提供输入值。参数是与查找条件中使用的查找转换输入端口相匹配的本地输入端口。请使用以下 :LKP 表达式语法:

  :LKP.lookup_transformation_name(argument, argument, ...)

继续以之前的零售店为例,当您编写更新策略表达式时,表达式中端口的顺序必须与它们在查找条件中的顺序相同。在本例中,ITEM_ID 条件是第一个查找条件,所以,它是更新策略表达式中的第一个参数。

  IIF(ISNULL(:LKP.lkpITEMS_DIM(ITEM_ID, PRICE)), DD_UPDATE, DD_REJECT)

        编写用于调用未连接查找转换的表达式时,请遵循以下准则: 

  • 排列参数的顺序必须与查找转换中查找条件的顺序相匹配。
  • 表达式中端口的数据类型必须与查找转换中输入端口的数据类型相匹配。Designer 不会验证表达式的数据类型是否匹配。
  • 如果查找条件中的一个端口不是查找/输出端口,Designer 也不会验证表达式。
  • 表达式中参数(端口)的顺序必须与查找条件中输入端口的顺序相同。
  • 如果使用不正确的 :LKP 语法,Designer 会将映射标记为无效。
  • 如果在 :LKP 表达式中调用已连接查找转换,Designer 会将映射标记为无效。

提示: 通过使用指向再点击的方式选择函数和端口以在输入表达式时避免出现语法错误。

 

Informatica 常用组件Lookup之九 配置未连接的查找转换的更多相关文章

  1. Informatica 常用组件Lookup缓存之四 使用不高速缓存的查找或静态高速缓存

    默认情况下,在为高速缓存配置查找转换时,PowerCenter 将创建静态查找高速缓存.PowerCenter 将在处理第一个查找请求时创建高速缓存.它将根据查找条件为传递给转换的每行查询高速缓存.P ...

  2. Informatica 常用组件Lookup之二 已连接和未连接的查找

    可以配置一个已连接的查找转换,以从映射管道中直接接收输入:您也可以配置一个未连接的查找转换,以从其它转换的表达式结果中接收输入. 已连接的查找 未连接的查找 直接从管道接收输入值. 从其它转换的 :L ...

  3. Informatica 常用组件Lookup之五 转换属性

    查找转换的属性标识数据库源.PowerCenter 如何处理转换,以及它如何处理高速缓存和多项匹配. 创建映射时,为每个查找转换指定属性.创建会话时,您可在会话属性中覆盖某些属性,如每个转换的索引和数 ...

  4. Informatica 常用组件Lookup之四 查找组件

    在映射中配置查找转换时,请定义以下组件: 查找源 端口 属性 条件 元数据扩展 查找源         您可以使用平面文件或关系表作为查找源.创建查找转换时,您可以从以下位置导入查找源: 资料库中的任 ...

  5. Informatica 常用组件Lookup缓存之一 概述

    可以配置查找转换以高速缓存查找表.PowerCenter 将在处理高速缓存查找转换中的第一个数据行时在存储器中建立高速缓存.它将根据您在转换或会话特性中配置的数量来分配高速缓存区内存.PowerCen ...

  6. Informatica 常用组件Lookup缓存之五 使用动态查找高速缓存

    对于关系查找,当目标表也是查找表时,可能要配置转换以使用动态高速缓存.PowerCenter 将在处理第一个查找请求时创建高速缓存.它将根据查找条件为传递给转换的每行查询高速缓存.当您使用动态高速缓存 ...

  7. Informatica 常用组件Lookup缓存之二 使用永久查找高速缓存

    可以将"查找"转换配置为使用非永久或永久高速缓存.基于"查找高速缓存永久"属性的会话成功后,PowerCenter 将保存或删除查找高速缓存文件. 如果查找表在 ...

  8. Informatica 常用组件Lookup之七 查找条件

    PowerCenter 使用查找条件来测试收到的值.这与 SQL 查询中的 WHERE 子句相似.为转换配置查找条件时,将对转换输入值和查找源或高速缓存(用查找端口代表)中的值进行比较.当您运行工作流 ...

  9. Informatica 常用组件Lookup之六 查询

    PowerCenter 基于您在查找转换中配置的端口和属性来查询查找.当第一行输入到查找转换时,PowerCenter 运行一个默认的 SQL 语句.如果使用关系查找,您可以在"查找 SQL ...

随机推荐

  1. Oracle数据库多表查询,子查询,集合运算

    记得自己要敲o~~~ select * from bonus; select * from salgrade; from dual; --笛卡尔积:两张表的乘积 select * from emp,d ...

  2. React Native之数据存储技术AsyncStorage

    1. 如何将数据存储到本地? 数据存储是开发APP必不可少的一部分,比如页面缓存,从网络上获取数据的本地持久化等,那么在RN中如何进行数据存储呢? RN官方推荐我们在RN中使用AsyncStorage ...

  3. 不改源代码,修改服务器配置,解决全局Get中文乱码问题

  4. redis与DB数据同步问题

    Redis 是一个高性能的key-value数据库. redis的出现,很大程度补偿了memcached这类key-value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用.它提供了Pyt ...

  5. Initializing the FallBack certificate failed . TDSSNIClient initialization failed

    安装SQL后服务不能启动,报错: 2014-03-24 14:33:10.06 spid13s     Error: 17190, Severity: 16, State: 1.2014-03-24 ...

  6. 线性表之单链表C++实现

    线性表之单链表 一.头文件:LinkedList.h //单链表是用一组任意的存储单元存放线性表的元素,这组单元可以是连续的也可以是不连续的,甚至可以是零散分布在内存中的任意位置. //单链表头文件 ...

  7. poj3537 Crosses and Crosses 博弈论

    大意: 给定一个\(1 * n\)的棋盘,你和对手轮流在上面画"X" 当出现三个连续的X时,最后一步操作的人胜利 不难发现,在棋盘中画了一个X之后 问题等价于两个一样的子游戏 然后 ...

  8. Lost connection to MySQL server at 'reading initial communication packet', system error: 0的一个解决方案

    -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT在icmp之前/etc/init.d/iptables restar ...

  9. bzoj 3668 数位DP

    收获: 1.如果有很多位操作,并且不包含+-×/等高级运算,那么可以一位一位考虑,如果求一个最优解,可以尝试逐位确定,这道题因为原始攻击值有范围,那么就需要数位DP. /*************** ...

  10. python日常碎碎念

    关于取命令行中参数的方法 1,sys.argv 这个方法自动获取参数,并split.一般情况下第一个元素是程序的名字.即 python script.py arg1 arg2 然后sys.argv返回 ...