Informatica_PowerCenter 参数和变量使用指南

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Informatica PowerCenter 参数和变量使用指南
中国区唯一总代理
神州数码(中国)有限公司
2014年
目录
第一章参数和变量 (3)
1、概述 (3)
2、参数与变量存在的三种形式 (4)
2.1系统级变量 (4)
2.2 Mapping级参数与变量 (4)
2.3 参数文件级参数与变量 (10)
第二章参数文件格式 (12)
1、标题格式和适用范围 (12)
2、参数和变量类型 (13)
3、实例 (13)
第三章参数文件使用要点 (15)
1、创建准则和使用注意事项 (15)
2、PMCMD中使用参数文件 (17)
第四章应用案例介绍 (18)
1、定义M APPING的变量。

(18)
2、在E XPRESSION组件中引用变量 (19)
3、定义W ORKFLOW变量 (19)
4、在E VENT W AIT组件中引用变量 (20)
5、在S ESSION中引用变量 (21)
6、在C OMMAND组件中引用变量 (22)
7、参数文件定义 (22)
8、S ESSION参数文件引用设置 (23)
9、W ORKFLOW参数文件引用设置 (24)
10、W ORKFLOW流程图 (24)
第一章参数和变量
1、概述
参数和变量可以定义在工作流、工作集或会话中。

您可以使用WordPad 或Notepad 等文本编辑器来创建参数文件。

您在参数文件中列出参数或变量及其值。

参数文件可以包含以下类型的参数和变量:
◆Integration Service变量
◆Integration Service process变量
◆Workflow变量
◆Worklet变量
◆Session参数
◆Mapping参数和变量
当您在工作流、工作集或会话中使用参数或变量时,PowerCenter Server将检查参数文件以确定参数或变量的开始值。

您可以使用参数文件来初始化工作流变量、工作集变量、映射参数和映射变量。

如果您不定义这些参数和变量的开始值,PowerCenter Server将在其它位置检查参数或变量的开始值。

您可以将参数文件放置在PowerCenter Server计算机上,也可以放置在本机上。

如果您无法访问PowerCenter Server计算机上的参数文件,请使用本地参数文件。

使用本地参数文件时,pmcmd会将文件中的变量和值传递到PowerCenter Server。

本地参数文件可以与startworkflow pmcmd命令配合使用。

您必须在参数文件中定义会话参数。

由于会话参数没有默认值,因此如果PowerCenter Server 在参数文件中找不到会话参数的值,就无法初始化会话。

通过为参数文件中的每个对象单独创建分区,您可以在一个参数文件中包含多个工作流、工作集或会话的参数或变量信息。

您还可以为单个工作流、工作集或会话创建多个参数文件,并在必要时更改这些任务使用的文件。

要指定PowerCenter Server 用于工作流、工作集或会话的参数文件,您可以执行以下任一项操作:
◆在工作流、工作集或会话属性中输入参数文件名和目录。

◆使用pmcmd 启动工作流、工作集或会话,然后在命令行中输入参数文件名和目录。

如果您同时在工作流、工作集或会话属性以及pmcmd 命令行中输入参数文件名和目录,PowerCenter Server 将使用您在pmcmd 命令行中输入的信息。

参数文件的应用体现在以下几个方面:
◆对源文本文件名进行参数化
◆对源表名进行参数化
◆对目标输出文本文件名进行参数化
◆对源与目标的数据库连接进行参数化
◆对日志文件及路径进行参数化
2、参数与变量存在的三种形式
2.1系统级变量
✓SYSDATE 系统日期
✓SESSSTARTTIME SESSION启动时间
✓$$$SessStartTime 返回Session启动时间的字符串值
2.2 Mapping级参数与变量
在Designer 中,您可以使用映射参数和变量,让映射变得更灵活。

映射参数和变量表示映射和映射组件中的值。

如果在映射中声明映射参数和变量,那么您可以在会话中,通过更改映射的参数和变量值,来重新使用该映射。

这可以减少创建多个映射所带来的管理费用,因为只需更改映射中的某些特性即可。

在映射中使用映射参数或变量时,您要先声明映射参数或变量供每个映射组件或映射使用。

然后,在运行会话之前,您要为映射参数或变量定义值。

您可以在映射中使用映射参数和变量来增量提取数据。

在“源限定符”转换的源过滤器中使用映射参数或变量可以确定增量提取数据的开始时间标记和结束时间标记。

例如,您可以创建用户定义的映射变量$$LastUpdateDateTime,用以保存PowerCenter Server 在上一个会话中读取的最后一行的时间标记。

在源过滤器中,将$$LastUpdateDateTime 用于开始时间标记,而将内置变量$$$SessStartTime 用于结束时间标记。

使用以下过滤器基于源中的SALES.sales_datetime 列增量提取数据:SALES.sales_datetime > TO_DATE (‘$$LastUpdateDateTime’)
AND SALES.sales_datetime < TO_DA TE (‘$$$SessStartTime’)
2.1.1 Mapping参数
映射参数表示在运行会话之前您可以定义的常量值。

映射参数在整个会话中保持相同的值。

使用映射参数时,您要在映射或映射组件中声明并使用该参数。

然后在参数文件中定义该参数的值。

在会话过程中,PowerCenter Server 将依照该值对参数的所有引用进行计算。

例如,您希望使用相同的会话来分别提取每个客户的事务记录。

您可以创建一个映射参数以表示单个客户帐户,而无需为每个客户帐户创建单独的映射。

然后,您可以在源过滤器中使用该参数,只提取该客户帐户的数据。

运行会话之前,您需要在参数文件中输入该参数的值。

要重新使用相同的映射来提取其他客户帐户的记录,您可以在参数文件中为该参数输入新的值,然后运行会话。

或者,您可以为每个客户帐户创建参数文件,然后每当使用pmcmd 时就以不同的参数文件启动会话。

通过使用参数文件,您可以减少创建多个映射和会话(用于提取不同客户帐户的事务记录)所带来的管理费用。

每当您运行会话时,如果要使用映射参数的相同值,请对每个会话运行使用相同的参数文件。

要在会话之间更改映射参数的值时,您可以执行以下任一操作:
◆更新会话之间的参数文件。

◆创建不同的参数文件并配置会话使用新的文件。

◆从会话属性中移除参数文件,以便会话使用映射中参数的配置初始值。

◆选择类型为参数
2.2.2 Mapping变量
与映射参数不同的是,映射变量表示在会话进行时一个可以改变的值。

在每个会话成功运行后,PowerCenter
Server 都会将映射变量的值保存到资料库并在下次您运行此会话时使用该值。

使用映射变量时,您要在映射或映射组件中对该变量进行声明,然后在映射中使用变量函数来更改变量的值。

会话开始时,PowerCenter Server 将依照变量的开始值对变量的引用进行计算。

会话成功结束后,PowerCenter Server 会将变量的最终值保存至资料库。

下次您运行该会话时,PowerCenter Server 将依照保存的值对变量的引用进行计算。

通过在参数文件中定义变量的开始值,您可以覆盖保存的值。

使用映射变量来执行源的增量读取。

例如,假设以上映射参数示例中客户帐户的编号是从001 至065,增量为1。

您可以创建初始值为001 的映射变量,而无需创建映射参数。

在映射中,使用一个变量函数给变量值加1。

PowerCenter Server 首次运行会话时,它将提取客户帐户001 的记录。

会话结束时,它将给变量加1,并将该值保存到资料库。

下次PowerCenter Server 运行会话时,它将提取下一个客户帐户002 的数据。

它同时还增加变量值,因此下一个会话将提取并查找客户帐户003 的数据。

选择类型为变量
2.2.3 使用Mapping参数和变量
您可以使用Mapping Designer 或Mapplet Designer 创建映射参数和变量。

映射参数和变量在创建后出现在“表达式编辑器”的“变量”选项卡中。

您可以在映射组件或映射的任何表达式中使用这些参数和变量。

Designer 在映射组件和映射的“表达式编辑器”中对映射参数和变量进行验证。

您可以在映射组件或映射的源限定符中使用映射参数和变量。

在“源限定符”转换中使用映射参数和变量时,Designer 会展开映射参数和变量,然后再将查询传递至源数据库以进行验证。

这允许源数据库验证查询。

使用Transformation Developer 创建可再用转换时,您可以使用任何映射参数或变量。

由于可再用转换未包含在任何映射组件或映射中,Designer 将验证任意映射参数或变量在可再用转换表达式中的使用。

在映射组件或映射中使用可再用转换时,Designer 将再次对该表达式进行验证。

如果在映射组件或映射中没有定义参数或变量,或在可再用转换中错误使用参数或变量,那么当您对映射组件或映射进行验证时,Designer 将记录一个错误。

当Designer 对可再用转换中的映射变量进行验证时,它会将变量视为整型数据类型。

您不能在映射组件和映射之间交替使用映射参数和变量。

不能在映射组件中使用为映射声明的映射参数和变量。

同样,您不能在映射中使用为映射组件声明的映射参数或变量。

从Designer 中的Mappings/Mapplets 菜单中进行定义在相应的Mapping或Mapplet中进行引用即可。

2.2.4 初始和默认值
在映射或映射组件中声明映射参数或变量时,您可以输入一个初始值。

如果参数文件中没有定义映射参数,PowerCenter Server 将使用映射参数的配置初始值。

同样,如果参数文件中没有定义变量值,而且资料库中没有保存的变量值,PowerCenter Server 将使用该映射变量的配置初始值。

如果PowerCenter Server 需要一个初始值,而您又没有为参数或变量声明初始值,PowerCenter Server 将基于参数或变量的数据类型使用一个默认值。

PowerCenter Server 所使用的不同类型数据的默认值:
例如,如果您使用整型映射变量$$MiscellaneousExpenses 创建一个新映射,而且,既没有为变量配置一个初始值,也没有在参数文件中对其进行定义,那么当您首次运行一个带有该映射的会话时,PowerCenter Server 将使用数值数据类型的默认值0 。

或者,假设您创建了一个映射参数$$MiscellaneousCosts 来表示附加费用,此费用当前不存在于源数据中,但在将来可能要用到。

配置小数数据类型的参数。

由于在没有附加费用时希望$$MiscellaneousCosts 按0 进行计算,因此您可以将初始值设为0。

只要您没有在参数文件中定义该参数值,PowerCenter Server 就会将$$MiscellaneousCosts 替换为0。

如果要在映射计算中包含其它费用,请在参数文件中将$$MiscellaneousCosts 设为该值。

2.2.5 使用字符串参数和变量
在“源限定符”转换中输入字符串数据类型的映射参数和变量时,请使用适用于源数据库的字符串标识符。

当PowerCenter Server 展开“源限定符”转换中的一个参数或变量时,PowerCenter Server 会将该参数或变量替换为其开始值,然后将展开的查询传递至源数据库。

多数数据库要求使用单引号将字符串值引起来。

使用Informatica 转换语言输入字符串参数或变量时,不要加上多余的引号。

PowerCenter Server 将根据Informatica 转换语言的命名语法来识别映射参数和变量。

例如,您可能在“源限定符”转换的过滤器中使用名为$$State 的参数来提取某个州的行:
STA TE = ‘$$State’
在会话过程中,PowerCenter Server 将参数替换为字符串。

如果在参数文件中将$$State 定义为MD,则
PowerCenter Server 会将参数替换为:
STA TE = ‘MD’
您可以按如下方法使用Informatica 转换语言,在“过滤器”转换中执行类似的过滤操作:
STA TE = $$State
如果您在“过滤器”转换中使用单引号将参数引起来,PowerCenter Server 会将其读作字符串文字“$$State”,而不会将参数替换为“MD”。

2.2.6 变量函数
变量函数确定PowerCenter Server 如何计算管道中映射变量的当前值。

您可以在表达式中使用变量函数,为该会话的下次运行设置映射变量值。

转换语言提供以下变量函数供映射使用:
✓SETMAXV ARIABLE($$Variable,value) 设置最大值变量
SetMaxVariable。

将变量设为一组值中的最大值。

它将忽略标记为更新、删除或拒绝的行。

要将SetMaxVariable 与映射变量一起使用,必须将映射变量的聚合类型设为Max。

✓SETMINV ARIABLE($$Variable,value) 设置最小值变量
SetMinVariable。

将变量设为一组值中的最小值。

它将忽略标记为更新、删除或拒绝的行。

要将SetMinVariable 与映射变量一起使用,必须将映射变量的聚合类型设为Min。

✓SETV ARIABLE($$Variable,value) 设置变量值
SetVariable。

将变量设为配置的值。

会话结束时,它会将变量的最终当前值与开始值进行比较。

它会基于变量的聚合类型将最终值保存至资料库。

要将SetVariable 函数与映射变量一起使用,必须将映射变量的聚合类型设为Max 或Min。

SetVariable 函数将忽略标记为删除或拒绝的行。

✓SETCOUNTV ARIABLE($$Variable) 设置递增、减变量
SetCountVariable。

将变量值加1。

换句话说,当一行标记为插入时,变量值将加1,而当该行标记为删除时,变量值将减1。

它将忽略标记为更新或拒绝的行。

要将SetCountVariable 与映射变量一起使用,必须将映射变量的聚合类型设为Count。

对于管道中的每个映射变量,您只能使用一次SetVariable 函数。

当您在管道中创建多个分区时,PowerCenter Server 将使用多个线程来处理该管道。

如果您对同一变量多次使用此函数,则映射变量的当前值可能会得到不确定结果。

变量函数及可以与各个函数一起使用的聚合类型和数据类型:
注意:变量的聚合类型。

确定变量可以执行的计算类型。

✓如果要使用映射变量确定一组值中的最大值,请将聚合设为Max。

✓如果要使用映射变量确定一组值中的最小值,请将聚合设为Min。

✓您不能在“等级”(Rank)或“聚合”(Aggregator)转换中使用变量函数。

2.3 参数文件级参数与变量
2.3.1 参数文件形式
2.3.2 参数文件的设置
2.3.3 参数文件的级别规则
第二章参数文件格式
1、标题格式和适用范围
在参数文件中求值时,您必须在条目前面加上标题,用于识别要分配其参数和变量的Integration Service,Integration Service process,workflow,worklet或者session。

您在此标题下面直接分配各个参数和变量,并在新行上输入每个参数或变量。

对于每项任务,您可以按任意顺序列出参数和变量。

您可以定义下列标题格式:
parameter name=value
parameter2 name=value
variable name=value
variable2 name=value
例如,Production 文件夹中有一个会话s_MonthlyCalculations。

该会话使用一个字符串映射参数$$State(您希望将其设为“MA”)以及一个datetime 映射变量$$Time。

$$Time 已有一个保存在资料库中的初始值“9/30/2000 00:00:00”,但是您需要将此值覆盖为“10/1/2000 00:00:00”。

该会话还使用会话参数来连接至源文件和目标数据库,并且将会话日志写入相应的会话日志文件。

2、参数和变量类型
参数文件中定义的参数和变量:
会话的参数文件包括文件夹和会话名称以及每个参数和变量:
[Production.s_MonthlyCalculations]
$PMFailureEmailUser=pcadmin@
$$State=MA
$$Time=10/1/2000 00:00:00
$InputFile1=sales.txt
$DBConnection_target=sales
$PMSessionLogFile=D:/session logs/firstrun.txt
您可以在下一次运行会话时编辑参数文件,以便将状态更改为MD 并删除$$Time 变量。

这样,PowerCenter Server 就可以使用前一次会话运行时设置的变量值。

3、实例
以下文本摘自一个参数文件:
[Service:IntSvs_01]
$PMSuccessEmailUser=pcadmin@
$PMFailureEmailUser=pcadmin@
[HET_TGTS.WF:wf_TCOMMIT_INST_ALIAS]
$$platform=unix
[HET_TGTS.WF:wf_TGTS_ASC_ORDR.ST:s_TGTS_ASC_ORDR]
$$platform=unix
$DBConnection_ora=qasrvrk2_hp817
[ORDERS.WF:wf_PARAM_FILE.WT:WL_PARAM_Lvl_1]
$$DT_WL_lvl_1=02/01/2005 01:05:11
$$Double_WL_lvl_1=2.2
[ORDERS.WF:wf_PARAM_FILE.WT:WL_PARAM_Lvl_1.WT:NWL_PARAM_Lvl_2] $$DT_WL_lvl_2=03/01/2005 01:01:01
$$Int_WL_lvl_2=3
$$String_WL_lvl_2=ccccc
第三章参数文件使用要点
1、创建准则和使用注意事项
◆必要时使用大写文件夹和会话名称。

参数文件中的文件夹和会话名称区分大小写。

Folder名和Session
名在参数文件中是敏感的;Service名和Node名不敏感。

◆适当定义服务和服务进程变量。

Service和service process变量必须使用$PM开头。

否则Integration
Service不认可service和service process变量。

◆可以为workflows, worklets和sessions定义一个服务和服务进程变量。

如果您定义在参数文件中定义一
个workflow, worklet或session 的service和service process变量,那么该变量可以在运行在该service process中的任意一个TASK生效。

◆罗列mapping必须的所有参数和变量。

Mapping参数和变量的值会在任务开始的时候转换成相应的值。

◆输入非唯一会话名称的文件夹名称。

如果某个会话名称在一个资料库中出现不止一次,请输入文件夹名
称以指示会话的位置。

◆创建一个或更多参数文件。

您将参数文件单独分配给工作流、工作集和会话。

您可以为所有这些任务指
定相同的参数文件,也可以创建几个参数文件。

◆如果您需要在文件中包含一个以上会话的参数和变量信息,请如下所示为每个会话创建一个新分区。

文件夹名称可选。

[folder_name.session_name]
parameter_name=value
variable_name=value
mapplet_name.parameter_name=value
[folder2_name.session_name]
parameter_name=value
variable_name=value
mapplet_name.parameter_name=value
◆按任意顺序指定标题。

在参数文件中,您可以按任意顺序放置标题。

但是如果您在文件中对相同的参数
或变量定义一次以上,则PowerCenter Server 将使用参数或变量的第一个实例来分配参数或变量值。

◆按任意顺序指定参数和变量。

在每个标题下面,您可以按任意顺序指定参数和变量。

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

PowerCenter Server 可能会将多余的空格解释为值
的一部分。

◆列出所有必要的映射参数和变量。

为映射参数和变量输入的值将成为映射中的参数和变量的开始值。


射参数和变量名称不区分大小写。

◆列出所有会话参数。

会话参数不具有默认值。

未定义的会话参数可能会导致会话失败。

会话参数名称不
区分大小写。

◆为datetime 值使用正确的日期格式。

在输入datetime 值时,请使用以下日期格式:
✓MM/DD/RR
✓MM/DD/RR HH24:MI:SS
✓MM/DD/YYYY
✓MM/DD/YYYY HH24:MI:SS
◆不要在参数或变量两边加上引号。

PowerCenter Server 会将等号后面的任何字符都解释为值的一部分。

◆如下所示,将映射组件名称附加到在映射组件中创建的参数变量前面:
mapplet_name.parameter_name=value
mapplet2_name.variable_name=value
◆定义Workflow和Mapping的参数和变量时,注意两处的参数和变量名称不要一样,否则Mapping定
义的将不被识别。

◆在参数文件中,文件夹和会话名称区分大小写。

请确保完全按照Workflow Manager 中的显示来输入文
件夹和会话名称。

另外,请为所有用户定义会话参数使用相应的前缀。

用户定义会话参数的必要命名惯例
◆为可再用参数集创建单独的参数文件。

如果您打算轮流使用会话的参数集,请为每个参数集创建一个参
数文件。

使用pmcmd 开始会话并指定要使用的参数文件的名称,或者编辑会话以使用不同的参数文件。

◆将所有参数文件保存至其中一个服务器变量目录。

如果您将所有参数文件保存至其中一个服务器变量目
录(例如$SourceFileDir),您就可以在会话属性表中使用该服务器变量。

如果日后要移动源和参数文件,您可以通过将服务器变量更改为指向新目录,来更新所有会话。

◆在SQL 编辑器中,使用引号将字符串和日期时间参数及变量引起来。

在“源限定符”转换中使用字符串
参数或变量时,请使用源系统能够识别的字符串标识符(例如单引号)将该参数或变量括起来。

◆输入映射参数和变量的初始值。

如果您知道映射参数或变量的逻辑默认值,请在创建参数或映射时,将
该值用作初始值。

这将允许PowerCenter Server 使用您的默认值替代基于数据类型的默认值。

◆使用单个参数文件,对相关会话的参数信息进行分组。

如果会话可能使用相同的数据库连接或目录,
则您可能需要将它们包含在相同的参数文件中。

升级现有的系统时,您只需编辑一个参数文件即可更新所有会话的信息。

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

当您更改循环中的某个会话的参数值时,可以在常
规基础上重复使用相同的值。

如果您一周针对销售和市场营销数据库运行一次会话,则可能需要为每次常规会话运行单独创建参数文件。

然后,您无需在每次运行会话时更改会话属性中的参数文件,而是可以使用pmcmd 指定在启动会话时要使用的参数文件。

2、PMCMD中使用参数文件
当利用PMCMD去调度Workflow和Session时,用一个参数文件传递变量给Integration Service。

当你使用PMCMD的startworkflow或starttask命令启动Workflow和Session时,你可以随意键入参数文件的目录和名称。

下面例子是调用workflowA,使用参数文件是myfile.txt:
pmcmd startworkflow -uv USERNAME -pv PASSWORD -s SALES:6258 -f east -w wSalesAvg -paramfile '\$PMRootDir/myfile.txt' workflowA
下面例子是调用taskA,使用参数文件是myfile.txt:
pmcmd starttask -uv USERNAME -pv PASSWORD -s SALES:6258 -f east -w wSalesAvg -paramfile '\$PMRootDir/myfile.txt' taskA
第四章应用案例介绍
本案例介绍参数文件的具体应用,以及使用时经常遇到的几点注意项。

1、定义Mapping的变量。

注意:本案例选择参数。

一般在整个流程中定义的变量值会发生变化的,即需要改变变量的值,那么选择Variable类型。

如果定义的变量值永远都不会改变,那么选择Parameter类型。

2、在Expression组件中引用变量
提示:如果选择变量类型,那么可以使用变量函数对定义的变量赋值。

3、定义Workflow变量
提示:workflow和mapping中定义的变量名称,如果在参数文件中赋值是一样的,确定两变量名称不要一样。

否则mapping定义的变量将不被识别。

4、在EventWait组件中引用变量
5、在Session中引用变量
6、在Command组件中引用变量
7、参数文件定义
8、Session参数文件引用设置
9、Workflow参数文件引用设置
10、Workflow流程图。

相关文档
最新文档