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 连接到查找源并导入表定义作为查找转换的结构. 仅可对关系查找使用以下选 ...
随机推荐
- thinkphp5.0与thinkphp3.2之间的区别
5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别. URL和路由 5.0的URL访问不再支持普通URL模式,路由也不支持正则路由定义,而是全部改为规则路由配合变量规 ...
- CSUOJ 1270 Swap Digits
Description ) in the first line, which has the same meaning as above. And the number is in the next ...
- SpringMVC源码解读 - HandlerMapping - RequestMappingHandlerMapping初始化
RequestMappingHandlerMapping ,用于注解@Controller,@RequestMapping来定义controller. @Controller @RequestMapp ...
- 支撑大规模公有云的Kubernetes改进与优化 (3)
这一篇我们来讲网易为支撑大规模公有云对于Kubernetes的定制化. 一.总体架构 网易的Kubernetes集群是基于网易云IaaS平台OpenStack上面进行部署的,在外面封装了一个容器平台的 ...
- ARM 寄存器
ARM总共有37个寄存器 ARM寄存器物理分类 通用寄存器:1:不分组寄存器(R0--R7) 2:分组寄存器(R8-R14) 3:程序计数器(R15)(注意:又名pc指针) 程序状态寄存器:1:CPS ...
- BZOJ 1283 序列 费用流 网络流 线性规划
https://darkbzoj.cf/problem/1283 给出一个长度为N的正整数序列Ci,求一个子序列,使得原序列中任意长度为M的子串中被选出的元素不超过K(K,M<=100) 个,并 ...
- hdu 4857 逆向建图+拓扑排序 ***
题意:糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行.现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b之前.同时,社会是不平等的,这些人有的穷有 ...
- Educational Codeforces Round 13 A. Johny Likes Numbers 水题
A. Johny Likes Numbers 题目连接: http://www.codeforces.com/contest/678/problem/A Description Johny likes ...
- bzoj 1798: [Ahoi2009]Seq 维护序列seq 线段树 区间乘法区间加法 区间求和
1798: [Ahoi2009]Seq 维护序列seq Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeO ...
- vue 组件开发 props 验证
使用props 在Vue中父组件向子组件中传送数据是通过props实现的,一个简单的使用props的例子: <!DOCTYPE html> <html> <head> ...