informatica优化

Contents

LookUp. 1

Dynamic Lookup. 2

Session/Wofkflow.. 2

Session/task. 2

参数文件... 3

Variable/Parameter 5

System Variable. 6

Variable Ports. 7

UpdateStagety. 7

缓慢变化维... 9

SQL Transformation. 9

Normalizer 9

ShortCut 9

Join. 9

Domain. 10

ODBC驱动器... 10

文本文件:... 10

Targert 10

Expression. 10

Source Qualifier 11

Source:... 11

Stored Procedure: 11

Union. 11

Sequence. 11

Aggregator 12

调度... 12

Partition. 12

内存管理... 12

函数... 13

字符... 13

转换函数... 13

数据整理... 14

日期函数... 14

特殊函数... 14

LookUp

IIF(ISNULL(customer_id),:lkp.MYLOOKUP(order_no), customer_

id)

Unconnected Lookup  A small percentage of records are missing

Only one port can be returned. This is a fixed feature of the unconnected Lookup

An unconnected lookup can improve performance if the lookup table is static

Lookup cache persistent

Cache stored on Server hard drive and used next session unless

Persistent cache can improve performance, but stale data may pose a problem

Cache:选择的话会先将表cache到informatica,这样就获取不到变化了。 如果不cache,

性能会下降,每条数据都会去数据库执行一次lookup,但是能获取到表最新的变化

当第一行数据进入lookup组件的时候,IS 会在内存中建立cache,把条件值保存在索引cache,把output值保存在数据cache,IS会为每一条进入这个组件的行查询cache

Dynamic Lookup

源表中存在新纪录(但是源表中也存在重复的新纪录)

中解决办法:

  1. 不适用Lookup caching enabled

使用session属性中的Treat source rows as update=update与目标属性update else insert 组合

源表里面有重复数据或者源和目标的数据有update

  1. 使用dynamic lookup

使用dynamic lookup要配合UpdateStrategy使用

  1. 选择Dynamic Lookup cache和Insert else update
  2. Lookup表中所有字段
  3. 后面跟个UpdateStrategy
  4. iif(NewLookupRow = 1,DD_INSERT,iif(NewLookupRow = 2,DD_UPDATE,DD_REJECT))

Source Qualifier和Joiner 是 Active 组件,而Lookup可以是Active(Multi-Output)或者Passive组件。

Session/Wofkflow

Target/Source 里面的Owner name是schema名字

Workflow: properties: Parameter Filename/ Write Backward Compatible Workflow Log File(这个属性是会写text到log文件)

DTM Buffer Size

Default memory allocation is 12 MB. You might want to increase this to 24 MB if you run a session with large amounts of character data against an Integration Service configured to run in Unicode mode.

Default Buffer Block Size

Size of buffer blocks used to move data from sources to targets. By default, this value is set to auto.

You can specify auto or a numeric value. The default unit is bytes. Append KB, MB, or GB to the value to specify other units. For example, 1048576 or 1024KB or 1MB.

The DTM divides the memory into buffer blocks as configured in the Buffer Block

1 Maximum Memory Allowed for Auto 设置一个值

2 Maximum Percentage of Total Memory 设置一个占电脑内存百分百

3 上面的两个值取最小值,就是那些设置为Auto的transformation共用的内存

4 那些指定值的transformation不用上面的数字,是另外单独占用内存的

5 Informatica内存=DTM + transformation cache

The DTM allocates buffer memory to the session at run time based on the DTM Buffer Size setting in the session properties.

The DTM divides the memory into buffer blocks as configured in the Default Buffer Block Size setting in the session properties.

The reader, transformation, and writer threads use buffer blocks to move data from sources to targets.

The DTM buffer size specifies the amount of buffer memory that the Integration Service uses when the DTM processes a session.

Size setting in the session properties. The reader, transformation, and writer threads use buffer blocks to move data from sources and to targets.

The Integration Service calculates a minimum memory allocation for the buffer memory and buffer blocks,By default, the Integration Service allocates 64,000 bytes per block or the size of the largest row of any source or target in the mapping, whichever is larger.

DTM buffer size 设置为Auto时用下面两个变量控制大小,取下面两个值的较小值

Maximum Memory Allowed for Auto Memory Attributes 512M电脑内存 如果电脑内存很大

The Integration Service allocates memory from the session cache to all transformations with cache memory set to auto.

The maximum session cache size you set affects only transformations with cache mode set to auto

The Integration Service allocates memory separately to transformations for which you configure a specific cache size

Maximum Percentage of Total Memory Allowed for Auto Memory Attributes 5 5%电脑内存的5% 如果电脑内存很小

The Integration Service allocates memory from the session cache to all transformations with cache memory set to auto.

DTM的内存会被所有autotransformations caches共享

For example, you configure automatic caching for three Lookup transformations in a session

The memory cache limit for the session does not apply to transformations that you did not configure for automatic caching.

The Integration Service allocates memory from the session cache to all transformations with cache memory set to auto.

DTM不控制那些没设置为auto的内存限制

Sort/join/agg这些如果没设置了auto的话不用DTM的设置

默认情况下只保存一个logfile,以后都是覆盖

Save session log by;按照日期时间/次数保存log

Save session log for these runs:保存指定的几次log

Session:

Write Backward Compatible Session Log File

Applying Attributes to All Instances in a session:

  1. Open a session in the workspace.
  2. Click the Mappings tab.
  3. Choose a source, target, or transformation instance from the Navigator. Settings for properties, connections, and readers or writers might display, depending on the object you choose.
  4. Right-click a reader, writer, property, or connection value.

A list of options appears.

有关输入会话前和会话后 SQL 命令的准则

使用分号 (;) 分隔多个语句。 集成服务在每个语句后发出一个提交命令。

Config object:

当您创建会话时,Workflow Manager 会将默认的配置对象设置应用到会话的“配置对象”选项卡。 您也可以选择配置对象以用于会话。

当您编辑会话配置对象时,每个使用该会话配置对象的会话将继承所做的更改。

collect performance details:

monitor: Get run properties-> Performance

或者在log目录中session_name.perf

Session/task

Session: Run the logic of a mapping

Command: Run external commands

       一般不管脚本是否执行成功,command结果都是成功的,exit 1

       Fail task if any command fails

Email: Send an email to a defined recipient

Decision: Choose between paths in a Workflow

Assignment: Assign values to variables

Timer: Wait or pause for specified time

Control: Terminate or fail a Workflow

Event Wait: Wait for an event

Event Raise: Cause an Event Wait task to trigger

Workflow Scheduler

pmcmd startworkflow -sv MyIntService -d MyDomain -u seller3 -p jackson -f SalesEast wf_SalesAvg

参数文件

为工作流内的会话定义工作流参数文件和会话参数文件时,集成服务将使用工作流参数文件并忽略会话参数文件。要使用变量定义会话参数文件名称,必须定义会话参数文件名称并在工作流参数文件中将 $PMMergeSessParamFile 设置为 TRUE。 $PMMergeSessParamFile 属性会导致集成服务同时读取会话和工作流参数文件。

如果将变量用作会话参数文件名称,且在会话和工作流参数文件中定义相同的参数或变量,则集成服务会根据以下规则设置参数和变量值:

  • 在工作流和会话参数文件的相同部分定义参数或变量时,集成服务会使用工作流参数文件中的值。
  • 在会话参数文件的会话部分和工作流参数文件的工作流部分定义参数或变量时,集成服务会使用会话参数文件中的值。

参数文件中可以定义不同类型的参数变量:

其中包括服务变量、服务进程变量、工作流和工作集变量、会话参数以及映射参数和变量

参数和变量组的前面必须有一个标题,该标题用于标识要应用参数或变量的服务、服务进程、工作流、工作集或会话。

创建一个或更多参数文件。您将参数文件单独分配给工作流、工作集和会话。您可以为所有这些任务指定相同的参数文件,也可以创建几个参数文件

定义参数值时,请勿使用不必要的换行符或空格

不要在参数或变量两边加上引号

如下所示,将映射组件名称附加到在映射组件中创建的参数变量前面:mapplet_name.parameter_name=value

将pmcmd和多个参数文件用于带常规循环的会话

下面例子是调用 workflowA ,使用参数文件是 myfile.txt

pmcmd startworkflow -uv USERNAME -pv PASSWORD -s SALES:6258 -f east -w wSalesAvg

paramfile '\\$PMRootDir/myfile.txt' workflowA

workflow 和 mapping 中定义的变量名称,如果在参数文件中赋值是一样的,确定两变量名称不要一样。否则 mapping 定义的变量将不被识别

下面作用域里面没有mapping,由于mapping不是运行实例,所以没有,但是参数文件中可以给mapping中定义的变量参数赋值。

一个mapping可以被用来创建多个session,然后一个workflow包含多个session,这样就可以通过参数文件传递不同的参数值来获取不同的数据

[全局]

 所有集成服务、集成服务进程、工作流、工作集和会话。

[服务:服务名称]

 命名的集成服务和运行此服务的工作流、工作集和会话。

[Service:service name.ND:node name]

 命名的集成服务进程和运行此服务进程的工作流、工作集和会话。

[文件夹名称.WF:工作流名称]

 命名的工作流和工作流中的所有会话。

[文件夹名称.WF:工作流名称.WT:工作集名称]

 命名的工作集和工作集中的所有会话。

[文件夹名称.WF:工作流名称.WT:工作集名称.WT:工作集名称...]

 嵌套工作集和嵌套工作集中的所有会话。

[文件夹名称.WF:工作流名称.ST:会话名称]

-或-

[文件夹名称.WF:工作流名称.WT:工作集名称.ST:会话名称]

-或-

[文件夹名称.会话名称]

-或-

[会话名称]

[HET_TGTS.WF:wf_TCOMMIT1]

$$platform=windows

...

[HET_TGTS.WF:wf_TCOMMIT1]

$$platform=unix

$DBConnection_ora=Ora2

在工作流 wf_TCOMMIT1 中,映射参数 $$platform 的值为“windows”而不是“unix”,且未定义会话参数 $DBConnection_ora。

如果你在参数文件中的多个部分中定义相同的参数或变量,最小范围的参数或变量的优先级高于更大范围的参数或变量。 例如,参数文件包含以下部分:

[HET_TGTS.WF:wf_TGTS_ASC_ORDR]

$DBConnection_ora=Ora2

[HET_TGTS.WF:wf_TGTS_ASC_ORDR.ST:s_TGTS_ASC_ORDR]

$DBConnection_ora=Ora3

在会话 s_TGTS_ASC_ORDR 中,会话参数 $DBConnection_ora 的值为“Ora3”。 在工作流的所有其他部分中,它是"Ora2"。

使用字符串参数和变量

在会话期间,集成服务会将该参数替换为一个字符串。 如果 $$State 在参数文件中定义为 MD,则集成服务会按如下方式替换该参数:

STATE = ‘MD’

您可以在筛选器转换中使用 PowerCenter 转换语言执行类似的筛选器,如下所示:

STATE = $$State

如果在筛选器转换中用单引号将该参数括起来,则集成服务会将其读取为字符串文字“$$State”,而不是将该参数替换为“MD”。

在参数文件中定义表达式字符串

参数文件中这样定义

$$ExpColor=IIF(color=‘A0587’,‘white’)

由于映射参数 $$ExpColor 的 IsExprVar 设置为 true,因此集成服务会在解析该表达式之前扩展参数。 颜色 ID 为“A0587”的行会返回字符串“white”。 如果 IsExprVar 设置为 false,则集成服务会在解析该表达式之后扩展参数。 因此,所有行都会返回字符串 “IIF(color=‘A0587’,‘white’)”。

颜色名称表达式更改时,可以更新参数文件中映射参数的值。 无需修改映射。

空值

可以向参数文件中的参数和变量分配空值。 向参数和变量分配空值时,集成服务会根据参数或变量类型获取以下位置的值:

服务和服务进程变量。集成服务将使用在 Administrator 工具中设置的值。

工作流和工作集变量。集成服务将使用保存在存储库中的值(如果变量具有持久性,右键wf名字->查看永久值)、用户定义的默认值或数据类型默认值。

会话参数。会话参数没有默认值。 如果集成服务找不到会话参数值,则会话可能会失败并将空字符串视为默认值,或无法在运行时展开该参数。 例如,如果集成服务执行会话时,该会话未定义会话参数 $DBConnectionName,则会话将失败。

映射参数和变量。集成服务将使用保存在存储库中的值(仅限映射变量,在Session中查看永久值)、配置的初始值或数据类型默认值。

创建参数文件时,请遵守以下规则和准则:

列出所有会话参数。会话参数没有默认值。 如果集成服务找不到会话参数值,则会话可能会失败并将空字符串视为默认值,或无法在运行时展开该参数。 会话参数名称不区分大小写。

列出所有必需的映射参数和变量。 映射参数和变量值会变为映射中的参数和变量的起始值。 映射参数和变量名称不区分大小写。

为非唯一会话名称输入文件夹名称。如果存储库中多次存在一个会话名称,请输入文件夹名称以指示会话的位置。

在 Mapplet 中的参数和变量前面附加 Mapplet 名称。使用以下格式:

mapplet_name.parameter_name=value

mapplet2_name.variable_name=value使用多个参数文件。可以单独向工作流、工作集和会话分配参数文件。 可以为上述所有任务指定相同的参数文件或创建多个参数文件。

定义参数值时,请勿使用不必要的换行或空格。集成服务会将其余空格解释为参数名称或值的一部分。

请为日期时间值使用正确的日期格式。将以下日期格式用于日期时间值:

Variable Function

Valid Aggregation Types

Valid Datatype

SetVariable

Max/Min/count

SETVARIABLE( $$Variable, value )  

SetMaxVariable

Max only

SETMaxVARIABLE( $$Variable, value )

SetMinVariable

Min only

SETMINVARIABLE( $$Variable, value )  

SetCountVariable

Count only

SETCOUNTVARIABLE( $$Variable ) 每次加一

只对变量可用,参数不可以用

SetVariable     仅当行被标记为插入或更新时才执行

SetMaxVariable 仅当行被标记为插入时才执行

SetMinVariable 仅当行被标记为插入时才执行

SetCountVariable insert加1 delete 减1 update/reject 不变

Variable/Parameter

 

workflow

mapping

workflow资料库

mapping资料库

Parameters

没有参数

有参数

不能保存

不能保存

Variables

有变量

有变量

可以保存,

右健workflow查看

可以保存,

右健session对象查看

Parameters: Parameter file/session传入的值/Declared initial value/Default value(不能保存到资料库

参数文件值可以从session中传递给mapping

Workflow Variables: Parameter file/Repository saved value/Declared initial value/Default value

mapping Variables: Parameter file/ session传入的值/Repository saved value/Declared initial value/Default value

Mapping Parameter/ variable

Mapping Parameters and Variables Apply to all transformations within a Mapping

Parameters cannot be set within a Mapping, only by declaration.

如果是时间类型参数(先定义为字符),该参数在parameter中一定不要用单引号引了,否则要在sql语句中添加单引号

可以在参数文件中指定初始值

直接在 Source Filter 中使用的变量可以不用在Mapping中定义

提示:workflow mapping 中定义的变量名称,如果在参数文件中赋值是一样的,确定两变量名称不要一样。否则 mapping 定义的变量将不被识别。

在Qualify的sql中或者在pres-SQL中用到的变量不是mapping的变量,而是session的变量

Mapping variable中变量值顺序

  1. 参数文件中是否赋值
  2. Session运行前是否赋值
  3. 存储库中是否持久化该变量(变量好像默认都是保存的)
  4. 只有前3种情况都没有,这样才会用到Mapping中给变量赋值

  1. 参数文件中的值
  2. 会话前变量分配中的值 (这个地方应该是session中的组件中赋值)
  3. 存储库中保存的值
  4. 初始值
  5. 数据类型默认值

Mapplet Parameter/ variable

A parameter or variable defined in a Mapplet is not visible in any parent mapping

A parameter or variable defined in a Mapping is not visible in any child Mapplet

Rules for parameters and variables defined on Mapplets and Mappings. Each is a separate scope.

To use a Mapping parameter or variable in a Mapplet, pass it in as an input port.

Mapplet 中的映射参数和变量值必须以参数文件中的 Mapplet 名称为前导,如下所示:

mappletname.parameter=value

mappletname.variable=value

Session parameter

在组件中赋值

在Session的组件中可以传递mapping和Workflow之间的变量值

会话中的映射参数和变量

如果在会话中使用映射变量,则可以通过编辑会话清除存储库中保存的任何变量值。 清除变量值时,集成服务会在下次运行会话时使用参数文件中的值。 如果会话不使用参数文件,则集成服务会使用在会话前变量分配中分配的值。 如果不存在任何分配的值,集成服务会使用在映射中定义的初始值。

Worklet variable

Worklet可以通过workflow的变量来传递他们之间的变量值

例如,您有一个具有持久性变量的工作集。 使用工作流中的两个工作集实例可以运行该工作集两次。 将工作集的第一个实例和第二个实例分别命名为 Worklet1 和 Worklet2。

运行工作流时,持久性工作集变量会保留 Worklet1 中的值,并在 Worklet2 中变为初始值。 集成服务运行 Worklet2 后,会将持久性变量的值保留在存储库中,并在下次运行工作流时使用该值。

无法使用工作集中的父工作流变量。

可以将工作流变量的值分配到工作集变量以进行初始化。

无法使用父工作流中用户定义的工作集变量。

可以与使用工作流中其他任务的预定义变量一样使用父工作流中预定义的工作集变量。

Workflow variable, does not have parameter

Like Mapping variables, Workflow variables are valid for the scope of the Workflow and can be used to control execution.

Variables can persist across sessions in a workflow

The value is saved in the repository

可以在参数文件中指定初始值

可以持久保存到Repository

不要对用户定义的工作流变量使用单个美元符号 ($)。 单个美元符号专为预定义的工作流变量预留。

Session 上设置的参数就不能跨 Session 使用,而 Workflow 则可以跨 Session 使用,因为一个 Workflow 可能包含多个 Session。不过 Session 可以设置为可重用,各有各的好处,视具体场景而定。

Global

Servicel

Workflow

Session

Integration Service会以以下的优先级初始化变量,从高到低

1 value in parameter file

2 value saved in repository(if the variables is persistent)

3 user-specified default value

4 Datatype default value

那些变量会用到存储库中的值:(参数值不会保存到存储库中)

映射变量/工作流和工作集变量

System Variable

SYSDATE Not a static value

SESSSTARTTIME Returns the system date value ,Has a constant value,Not to be used in a SQL override

$$$SessStartTime  :Format of the string is database type ,Used in SQL override

SETVARIABLE($$Variable,value)

--由于mapping变量只能设置为max或min,所以当设置mapping变量是max时,

(例如Y/N):每次在exp里面修改该变量,会发现只能从N变为Y,不能从Y变为N,这时要在参数文件中添加初始化参数N来改变

添加变量V端口在I/O之后

SETCOUNTVARIABLE($$Variable)Increments a counter variable

SETMAXVARIABLE($$Variable,value)

SETMINVARIABLE($$Variable,value)

SUCCEEDED/FAILED

TO_CHAR(SYSDATE, 'YYYYMMDD')

$s_m_LT_Merchant_Output.Status=SUCCEEDED

ABORTED

FAILED

STOPPED

SUCCEEDED

SrcSuccessRows

StartTime

Status

Variable Ports

Simplify complex expressions

Improve efficiency

Provide storage for temporary values

Variable ports are not visible in Normal view, only in Edit view

假设数据是有顺序的,用V_lastvalue/v_currentvalue可以保持上一条指和当前值

V_lastvalu=v_currentvalue(v)

v_currentvalue=group_id(v)

Group_id (I/O)

UpdateStagety

DD_INSERT/DD_UPDATE/DD_DELETE/DD_REJECT

使用Session中 treat source rows as

  1. 默认时insert,所有数据insert
  2. 使用update,所有数据会被更新到目标表
  3. Delete时所有数据从目标表删除
  4. Data Drivien(前面要添加update组件)
  5. 条件是informatica里面逻辑主键的设定

这3个选项互斥,只能选择一个

Update as update: 对于所有标记为update的进行update操作

Update as insert: 对于所有标记为update的进行insert操作

Update else insert:对于所有标记为update的数据,先做update,然后对没有update成功的数据,再执行insert

如何实现update else insert

第一种方式用session实现;

  1. Session中 treat source rows as update
  2. Mapping tabs中选择insert/update else insert

不选择delete/update as insert update as update

第二中方式 update/lookup组合实现

  1. Lookup目标表一条数据是否存在
  2. 存在用update,不存在用insert

对于任何一个Mapping的每一条数据, 初始默认标志为Insert。即在整个过程中,如果没有任何更改标志位的操作,这条数据将作Insert操作   使用Update Strategy修改更新标志: 当在Mapping中使用了Update Strategy时,则根据DD_UPDATE,  DD_INSERT, DD_DELETE等可以将更新标志位的值由Insert更改为Update,Insert,Delete等。   在session的property tab里面Treat Source Rows As属性的设置:通过设置Treat Source Rows As 的值,可以再一次对标志位进行更新,也就是说无论Mapping里设置了何种更新标志,在此,又可以进行一次更改。如果选择了Insert,Update, Delete三种方式,则无论在Mapping中如何修改更新标志位,在此将统一全部更改为Insert,Update,Delete。选择Data Driven时,系统将不对标志位做任何修改,维持原来的标志位值。 

最后在session的target Properties: 它的最初默认设置:Insert, Update as Update, Delete三个选项被选中。表明当Session运行的时候,碰到Insert标志的,即做Insert操作, 碰到Update标志的即做Update操作,碰到Delete标志的就做Delete操作。

当然,对于update,有三个选项: Update as Update,Update as inser, update else insert需要特别说明, Update as Update:对于所有被标记为Update的数据,进行Update操作   Update as inser:对于所有被标记为Update的数据,全部进行Insert操作   Update else insert: 对于所有被标记为Update的数据, 先做Update操作,然后对没有Update成功的数据,再进行Insert操作;   需要注意的是,这三个选项是互斥的,只能选择其中一个。 UPDATE else INSERT 就是       语句一: update tab_name set c1= value1 ,c2 = value2 where c_prikey = value_pri       语句二: insert into tab_name values(****)       当在 tab_name的c_prikey找到有等于value_pri的,就执行语句一把所有对应的记录update。       当没有匹配的,就执行语句二。       你可以powercenter的 source defination中的自己定义主键,也可以直接 override update sql,可以不用理会真实表结构中是否有主键

缓慢变化维

Type1:

源表(ID,Name),目标表(ID,Source_ID,name)

  1. 先用lookup目标表ID= Source_ID找到一条数据是否有变化
  2. 用EXP对数据本身标记变化还是新数据
  3. 后面用Filter分别过滤除变化变化或者新数据
  4. 后面用Updatestrategy分别打上update/insert(还要有个seq)标记
  5. 后面直接到target表

Type3:

  1. 先用lookup目标表ID= Source_ID找到一条数据是否有变化
  2. 用EXP对数据本身标记变化还是新数据
  3. 如果是新数据和上面一样
  4. 如果是变化数据

SQL Transformation

Normalizer

一行变多行,

GK_ 1,2,3,4,5,6会一直增加

GCID,1,2,3看源重复几次,不停循环

ShortCut

The original object must be in a shortcut folder

解决数据源,目标或其他对象跨folder时的使用

从共享文件夹拖入到开发文件夹,会提示是否创建shortcut

Join

Master outer join - keeps all rows from Detail and matching rows from Master

最好小表作为master

Master outer join结果集是Detail所有数据

JOIN之前可以加个Sort组件

Domain

ODBC驱动器

Data Direct驱动还是数据库自带驱动

文本文件:

字符集 UTF8

Add Currently Process Flat File Name Port-选择了会增加一列,该列包含文件名

InPut Type:

       Command:即shell命令 ls -al | tail 10, 读取10 个文件作为输入

       File: 就是一个文件

将 CurrentlyProcessedFileName 端口添加到 Source Analyzer 中的平面文件源定义中。

输出文件 名可以:可以使用映射参数、映射变量、会话参数、工作流变量或工作集变量。

Targert

Truncate targer table option:将truncate table如果选中

Target Load Type: normal Bulk

适合数据库表无索引,无主键,当Oracle表有索引或者主键,将引起数据库出错

文本文件:add filename Column to this table ,会自动增加一个新列fileName

文本文件:可以本地或远程,type:none/ftp

Expression

Variable Port:存储在transformation 中多次使用的复杂计算中间结果

Source Qualifier

Select后面的字段与拖入到Expression中的字段(名字/顺序)一样,顺序也一样

SourceQualifier和filter区别: 一个是在数据库过滤,一个是在informatica中过滤

如果数据库有索引可以使用在数据库过滤,如果数据库过滤性能差就在informatica中过滤

Source:

同一个表,如果拖入两次,则会对该表读两次

例如,要使用目录列表作为文件列表,可使用以下命令:

cd $PMSourceFileDir; ls -1 sales-records-Sep-*-2005.dat该命令将根据源文件目录列表生成一个文件列表。 当会话运行时,平面文件读取器会在从命令读取文件名时读取每个文件。

要使用命令输出作为文件列表,选择“命令”作为“输入类型”,并选择“生成文件列表的命令”作为“命令类型”,然后为“命令”属性输入一个命令。

Stored Procedure:

Connect Stored Procedure/unconnected Stored Procedure

Union

Informatica 中的union 是Union ALL

Sequence

用Nextval

如果两个表共享可以用一个Exp

可重用sequence,当多个session操作同一个表时:

  1. 可重用sequence
  2. Cached values

Aggregator

Sum(sal,sal>900): 仅对工资大于900元的员工工资进行汇总

使用Aggregator可以行列转换(多行变一行)

调度

调动是以workflow为单位的

Partition

  1. Database partition: 表是分区的

静态分区:Session中的Mapping->分区,选中源,然后分区类型选择数据库

如果有两个分区,目标为文件的话会有两个文件,可以选择merge

No merge:不合并,生产多个文件

Sequential merge: 顺序合并

Concurrent merge:并行合并

File List:生产一个文件列表

动态分区

Session:Dynamic partition选中

Session中的Mapping->分区,选中源,然后分区类型选择数据库

Hash 分区:

内存管理

缓冲区块大小应大于源或目标中最大数据行的精度。

通常,无需为缓冲区内存分配 1 GB 以上的内存量。

为 DTM 缓冲区大小输入值。

您可以指定“自动”或一个数字值。 如果会话所需的内存大于为 DTM 缓冲区大小设置的内存,则会话性能会降低且会话可能会失败。

默认单位为字节。 为值附加 KB、MB 或 GB 可指定其他单位。 例如,1048576 或 1024KB 或 1MB。

集成服务会将会话缓存中的内存分配到高速缓存设置为自动的所有转换中。 它在所有转换缓存之间划分内存。会话的内存缓存限制不适用于未配置为自动缓存的转换。

DTM Data Transformation Manager内存(read/write/transformation/session log)

默认值是12M(128M/64M/32m)

Transformation cache

一个session内存使用总量是“DTM内存+ Transformation cache

Transformation cache(joiner/lookup/agg/sort)

DTM内存调高:

  1. 使用partition时
  2. 源目标包含大量长字符时

Transformation cache

Data cache size: (number of maser rows)*(8+row size)

只有当读取一条数据分割放到两个DTM block中才需要调节,一般来说一个block包含数据在10条时,性能不好,一般要大于100条。

当设置为auto时,在一个session中所有的auto自动被两个参数限制

Maximum Memory Allowed For Auto Memory Attributes 512M

Maximum Percentage of Total Memory Allowed For Auto Memory Attributes 5

最终会选择这两个中的最小值

打开workflow->task(最上面工具栏里)->会话配置->defatlt_session_config

可以修改所有的task

函数

字符

Concat || :字符串连接  Concat是先将要连接的转换为文本

Initcap: 字符串中每个单词第一个字母大写,其他字母小写

Instr : 从左至右算起返回字符集在字符串中的位置

Substr(string,start[,length]): 返回字符串的一部分

Length: 返回字符串中包含末尾空格在内的字符串长度

Lower/upper/ltrim/rtrim

Lpad/rpad: 在字符串前/后添加空格或者字符

Replacechr(CaseFlag, InputString, OldCharSet, NewChar ): 用单个字符或者无字符替换字符串中的字符

如果 CaseFlag 为非零数字,则函数区分大小写。

如果 CaseFlag 为空值或零,则函数不区分大小写。

Replacestr(CaseFlag, InputString, OldString1, [OldString2, ...OldStringN,] NewString): 用单个字符,多个字符或者无字符替换字符串中的字符

转换函数

TO_DECIMAL( value [, scale ] )/ TO/_FLOAT( value )/ TO_INTEGER( value )

TO_CHAR( numeric_value )

TO_CHAR( date [, format ] ) MM/DD/YYYY HH24:MI:SS

TO_DATE( string [, format ] )

始终返回日期和时间。如果您传递没有时间值的字符串,返回的日期将始终包含时间 00:00:00。

数据整理

INSTR/ IS_DATE/ IS_NUMBER/ IS_SPACES/ ISNULL

日期函数

TRUNC( date [, format ] )

SET_DATE_PART( date, format, value ) 将日期/时间值的一部分设置为指定值

ROUND( date [, format ] ) 舍入日期的一部分

MIN( date, filter_condition ) 返回组中找到的最早日期

MAX( date, filter_condition ) 返回组中找到的最后日期

LAST_DAY( date ) 返回端口中每个日期的月末日日期

GET_DATE_PART( date, format ) 根据默认日期格式 MM/DD/YYYY HH24:MI:SS 返回以整数值形式日期的指定部分

DATE_DIFF( date1, date2, format ) 返回两个日期间的时间长度,按指定的增量(年、月、日、小时、分钟或秒)度量

DATE_COMPARE( date1, date2 ) 返回表明两个较早日期的值

ADD_TO_DATE( date, format, amount ) 将指定数量添加到日期/时间值的一部分,并以指定日期的格式返回日期。 ADD_TO_DATE( SHIP_DATE, 'DD', 10 )将

特殊函数

Docode DECODE( value, first_search, first_result [, second_search,second_result ]…[, default ] )

IIF IIF( condition, value2 [, value2 ] )

当您使用 IIF 函数时,返回值的数据类型始终与结果的数据类型相同,并且采用最大的精度。

IIF( SALES < 100, 1, .3333 )

TRUE 结果 (1) 是整数型,而 FALSE 结果 (.3333) 是小数型。小数型数据类型的精度大于整数型,因此返回值的数据类型始终为小数型。

LOOKUP LOOKUP( result, search1, value1 [, search2, value2]… )

PMCMD

启动工作流。

StartWorkflow 命令在命令行模式下使用以下语法:

pmcmd StartWorkflow

<<-service|-sv> service [<-domain|-d> domain] [<-timeout|-t> timeout]>

<<-user|-u> username|<-uservar|-uv> userEnvVar>

<<-password|-p> password|<-passwordvar|-pv> passwordEnvVar>

[<<-usersecuritydomain|-usd> usersecuritydomain|<-usersecuritydomainvar|-usdv> userSecuritydomainEnvVar>]

[<-folder|-f> folder]

[<-startfrom> taskInstancePath]

[<-recovery|-norecovery>]

[<-paramfile> paramfile]

[<-localparamfile|-lpf> localparamfile]

[<-osprofile|-o> OSUser]

[-wait|-nowait]

[<-runinsname|-rin> runInsName]

Workflow

在 UNIX 上,使用以下语法:

-paramfile '$PMRootDir/myfile.txt'

在 Windows 上,使用以下语法:

-paramfile "$PMRootDir\my file.txt"

Workflow

1 右键workflow可以查看Persistent值

2 tasks->session configuration可以设置默认的configuration,如果在同一个目录中复制session的话,这个默认的configuration也会复制,但是名字会自动加1

3 layout->Arrange可以调节session是水平排列还是垂直排列

4 可以在workflow中查找session,变量

5 Tools->options,可以设置,target load type/复制相关/版本控制/打开文件加是否reload tasks/session/是否默认显示session名字/执行workflow时是否打开monitor

Workflow/worklet/session复制

1 可以在不用目录中复制workflow/worklet/session(不会自动复制mapping/链接)

2 复制session时,如果目标中不存在mapping,则要先复制mapping到目标目录

3 复制如果会话已在存储库中保存了映射变量值,Workflow Manager 将复制或保留已保存的变量值。

4同以目录:可以复制部分session,复制-》粘贴

工作集变量。使用工作集变量引用值和记录信息。 工作集变量与工作流变量的用法相同。 您可以将工作流变量分配给工作集变量,以替代其初始值。

如果您不为每个链接指定条件,集成服务默认将运行工作流或工作集中的下一个任务。

在链接条件中,可以使用预定义或用户定义的工作流和工作集变量。 如果链接条件评估为 True,集成服务将运行工作流或工作集中的下一个任务。 如果链接条件评估为 False,集成服务则不会运行下一个任务。

Metadata Extensions

Repository: Edit->Metadata Extensions

Workflow/session:Edit->Metadata Extensions

您可以在表达式编辑器中使用 -- 或 // 注释指示符添加注释

Assigning an Integration Service

1 Workflow: close all the folder-》service-》Assign Integration Service

2 open workflow-》workflows->edit-》Integration Service(点击后面按钮选择服务器)

Joiner

  • Index. Stores all master rows in the join condition that have unique keys.
  • Data. Stores master source rows.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值