2.1.1Mapping参数
映射参数表示在运行会话之前您可以定义的常量值。
映射参数在整个会话中保持相同的值。
使用映射参数时,您要在映射或映射组件中声明并使用该参数。
然后在参数文件中定义该参数的值。
在会话过程中,PowerCenterServer将依照该值对参数的所有引用进行计算。
例如,您希望使用相同的会话来分别提取每个客户的事务记录。
您可以创建一个映射参数以表示单个客户帐户,而无需为每个客户帐户创建单独的映射。
然后,您可以在源过滤器中使用该参数,只提取该客户帐户的数据。
运行会话之前,您需要在参数文件中输入该参数的值。
要重新使用相同的映射来提取其他客户帐户的记录,您可以在参数文件中为该参数输入新的值,然后运行会话。
或者,您可以为每个客户帐户创建参数文件,然后每当使用pmcmd时就以不同的参数文件启动会话。
通过使用参数文件,您可以减少创建多个映射和会话(用于提取不同客户帐户的事务记录)所带来的管理费用。
每当您运行会话时,如果要使用映射参数的相同值,请对每个会话运行使用相同的参数文件。
要在会话之间更改映射参数的值时,您可以执行以下任一操作:
◆更新会话之间的参数文件。
◆创建不同的参数文件并配置会话使用新的文件。
◆从会话属性中移除参数文件,以便会话使用映射中参数的配置初始值。
◆选择类型为参数
字段
必需/可选
说明
名称
必需
参数名称。
名称参数$$ParameterName。
参数名称的语法必须是在$$后面加上字母数字或下划线字符。
类型
必需
变量或参数。
数据类型
必需
参数的数据类型。
选择有效的转换数据类型。
使用除Binary或Raw之外的任何数据类型。
精度或标度
必需
参数的精度和标度。
聚合
不适用
用于变量。
初始值
可选
参数的初始值。
如果您没有在参数文件中为参数设置一个值,PowerCenterServer在会话过程中将使用该参数的初始值。
如果此值也未定义,PowerCenterServer将基于映射变量的数据类型使用默认值。
对日期/时间参数的初始值使用以下任一格式:
-MM/DD/RR
-MM/DD/RRHH24:
MI:
SS
-MM/DD/YYYY
-MM/DD/YYYYHH24:
MI:
SS
说明
可选
与参数相关联的说明。
2.2.2Mapping变量
与映射参数不同的是,映射变量表示在会话进行时一个可以改变的值。
在每个会话成功运行后,PowerCenterServer都会将映射变量的值保存到资料库并在下次您运行此会话时使用该值。
使用映射变量时,您要在映射或映射组件中对该变量进行声明,然后在映射中使用变量函数来更改变量的值。
会话开始时,PowerCenterServer将依照变量的开始值对变量的引用进行计算。
会话成功结束后,PowerCenterServer会将变量的最终值保存至资料库。
下次您运行该会话时,PowerCenterServer将依照保存的值对变量的引用进行计算。
通过在参数文件中定义变量的开始值,您可以覆盖保存的值。
使用映射变量来执行源的增量读取。
例如,假设以上映射参数示例中客户帐户的编号是从001至065,增量为1。
您可以创建初始值为001的映射变量,而无需创建映射参数。
在映射中,使用一个变量函数给变量值加1。
PowerCenterServer首次运行会话时,它将提取客户帐户001的记录。
会话结束时,它将给变量加1,并将该值保存到资料库。
下次PowerCenterServer运行会话时,它将提取下一个客户帐户002的数据。
它同时还增加变量值,因此下一个会话将提取并查找客户帐户003的数据。
◆选择类型为变量
字段
必需/可选
说明
名称
必需
变量名。
名称变量$$VariableName。
变量名的语法必须是在$$后面加上字母数字或下划线字符。
类型
必需
变量或参数。
数据类型
必需
变量的数据类型。
选择有效的转换数据类型。
使用除Binary之外的任何数据类型。
您选择的数据类型会影响您选择的聚合类型。
例如,如果创建字符串变量,您就不能使用Count聚合类型对其进行配置。
精度或标度
必需
变量的精度和标度。
聚合
必需
变量的聚合类型。
确定变量可以执行的计算类型。
-如果要使用映射变量确定一组值中的最大值,请将聚合设为Max。
-如果要使用映射变量来计算从源读取的行数量,请将聚合设为Count。
-如果要使用映射变量确定一组值中的最小值,请将聚合设为Min。
初始值
可选
变量的初始值。
如果没有将变量值保存至资料库,或没有在参数文件中定义变量值,那么PowerCenterServer将使用变量的初始值。
如果此值也未定义,PowerCenterServer将基于映射变量的数据类型使用默认值。
对日期时间变量的初始值使用以下任一格式:
-MM/DD/RR
-MM/DD/RRHH24:
MI:
SS
-MM/DD/YYYY
-MM/DD/YYYYHH24:
MI:
SS
说明
可选
与变量相关联的说明。
2.2.3使用Mapping参数和变量
您可以使用MappingDesigner或MappletDesigner创建映射参数和变量。
映射参数和变量在创建后出现在“表达式编辑器”的“变量”选项卡中。
您可以在映射组件或映射的任何表达式中使用这些参数和变量。
Designer在映射组件和映射的“表达式编辑器”中对映射参数和变量进行验证。
您可以在映射组件或映射的源限定符中使用映射参数和变量。
在“源限定符”转换中使用映射参数和变量时,Designer会展开映射参数和变量,然后再将查询传递至源数据库以进行验证。
这允许源数据库验证查询。
使用TransformationDeveloper创建可再用转换时,您可以使用任何映射参数或变量。
由于可再用转换未包含在任何映射组件或映射中,Designer将验证任意映射参数或变量在可再用转换表达式中的使用。
在映射组件或映射中使用可再用转换时,Designer将再次对该表达式进行验证。
如果在映射组件或映射中没有定义参数或变量,或在可再用转换中错误使用参数或变量,那么当您对映射组件或映射进行验证时,Designer将记录一个错误。
当Designer对可再用转换中的映射变量进行验证时,它会将变量视为整型数据类型。
您不能在映射组件和映射之间交替使用映射参数和变量。
不能在映射组件中使用为映射声明的映射参数和变量。
同样,您不能在映射中使用为映射组件声明的映射参数或变量。
从Designer中的Mappings/Mapplets菜单中进行定义在相应的Mapping或Mapplet中进行引用即可。
2.2.4初始和默认值
在映射或映射组件中声明映射参数或变量时,您可以输入一个初始值。
如果参数文件中没有定义映射参数,PowerCenterServer将使用映射参数的配置初始值。
同样,如果参数文件中没有定义变量值,而且资料库中没有保存的变量值,PowerCenterServer将使用该映射变量的配置初始值。
如果PowerCenterServer需要一个初始值,而您又没有为参数或变量声明初始值,PowerCenterServer将基于参数或变量的数据类型使用一个默认值。
PowerCenterServer所使用的不同类型数据的默认值:
数据
默认值
String
空字符串。
Numeric
0
Datetime
1/1/1753A.D.,或
1/1/1(如果PowerCenterServer配置为与4.0的兼容)。
例如,如果您使用整型映射变量$$MiscellaneousExpenses创建一个新映射,而且,既没有为变量配置一个初始值,也没有在参数文件中对其进行定义,那么当您首次运行一个带有该映射的会话时,PowerCenterServer将使用数值数据类型的默认值0。
或者,假设您创建了一个映射参数$$MiscellaneousCosts来表示附加费用,此费用当前不存在于源数据中,但在将来可能要用到。
配置小数数据类型的参数。
由于在没有附加费用时希望$$MiscellaneousCosts按0进行计算,因此您可以将初始值设为0。
只要您没有在参数文件中定义该参数值,PowerCenterServer就会将$$MiscellaneousCosts替换为0。
如果要在映射计算中包含其它费用,请在参数文件中将$$MiscellaneousCosts设为该值。
2.2.5使用字符串参数和变量
在“源限定符”转换中输入字符串数据类型的映射参数和变量时,请使用适用于源数据库的字符串标识符。
当PowerCenterServer展开“源限定符”转换中的一个参数或变量时,PowerCenterServer会将该参数或变量替换为其开始值,然后将展开的查询传递至源数据库。
多数数据库要求使用单引号将字符串值引起来。
使用Informatica转换语言输入字符串参数或变量时,不要加上多余的引号。
PowerCenterServer将根据Informatica转换语言的命名语法来识别映射参数和变量。
例如,您可能在“源限定符”转换的过滤器中使用名为$$State的参数来提取某个州的行:
STATE=‘$$State’
在会话过程中,PowerCenterServer将参数替换为字符串。
如果在参数文件中将$$State定义为MD,则PowerCenterServer会将参数替换为:
STATE=‘MD’
您可以按如下方法使用Informatica转换语言,在“过滤器”转换中执行类似的过滤操作:
STATE=$$State
如果您在“过滤器”转换中使用单引号将参数引起来,PowerCenterServer会将其读作字符串文字“$$State”,而不会将参数替换为“MD”。
2.2.6变量函数
变量函数确定PowerCenterServer如何计算管道中映射变量的当前值。
您可以在表达式中使用变量函数,为该会话的下次运行设置映射变量值。
转换语言提供以下变量函数供映射使用:
✓SETMAXVARIABLE($$Variable,value)设置最大值变量
SetMaxVariable。
将变量设为一组值中的最大值。
它将忽略标记为更新、删除或拒绝的行。
要将SetMaxVariable与映射变量一起使用,必须将映射变量的聚合类型设为Max。
✓SETMINVARIABLE($$Variable,value)设置最小值变量
SetMinVariable。
将变量设为一组值中的最小值。
它将忽略标记为更新、删除或拒绝的行。
要将SetMinVariable与映射变量一起使用,必须将映射变量的聚合类型设为Min。
✓SETVARIABLE($$Variable,value)设置变量值
SetVariable。
将变量设为配置的值。
会话结束时,它会将变量的最终当前值与开始值进行比较。
它会基于变量的聚合类型将最终值保存至资料库。
要将SetVariable函数与映射变量一起使用,必须将映射变量的聚合类型设为Max或Min。
SetVariable函数将忽略标记为删除或拒绝的行。
✓SETCOUNTVARIABLE($$Variable)设置递增、减变量
SetCountVariable。
将变量值加1。
换句话说,当一行标记为插入时,变量值将加1,而当该行标记为删除时,变量值将减1。
它将忽略标记为更新或拒绝的行。
要将SetCountVariable与映射变量一起使用,必须将映射变量的聚合类型设为Count。
对于管道中的每个映射变量,您只能使用一次SetVariable函数。
当您在管道中创建多个分区时,PowerCenterServer将使用多个线程来处理该管道。
如果您对同一变量多次使用此函数,则映射变量的当前值可能会得到不确定结果。
变量函数及可以与各个函数一起使用的聚合类型和数据类型:
变量函数
有效的聚合类型
有效的数据类型
SetVariable
Max或Min
除二进制数据类型以外的所有转换数据类型。
SetMaxVariable
仅限Max
除二进制数据类型以外的所有转换数据类型。
SetMinVariable
仅限Min
除二进制数据类型以外的所有转换数据类型。
SetCountVariable
仅限Count
仅限Integer和SmallInteger数据类型。
注意:
变量的聚合类型。
确定变量可以执行的计算类型。
✓如果要使用映射变量确定一组值中的最大值,请将聚合设为Max。
✓如果要使用映射变量确定一组值中的最小值,请将聚合设为Min。
✓您不能在“等级”(Rank)或“聚合”(Aggregator)转换中使用变量函数。
2.3参数文件级参数与变量
2.3.1参数文件形式
2.3.2参数文件的设置
2.3.3参数文件的级别规则
第二章参数文件格式
1、标题格式和适用范围
在参数文件中求值时,您必须在条目前面加上标题,用于识别要分配其参数和变量的IntegrationService,IntegrationServiceprocess,workflow,worklet或者session。
您在此标题下面直接分配各个参数和变量,并在新行上输入每个参数或变量。
对于每项任务,您可以按任意顺序列出参数和变量。
您可以定义下列标题格式:
标 题
范 围
[Global]
全局使用,在IntegrationServices,IntegrationServiceprocesses,workflows,worklets和sessions。
[Service:
servicename]
应用在服务运行的IntegrationService,workflows,worklets和sessions。
[Service:
servicename.ND:
nodename]
应用在服务进程运行的IntegrationServiceprocess,workflows,worklets,和sessions。
[foldername.WF:
workflowname]
应用在指定workflow和所有sessions。
[foldername.WF:
workflowname.WT:
workletname]
应用在指定worklet和所有sessions。
[foldername.WF:
workflowname.WT:
workletname.WT:
workletname...]
应用在嵌套worklet和所有sessions。
[foldername.WF:
workflowname.ST:
sessionname]
或
[foldername.WF:
workflowname.WT:
workletname.ST:
sessionname]
或
[foldername.sessionname]
或
[sessionname]
应用在指定session。
在每个标题下面,如下所示定义参数和变量值:
parametername=value
parameter2name=value
variablename=value
variable2name=value
例如,Production文件夹中有一个会话s_MonthlyCalculations。
该会话使用一个字符串映射参数$$State(您希望将其设为“MA”)以及一个datetime映射变量$$Time。
$$Time已有一个保存在资料库中的初始值“9/30/200000:
00:
00”,但是您需要将此值覆盖为“10/1/200000:
00:
00”。
该会话还使用会话参数来连接至源文件和目标数据库,并且将会话日志写入相应的会话日志文件。
2、参数和变量类型
参数文件中定义的参数和变量:
参数和变量类型
参数和变量名称
所需的定义
服务变量
$PMFailureEmailUser
pcadmin@
字符串映射参数
$$State
MA
Datetime映射变量
$$Time
10/1/200505:
04:
11
源文件(会话参数)
$InputFile1
Sales.txt
数据库连接(会话参数)
$DBConnection_Target
Sales(databaseconnection)
会话日志文件(会话参数)
$PMSessionLogFile
d:
/sessionlogs/firstrun.txt
会话的参数文件包括文件夹和会话名称以及每个参数和变量:
[Production.s_MonthlyCalculations]
$PMFailureEmailUser=pcadmin@
$$State=MA
$$Time=10/1/200000:
00:
00
$InputFile1=sales.txt
$DBConnection_target=sales
$PMSessionLogFile=D:
/sessionlogs/firstrun.txt
您可以在下一次运行会话时编辑参数文件,以便将状态更改为MD并删除$$Time变量。
这样,PowerCenterServer就可以使用前一次会话运行时设置的变量值。
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/200501:
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/200501:
01:
01
$$Int_WL_lvl_2=3
$$String_WL_lvl_2=ccccc
第三章参数文件使用要点
1、创建准则和使用注意事项