!-
Server 都会将映射变量的值保存到资料库并在下次您运行此会话时使用该值。
使用映射变量时,您要在映射或映射组件中对该变量进行声明,然后在映射中使用变量函数来更改变量的值。会话开始时,PowerCenter Server 将依照变量的开始值对变量的引用进行计算。会话成功结束后,PowerCenter Server 会将变量的最终值保存至资料库。下次您运行该会话时,PowerCenter Server 将依照保存的值对变量的引用进行计算。通过在参数文件中定义变量的开始值,您可以覆盖保存的值。
使用映射变量来执行源的增量读取。例如,假设以上映射参数示例中客户帐户的编号是从 001 至 065,增量为 1。您可以创建初始值为 001 的映射变量,而无需创建映射参数。在映射中,使用一个变量函数给变量值加 1。PowerCenter Server 首次运行会话时,它将提取客户帐户 001 的记录。会话结束时,它将给变量加 1,并将该值保存到资料库。下次 PowerCenter Server 运行会话时,它将提取下一个客户帐户 002 的数据。它同时还增加变量值,因此下一个会话将提取并查找客户帐户 003 的数据。
? 选择类型为变量
字 段 名称 类型 必需/可选 必需 或下划线字符。 必需 变量或参数。 说 明 变量名。名称变量 $$VariableName。变量名的语法必须是在 $$ 后面加上字母数字变量的数据类型。选择有效的转换数据类型。使用除 Binary 之外的任何数据类型。数据类型 必需 您选择的数据类型会影响您选择的聚合类型。例如,如果创建字符串变量,您就不能使用 Count 聚合类型对其进行配置。 精度或标度 必需 变量的精度和标度。 变量的聚合类型。确定变量可以执行的计算类型。 - 如果要使用映射变量确定一组值中的最大值,请将聚合设为 Max。 聚合 必需 - 如果要使用映射变量来计算从源读取的行数量,请将聚合设为 Count。 - 如果要使用映射变量确定一组值中的最小值,请将聚合设为 Min。 变量的初始值。如果没有将变量值保存至资料库,或没有在参数文件中定义变量值,那么 PowerCenter Server 将使用变量的初始值。如果此值也未定义,PowerCenter Server 将基于映射变量的数据类型使用默认值。 初始值 可选 对日期时间变量的初始值使用以下任一格式: - MM/DD/RR - MM/DD/RR HH24:MI:SS !-
- MM/DD/YYYY - MM/DD/YYYY HH24:MI:SS 说明 可选 与变量相关联的说明。 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 所使用的不同类型数据的默认值:
数据 String Numeric Datetime 空字符串。 0 1/1/1753 A.D.,或 默认值 1/1/1(如果 PowerCenter Server 配置为与 4.0 的兼容)。 例如,如果您使用整型映射变量 $$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 的参数来提取某个州的行:
STATE = ‘$$State’
在会话过程中,PowerCenter Server 将参数替换为字符串。如果在参数文件中将 $$State 定义为 MD,则
!-
PowerCenter Server 会将参数替换为:
STATE = ‘MD’
您可以按如下方法使用 Informatica 转换语言,在“过滤器”转换中执行类似的过滤操作:
STATE = $$State
如果您在“过滤器”转换中使用单引号将参数引起来,PowerCenter Server 会将其读作字符串文字 “$$State”,而不会将参数替换为 “MD”。
2.2.6 变量函数
变量函数确定 PowerCenter Server 如何计算管道中映射变量的当前值。您可以在表达式中使用变量函数,为该会话的下次运行设置映射变量值。转换语言提供以下变量函数供映射使用:
? 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 函数。当您在管道中创建多个分区时,PowerCenter Server 将使用多个线程来处理该管道。如果您对同一变量多次使用此函数,则映射变量的当前值可能会得到不确定结果。
变量函数及可以与各个函数一起使用的聚合类型和数据类型:
变量函数 SetVariable 有效的聚合类型 Max 或 Min 有效的数据类型 除二进制数据类型以外的所有转换数据类型。 !-
SetMaxVariable SetMinVariable 仅限 Max 仅限 Min 除二进制数据类型以外的所有转换数据类型。 除二进制数据类型以外的所有转换数据类型。 仅限 Integer 和 Small Integer 数据类型。 SetCountVariable 仅限 Count 注意:变量的聚合类型。确定变量可以执行的计算类型。
? 如果要使用映射变量确定一组值中的最大值,请将聚合设为 Max。 ? 如果要使用映射变量确定一组值中的最小值,请将聚合设为 Min。 ? 您不能在“等级”(Rank)或“聚合”(Aggregator)转换中使用变量函数。
2.3 参数文件级参数与变量 2.3.1 参数文件形式