Skip to main content

变量定义及应用

变量是仓鼠系统中一个很强大的功能,为用户数据操作提供极大的便利性。仓鼠变量可以分为如下几类:

  • 系统定义变量
  • 系统日期变量
  • 用户定义变量
  • 数据遍历变量
  • 任务临时变量
  • Excel专用变量
  • 邮件专用变量

上述各类变量类型都可以在任务设计时引用,并起到占位符的作用。运行时,仓鼠系统将根据实际运行环境进行替换成预期的内容。

系统定义变量

该变量是由仓鼠系统在运行前或运行中,为特定任务包创建的。如记录当前任务名称、运行状态或数据采集数量等。 调用方式如: <sys:SysParamName/> 其中 SysParamName 为系统参数名称,其它部分为系统变量的标识格式。

系统参数名 - SysParamName含义备注
SYS_TSK_TaskID_Name用于记录TaskID关联任务的名称TaskID需要替换成实际任务ID,从而与具体任务绑定。例:SYS_TSK_32F31BD1C6D942D2963BAE5D7EE62744_NAME
SYS_TSK_TaskID_QTY用于记录TaskID关联任务的数据量
SYS_TSK_TaskID_STS用于记录TaskID关联任务的当前状态
SYS_ExecCaseID当前执行任务包对应的执行实例ID
SYS_PackageID当前执行任务包ID
SYS_PackageName当前执行任务包名称
SYS_PackageNo当前执行任务包编号
SYS_PackageOwnerEmail当前执行任务包所有者邮箱
SYS_ReportName当前执行任务包关联报表名称
SYS_ScheduleOwnerEmail当前执行任务包调度所有者邮箱
SYS_ScheduleOwnerID当前执行任务包调度所有者ID
SYS_ScheduleOwnerName当前执行任务包调度所有者名称
SYS_TaskGroupName当前执行任务包分组名称
SYS_FailedTaskCategory最近失败的任务类型该组系统变量将在任务实施执行期间出错时,由系统自动创建并更新内容。可在系统预警的邮件或消息提醒中使用。
SYS_FailedTaskID最近失败的任务ID
SYS_FailedTaskNo最近失败的任务编号
SYS_FailedTaskName最近失败的任务名称
SYS_FailedMessage最近失败的错误提示信息
SYS_FailedDateTime最近失败的时间点

系统日期变量

系统日期变量主要内嵌与用户定义变量中,起到依据任务运行前指定的业务时间进行相应的计算,并自动赋值于隶属的用户定义变量中。 该变量由系统预定义名称,不可以修改。
基本格式如:<dt:ParamName(dataParam) ops delta,DateFormat/> 其中可以调整的内容有:

  • ParamName: 必选,为日期变量名称,可以参考如下表。
  • dataParam:可空,为了支持多个日期变量嵌套使用,如<dt:Var_CurrMonday(<dt:Var_CurrMonth()+9d/>),YYYYMMDD/>,其中Var_CurrMonth()可以作为Var_CurrMonday()变量的计算日期参数,如果没有,则将依据任务的业务运行时间为基准。
  • ops: 可空,提供+-操作符号,用于增加或减少相应的天数、月份等
  • delta:如果没有选择ops,则可空,和ops元素配合使用,提供具体的偏移量,如5y(5年),3m(3个月),2d(2天),2w(2周),4h(4小时)。
  • DateFormat:可空,用于特殊指定当前日期的格式,如:YYYY年,MM月,DD日,HH24小时,MI分钟,SS秒等。具体格式字符串依据系统数据库运行的数据库平台为标准。

system architecture

变量名称ParamName输出格式案例功能备注
Var_CurrDate2024-05-14获取当期日期,是任务运行时选择的业务日期为当前日期,如果没有特殊指定,则以当前日历日期为准
Var_CurrDateTime2024-05-14 17:46:12带时分秒的当前日期
Var_CurrFullTime2024-05-14 17:46:12.234带时分秒和毫秒的当前日期
Var_CurrSysDateTime2024-05-14 17:46:12.234获取当前操作系统时间,不受任何变量参数影响,常用于记录时间戳
Var_CurrMonday2024-05-13当前周的周一日期
Var_CurrMonth2024-05当前年月份
Var_LastDayWithinCurrMonth2024-05-31当前月最后一天
Var_FstDayOnNextMonth2024-06-01下一个月的第一天
Var_FstMonWithinCurrMonth2024-05-06本月内第一个周一
Var_LstMonWithinCurrMonth2024-05-27本月内最后一个周一
Var_LastFirIfCurrIsMonOrYesterday2024-05-13如果当前是周一,则返回上周五,否则返回昨天的日期
Var_Sub3dIfCurrIsMonOrSub2d2024-05-12如果当前是周一,则返回上周五(-3天),否则返回大前天(-2天)
Var_FstMonthWithinCurrQuarter2024-04-01获取当前月份所在季度的第一个年月

案例:(当前日期为2024-05-14 20:15:20)

表达式输出结果含义描述
<dt:Var_CurrDate()-2d/>2024-05-12获取当前日期前2天日期
<dt:Var_FstMonWithinCurrMonth(<dt:Var_CurrMonth()+1m/>)/>2024-06-03获取下一个月的第一个周一日期
<dt:Var_CurrMonday()-2d,YYYYMMDD/> - <dt:Var_CurrMonday()-1d,MMDD/>20240511 - 0512获取上个周日和周六的日期,并拼接成特定的格式

用户定义变量

由用户在界面中自定义的变量。调用方式如:<var:UserParamName|\{dataformat\}/>, 其中 UserParamName 为用户自定义变量的名称,format 为当前变量值的显示格式,如果不需要考虑显示格式,则后半段可以忽略,简写成:<var:UserParamName/>

数据遍历变量

用户在可循环遍历的任务中,引用任务查询中涉及到的数据库字段时用到的数据库字段变量。通过该变量,用户可以引用当前数据集中特定的字段内容。 调用方式如: <db:DbFieldName|\{dataformat\}/> , 其中 DbFieldName 为当前数据集中的字段名称,format 为当前变量值的显示格式,如果不需要考虑显示格式,则后半段可以忽略,简写成: <db:DbFieldName/>

任务临时变量

该变量只存在于特定任务的生命执行周期内,如钉钉消息,企业微信消息等任务。用于临时保存当前任务逐条数据记录执行时获取的运行(发送)结果。如在发送批量消息时,记录每个消息返回的消息ID或任务ID,该变量可以在当前 任务的遍历脚本 中被使用,可用于更新特定消息的发送状态,如回写消息ID: <tsk:returnId/>,变量的内容形式由当前任务决定。该变量在下一条记录发送后会被重写,任务结束后,变量会被清空.

记录当前子记录任务的执行返回结果,如消息ID等。
system architecture

Excel专用变量

[xls:currrow],[xls:nextrow], [FieldName]

邮件专用变量

变量场景备注
<sys:rowindex/>数据行自动实现行号
<db:FiledName|{0:D2}/>数据行用于显示当前数据行中特定的字段值,字段名:FieldName
<fun:sum(FieldName)|{0:C2}/>汇总行针对当前数据集合中每行FieldName字段值进行累加计算
<fun:count(FieldName)/>汇总行针对当前数据集合中,每行的FieldName字段值进行记数,非累加
<fun:max(FieldName)/>汇总行获取当前数据集合中,FieldName字段值最大的值
<fun:min(FieldName)/>汇总行获取当前数据集合中,FieldName字段值最小的值
<obj:SheetObject_SheetId/>内嵌图表图片用于在邮件中迁入对应报表中特定图表保存的图片,其中SheetId为对应报表页签Guid值