DataStage常用函数大全
一、类型转换函数
类型转换函数用于更改参数的类型。
以下函数位于表达式编辑器的“类型转换”类别中。方括号表示参数是可选的。缺省日期格式为 %yyyy-%mm-%dd。
以下示例按照 Transformer 阶段的“派生”字段中所示来显示这些函数。
1.Char
根据其数字代码值生成一个 ASCII 字符。您可以指定 allow8bits 参数来转换 8 位 ASCII 值(可选)。
∙输入:code (number),[allow8bits]
∙输出:result (char)
∙示例。以下示例将 ASCII 码 65 输出为字符 A。
Char(65)
2.DateToString
返回给定日期的字符串表示。可以指定字符串的格式(可选)。
∙输入:date (date),[format (string)]
∙输出:result (string)
∙示例。以下示例会将 date 列中包含的日期输出为字符串。如果 date 包含日期 2009 年 8 月 18 日,那么输出字符串为“2009-08-18”:
date)
以下示例会将 date 列中包含的日期输出为 dd:mm:yyyy 格式的字符串。如果 date 包含日期 2009 年 8 月 18 日,那么输出字符串为“18:08:2009”:
date, "%dd:%mm:%yyyy")
3.DateToDecimal
将给定的日期返回为压缩十进制值。如果您的目标十进制数指定了小数位,那么部分日期会在小数点后显示。您可以指定格式字符串来指定如何以十进制数形式存储日期(可选)。缺省格式字符串为“%yyyy%mm%dd”,因此,日期 2009-08-25 将存储为十进制数 20090825。格式字符串只能指定包含数字的格式。例如,不能指定诸如“%yyyy-%mm-%dd”之类的格式字符串,这是因为压缩十进制值中不能存储连字符 (-)。以下标记对于与十进制值之间的转换有效:
%yyyy(四位数表示的年份)
%yy(两位数表示的年份)
%NNNNyy(截断的两位数年份)
%mm(两位数表示的月份)
%dd(两位数表示的一月中的第几天)
%ddd(三位数表示的一年中的第几天)
字面值数字 0 到 9 都有效。
∙输入:basedate (date) [, format (string)]
∙trunc函数怎么切除小数点后几位输出:converted_date (decimal)
∙示例。如果 mylink.basedate 列包含日期 2012-08-18,那么以下函数会将日期存储为十进制数 18082012:
DateToDecimal (mylink.basedate, "%dd%mm%yyyy")
如果 mylink.basedate 列包含日期 2012-08-18,并且目标列的长度为 10,小数位为 2,那么以下函数会将日期存储为十进制数 201208.18:
DateToDecimal (mylink.basedate)
4.DecimalToDate
将给定的压缩十进制数返回为日期。在将十进制数转换为日期时,会忽略其符号和小数位。您可以指定格式字符串来指定如何以十进制数形式存储日期(可选)。缺省格式字符串为“%yyyy%mm%dd”,因此,日期 2009-08-25 将存储为十进制数 20090825。格式字符串只能指定包含数字的格式。例如,不能指定诸如“%yyyy-%mm-%dd”之类的格式字符串,这是因为压缩十进制值中不能存储连字符 (-)。以下标记对于与十进制值之间的转换有效:
%yyyy(四位数表示的年份)
%yy(两位数表示的年份)
%NNNNyy(截断的两位数年份)
%mm(两位数表示的月份)
%dd(两位数表示的一月中的第几天)
%ddd(三位数表示的一年中的第几天)
字面值数字 0 到 9 都有效。
∙输入:basedec (decimal) [, format (string)]
∙输出:date
∙示例。如果 decdata 列包含值 18082012,那么以下函数将返回日期 2012-08-18:
DecimalToDate (mylink.basedate, "%dd%mm%yyyy")
如果 decdata 列包含值 -201208.18,那么以下函数将返回日期 2012-08-18:
DecimalToDate (mylink.basedate)
5.DecimalToDecimal
以具有目标列定义中指定精度和小数位的十进制表示形式返回给定的十进制数。参数 rtype 指定取整类型,并设置为以下某个值(可选):
ceil。向正无穷方向对源字段取整。例如,1.4 -> 2,-1.6 -> -1。
floor。向负无穷方向对源字段取整。例如,1.6 -> 1,-1.4 -> -2。
round_inf。通过向正无穷方向对正数值取整并向负无穷方向对负数值取整,向最接近的可表示值对源字段进行取整或截断。例如,1.4 -> 1,1.5 -> 2,-1.4 -> -1,-1.5 -> -2。
trunc_zero。不论符号如何,废弃位于目标数据支持的最右侧小数位右侧的任何小数位。例如,如果目标数据是整数,那么截断所有小数位。如果目标数据是另一个具有更少小数位的小数,那么按照目标小数的小数位数进行取整或截断。例如,1.6 -> 1,-1.6 -> -1。
∙输入:decimal (decimal) [,rtype (string)]
∙输出:result (decimal)
∙示例。如果 dec 列包含十进制数 2.5345,那么以下函数将返回十进制数 00000002.54。
dec,"ceil")
以下函数将返回十进制数 00000002.53。
dec,"floor")
以下函数将返回十进制数 00000002.53。
dec,"trunc_zero")
以下函数将返回十进制数 00000002.53。
dec,"round_inf")
在所有这些示例中,目标十进制的长度为 10,小数位为 2。
6.DecimalToDFloat
以 dfloat 表示形式返回给定的十进制数。参数“fix_zero”指定所有零十进制值均视为有效(缺省情况下,全部由零组成的十进制数将视为无效)(可选)。
∙输入:decimal (decimal) [,"fix_zero"]
∙输出:result (dfloat)
∙示例。如果 dec 列包含十进制数 00000004.00,那么以下函数将返回 dfloat 数 4.00000000000000000E+00。
dec,"fix_zero")
如果 dec 列包含十进制数 00012344.00,那么以下函数将返回 dfloat 数 1.23440000000000000E+04。
dec,"fix_zero")
如果 dec 列包含十进制数 00012344.120,那么以下函数将返回 dfloat 数 1.23441200000000010E+04。
dec,"fix_zero")
如果 dec 列包含十进制数 00012344.120,那么以下函数将返回 dfloat 数 1.23441200000000010E+04。
dec)
如果 dec 列包含十进制数 00012344.000,那么以下函数将返回 dfloat 数 1.23440000000000000E+04。
dec)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论