在映射中,未连接的查找转换与管道是分开的。您可以使用 :LKP 引用限定符编写表达式以调用其它转换中的查找。未连接查找的常用用法包括:
配置未连接的查找转换时,请完成以下步骤:
为 :LKP 表达式中的每个参数创建一个输入端口。您需要在查找转换中为每个准备创建的查找条件添加一个输入端口。您可以为每个条件创建不同的端口,或者在多个条件中使用相同的输入端口。
例如,一个零售店上个月在所有部门之间提高了价格。会计部门只希望将提高了价格的项目所对应的行载入目标中。要完成此操作,请执行以下任务:
正确配置端口后,请定义一个查找条件,用于对转换输入值和查找源或高速缓存中的值进行比较。为提高性能,请先添加带有等号的条件。
在本例中,请添加以下查找条件:
ITEM_ID = IN_ITEM_ID PRICE <= IN_PRICE
如果项目存在于映射源和查找源中,而映射源价格低于或等于查找价格,则条件成立,查看返回由返回端口指派的值。如果查找条件不成立,则查找返回 NULL。 因此,编写更新策略表达式时,请在 IIF 中嵌套使用 ISNULL 以测试是否存在空值。
对于未连接查找,您可以将多个输入值传递到转换中,但只有一列数据从转换输出。 将一个查找/输出端口指定为返回端口。PowerCenter 可以返回一个来自查找查询的值。使用返回端口指定返回值。如果从更新策略或过滤器表达式中调用未连接查找,则您可以全面地检查是否存在空值。在这种情况下,返回端口可以是任意端口。但是,如果从执行计算的表达式中调用查找,则返回值必须是您希望计算所包含的值。
要继续更新策略示例,您可以将 ITEM_ID 端口定义为返回端口。更新策略表达式检查返回的空值。如果查找条件成立,PowerCenter 将返回 ITEM_ID。如果条件不成立,PowerCenter Server 将返回 NULL。
从其它转换的 :LKP 表达式中,为未连接查找转换提供输入值。参数是与查找条件中使用的查找转换输入端口相匹配的本地输入端口。请使用以下 :LKP 表达式语法:
:LKP.lookup_transformation_name(argument, argument, ...
)
继续以之前的零售店为例,当您编写更新策略表达式时,表达式中端口的顺序必须与它们在查找条件中的顺序相同。在本例中,ITEM_ID 条件是第一个查找条件,所以,它是更新策略表达式中的第一个参数。
IIF(ISNULL(:LKP.lkpITEMS_DIM(ITEM_ID, PRICE)), DD_UPDATE, DD_REJECT)
编写用于调用未连接查找转换的表达式时,请遵循以下准则:
提示: 通过使用指向再点击的方式选择函数和端口以在输入表达式时避免出现语法错误。