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 连接到查找源并导入表定义作为查找转换的结构. 仅可对关系查找使用以下选 ...
随机推荐
- Ionic Js七:手势事件
1.on-hold 长按的时间是500毫秒. HTML 代码 <button on-hold="onHold()" class="button">长 ...
- 在Ubuntu18.04中QT编程的环境构建(转)
在Ubuntu18.04中QT编程的环境构建 原点分析 百家号06-2110:14 如果说QT大家觉得陌生的话,那么 Windows 早年推出的C++图形用户界面的应用程序开发框架MFC,应该是耳熟能 ...
- linux 下rocketmq安装
一.解压mq(/data下)tar -zxvf Rocketmq-3.5.8.tar.gz 二.修改配置文件vi /etc/profileexport rocketmq=/data/alibaba-r ...
- 浅谈 Java 中的枚举
枚举也就是一一列举,常用来表示那些可以明确范围的集合,比方说性别,季节,星期,月份等. 在 JDK 1.5 才出现枚举类,在没有出现枚举类之前,我们要表示几个确定的值通常会使用常量来表示,形如 pub ...
- Java反射机制demo(五)—获得并调用一个类中的方法
Java反射机制demo(五)—获得并调用一个类中的方法 这个demo在使用反射机制操作属性之前,主要原因是因为在.class文件字节码中,方法排在属性的前面. 1,获得一个类中的方法 先看一下方法和 ...
- mongodb的yum源配置和安装
安装前注意: 此教程是通过yum安装的.仅限64位centos系统 安装步骤: 1.创建仓库文件: vi /etc/yum.repos.d/mongodb-org-3.4.repo 然后复制下面配置, ...
- js中对同步和异步的理解
你应该知道,javascript语言是一门“单线程”的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条流水线,仅仅是一条流 ...
- hdu 3061 最大权闭合子图
属于模板题吧... #include <cstdio> #include <cstring> #include <vector> #define min(a,b) ...
- C#高级编程9-第10章 集合
集合 1.集合接口和类型 接口 说明 IEnumerable<T> 如果foreach语句用于集合,就需要IEnumerable接口.这个借口定义了方法GetEnumerator(),他返 ...
- C++反汇编-菱形继承
学无止尽,积土成山,积水成渊-<C++反汇编与逆向分析技术揭秘> 读书笔记.马上就要出差了,回来后接着写吧. 一.概述 菱形继承是最复杂的对象结构,菱形结构会将单一继承与多重继承进行组合. ...