Informatica 常用组件Lookup之六 查询
PowerCenter 基于您在查找转换中配置的端口和属性来查询查找。当第一行输入到查找转换时,PowerCenter 运行一个默认的 SQL 语句。如果使用关系查找,您可以在"查找 SQL 覆盖"属性中自定义默认查询。
默认查找查询
默认查找查询包含以下语句:
- SELECT。SELECT 语句包括映射中的所有查找端口。您可以通过使用查找 SQL 覆盖属性生成 SQL 来查看 SELECT 语句。切勿在默认 SQL 语句中添加或删除任何列。
- ORDER BY。ORDER BY 语句按照列在查找转换中出现的顺序对列排序。PowerCenter 生成 ORDER BY 语句。使用查找 SQL 覆盖属性生成默认 SQL 时,您不能查看此操作。
覆盖查找查询
查找 SQL 覆盖与在源限定符转换中输入自定义查询类似。您可以覆盖关系查找的查找查询。您可以输入整个覆盖,或生成并编辑默认 SQL 语句。Designer 为查找 SQL 覆盖生成默认 SQL 语句时,它将包括查找条件中的查找/输出端口和查找/返回端口。
在以下情况中,覆盖查找查询
- 覆盖 ORDER BY 语句。对较少的列创建 ORDER BY 语句以提高性能。覆盖 ORDER BY 语句时,您必须使用备注记数法来抑制已生成的 ORDER BY 语句。
- 查找表名称或列名称含有保留字。如果查找查询中的表名称或任何列名称含有保留字,您必须确保已用引号将所有保留字括起来。
- 使用映射参数和变量。输入查找 SQL 覆盖时,您可以使用映射参数和变量。但是,Designer 不可以在查询覆盖中扩展映射参数和变量且不会验证查找 SQL 覆盖。在查找 SQL 覆盖中运行带有映射参数或变量的会话时,PowerCenter 将扩展映射参数和变量,并连接到查找数据库以验证查询覆盖。
- 查找列名称含有斜杠 (/) 字符。生成默认查找查询时,Designer 和 PowerCenter 将查找列名称中的每一个斜杠字符 (/) 替换为下划线字符。要查询含有斜杠的查找列名称,请覆盖默认查找查询,将下划线字符替换为斜杠字符,然后使用双引号将列名称括起。
- 添加 WHERE 语句。 使用查找 SQL 覆盖以添加 WHERE 语句到默认 SQL 语句。您可能需要使用此操作来减少高速缓存中的行数。将 WHERE 语句添加到使用动态高速缓存的查找转换中时,请在查找转换前使用过滤器转换。这样可以确保 PowerCenter 仅将行插入到与 WHERE 子句匹配的动态缓存和目标表中。
注:如果在 WHERE 子句中包括较大对象端口,则会使会话失败。
- 其它。在 PowerCenter 高速缓存查找行之前,如果需要从多个查找中查询查找数据,或需要修改从查找表中查询得到的数据,请使用查找 SQL 覆盖。例如,您可以使用 TO_CHAR 将日期转换为字符串。
覆盖 ORDER BY 语句
默认情况下,PowerCenter 为高速缓存的查找生成 ORDER BY 语句。ORDER BY 语句包含所有查找端口。为提高性能,您可以抑制默认的 ORDER BY 语句并输入一个带有较少列的覆盖 ORDER BY 语句。
PowerCenter 始终会生成一个 ORDER BY 语句,即使您已在覆盖中输入一个。在 ORDER BY 覆盖后加上两个破折号 "--" 以抑制生成的 ORDER BY 语句。例如,查找转换使用以下查找条件:
ITEM_ID = IN_ITEM_ID PRICE <= IN_PRICE
查找转换包括三个在映射中使用的查找端口,ITEM_ID、ITEM_NAME 和 PRICE。输入 ORDER BY 语句时,请按照端口在查找条件中的顺序输入列。您还必须用引号将所有数据库保留字括起来。在查找 SQL 覆盖中输入以下查找查询:
SELECT ITEMS_DIM.ITEM_NAME, ITEMS_DIM.PRICE, ITEMS_DIM.ITEM_ID FROM ITEMS_DIM ORDER BY ITEMS_DIM.ITEM_ID, ITEMS_DIM.PRICE --
要覆盖关系查找的默认 ORDER BY 语句,请完成以下步骤:
- 在查找转换中生成查找查询。
- 按照条件端口在查找条件中出现的顺序,输入包含这些条件端口的 ORDER BY 语句。
- 在 ORDER BY 语句后面加上两个破折号"--"作为备注记数法以抑制 PowerCenter 生成的 ORDER BY 语句。
如果在未添加备注记数法的情况下使用 ORDER BY 语句覆盖查找查询,将导致该查找失败。
注: Sybase 具有 16 列 ORDER BY 限制。如果查找转换具有 16 个以上查找/输出端口(包括查找条件中的端口),则您可能需要覆盖 ORDER BY 语句或使用多个查找转换以查询查找表。
保留字
如果任何查找名称或列名称中含有数据库保留字,如 MONTH 或 YEAR,则当 PowerCenter 对数据库执行 SQL 时,将出现数据库错误并导致会话失败。您可以在 PowerCenter 安装目录下创建和维护保留字文件 reswords.txt。PowerCenter 初始化会话时,它将搜索 reswords.txt。如果文件存在,PowerCenter Server 在对数据库执行 SQL 时会在匹配的保留字周围加上引号。
注: 保留字文件 reswords.txt 是您创建并保留在 PowerCenter 安装目录中的文件之一。当根据源、目标和查找数据库执行 SQL 时,PowerCenter 搜索此文件并在保留字两端加上引号。
覆盖查找查询的准则
覆盖查找 SQL 查询时,请遵循以下准则:
- 只可以覆盖关系查找的查找 SQL 查询。
- 配置查找转换为启用高速缓存。如果不启用高速缓存,PowerCenter 将不会识别覆盖。
- 生成默认查询,然后配置覆盖。这有助于确保在查询中包括所有查找/输出端口。如果在 SELECT 语句中添加或减去端口,将导致会话失败。
- 将一个 WHERE 子句添加到查找 SQL 覆盖时,在使用动态高速缓存的查找转换前面使用过滤器转换。这样可以确保 PowerCenter 仅插入与 WHERE 子句匹配的动态缓存和目标表中的行。
- 如果希望共享高速缓存,请为每个查找转换使用相同的查找 SQL 覆盖。
- 当您覆盖 ORDER BY 语句时,如果 ORDER BY 语句不按照条件端口在查找条件中出现的顺序包含这些条件端口,或者如果您没有使用备注记数法抑制已生成的 ORDER BY 语句,都将导致会话失败。
- 如果查找查询中的表名称或任何列名称含有保留字,您必须用引号将所有保留字括起来。
覆盖查找查询的步骤
- 在"属性"选项卡的"查找 SQL 覆盖"字段中,打开 SQL 编辑器。
- 单击"生成 SQL"以生成默认的 SELECT 语句。输入查找 SQL 覆盖。
- 连接到数据库,然后单击"验证"以测试查找 SQL 覆盖。
- 单击"确定"返回至"属性"选项卡。
Informatica 常用组件Lookup之六 查询的更多相关文章
- Informatica 常用组件Lookup之九 配置未连接的查找转换
在映射中,未连接的查找转换与管道是分开的.您可以使用 :LKP 引用限定符编写表达式以调用其它转换中的查找.未连接查找的常用用法包括: 测试表达式中某个查找的结果 基于查找结果过滤行 基于查找的结果将 ...
- Informatica 常用组件Lookup之五 转换属性
查找转换的属性标识数据库源.PowerCenter 如何处理转换,以及它如何处理高速缓存和多项匹配. 创建映射时,为每个查找转换指定属性.创建会话时,您可在会话属性中覆盖某些属性,如每个转换的索引和数 ...
- Informatica 常用组件Lookup之四 查找组件
在映射中配置查找转换时,请定义以下组件: 查找源 端口 属性 条件 元数据扩展 查找源 您可以使用平面文件或关系表作为查找源.创建查找转换时,您可以从以下位置导入查找源: 资料库中的任 ...
- Informatica 常用组件Lookup缓存之五 使用动态查找高速缓存
对于关系查找,当目标表也是查找表时,可能要配置转换以使用动态高速缓存.PowerCenter 将在处理第一个查找请求时创建高速缓存.它将根据查找条件为传递给转换的每行查询高速缓存.当您使用动态高速缓存 ...
- Informatica 常用组件Lookup缓存之四 使用不高速缓存的查找或静态高速缓存
默认情况下,在为高速缓存配置查找转换时,PowerCenter 将创建静态查找高速缓存.PowerCenter 将在处理第一个查找请求时创建高速缓存.它将根据查找条件为传递给转换的每行查询高速缓存.P ...
- Informatica 常用组件Lookup缓存之一 概述
可以配置查找转换以高速缓存查找表.PowerCenter 将在处理高速缓存查找转换中的第一个数据行时在存储器中建立高速缓存.它将根据您在转换或会话特性中配置的数量来分配高速缓存区内存.PowerCen ...
- Informatica 常用组件Lookup之八 查找高速缓存
可以配置查找转换以高速缓存查找文件或表.PowerCenter 将在处理高速缓存查找转换中的第一个数据行时在存储器中建立高速缓存.它将根据您在转换或会话特性中配置的数量来分配高速缓存区内存.Power ...
- Informatica 常用组件Lookup之七 查找条件
PowerCenter 使用查找条件来测试收到的值.这与 SQL 查询中的 WHERE 子句相似.为转换配置查找条件时,将对转换输入值和查找源或高速缓存(用查找端口代表)中的值进行比较.当您运行工作流 ...
- Informatica 常用组件Lookup之三 关系和平面文件查找
创建查找转换时,您可以选择使用关系表或平面文件作为查找源. 关系查找 使用关系表作为查找源来创建查找转换时,您可以使用 ODBC 连接到查找源并导入表定义作为查找转换的结构. 仅可对关系查找使用以下选 ...
随机推荐
- hdoj2546 饭卡(DP,01背包)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2546 思路 首先要判断卡里的钱是不是大于等于5元,如果不足5元,直接输出余额:如果大于等于5元,则先留 ...
- pygame模块参数汇总(python游戏编程)
一.HelloWorld pygame.init() #初始函数,使用pygame的第一步: pygame.display.set_mod((600,500),0,32) #生成主屏幕screen:第 ...
- Windows下安装mysql cluster
0.mysql集群介绍 浅谈mysql集群——http://blog.csdn.net/chenxingzhen001/article/details/7708663: 官网——http://dev. ...
- 实现linux和windows文件传输
其实这个题目有点大,这里介绍的只是linux和windows文件传输中的一种,但是这种方法却非常实用,那就是:ZModem协议具体是linux命令是:rz和sz但是其实它们是两个非常方便的工具. ...
- TCP 建立连接为什么要握 3 次手?
上次已经说过,没有协议,不成方圆,计算机之间的通信更是依赖于协议.今天就重点分析一下 TCP 协议. 传输控制协议 TCP 是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 7 ...
- UVALive - 6912 Prime Switch (状压DP)
题目链接:传送门 [题意]有n个灯,m个开关,灯的编号从1~n,每个开关上有一个质数,这个开关同时控制编号为这个质数的倍数的灯,问最多有多少灯打开. [分析]发现小于根号1000的质数有10个左右,然 ...
- eNSP仿真学习和VLAN配置
路由&交换机基本命令 sys #切换到系统视图(修改配置),Ctrl+Z 返回用户视图 sysname SW1 #设备重命名为SW1 int g0/0/1 #进入接口视图 VLAN配置 首先连 ...
- Here is a 10-line template that can solve most 'substring' problems子字符串问题的模板
转载自leetcode评论区:https://discuss.leetcode.com/topic/30941/here-is-a-10-line-template-that-can-solve-mo ...
- collection 和 collections
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha collection 是集合的意思. 集合 是 集合类的上级接口, 比如 set 和 l ...
- [POI2012]Salaries
题目大意: 给定一棵n带权树,每个点的权值在[1,n]范围内且互不相等,并满足子结点的权值一定小于父结点. 现在已知一个包含根结点的联通块中个点的权值,求剩下哪些点的权值能够被求出,并求出这些权值. ...