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 连接到查找源并导入表定义作为查找转换的结构. 仅可对关系查找使用以下选 ...
随机推荐
- chromedriver与chrome版本对应表,firefox、geckodriver
一. chromedriver与chrome对应表(记得就会更新): chromedriver版本 支持的Chrome版本 v2.36 v64-66 v2.35 v62-64 v2.34 v61-6 ...
- 一文搞定 Mybatis 的应用
Mybatis 介绍 Mybatis 是一个开源的持久层框架,原来叫 ibatis ,它对 jdbc 操作数据库的过程进行了封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动. ...
- To 初识Java的小菜菜们 嘻嘻~
一.Java Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算机.移动电话和 ...
- 洛谷.4238.[模板]多项式求逆(NTT)
题目链接 设多项式\(f(x)\)在模\(x^n\)下的逆元为\(g(x)\) \[f(x)g(x)\equiv 1\ (mod\ x^n)\] \[f(x)g(x)-1\equiv 0\ (mod\ ...
- [Arc079F] Namori Grundy
[Arc079F] Namori Grundy 题目大意: 一个有向弱联通环套树. 一个点的sg值等于出边连向点的sg值的mex. 试问是否有办法给每个点分配sg值? 试题分析 题目大意把一些难点跳过 ...
- 【推导】【贪心】Codeforces Round #472 (rated, Div. 2, based on VK Cup 2018 Round 2) D. Riverside Curio
题意:海平面每天高度会变化,一个人会在每天海平面的位置刻下一道痕迹(如果当前位置没有已经刻划过的痕迹),并且记录下当天比海平面高的痕迹有多少条,记为a[i].让你最小化每天比海平面低的痕迹条数之和. ...
- hdu 5248 贪心
题意:
- zoj 3629 Treasure Hunt IV 打表找规律
H - Treasure Hunt IV Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu ...
- MVC高级编程-目录
MVC高级编程 ================================================== 控制器 视图 模型 表单和HTML辅助方法 数据注解和验证 成员资格.授权和安全性 ...
- PHP self与static区别
this,static和self. self和this还是很好区分的,可是self和static就很糊涂了,两者都能调用静态的方法和属性,看似使用上没有什么太大的分别,但是实际上分别很大,先来看下面这 ...