Transformer All Functions
Transformer All Functions
topic=/com.ibm.swg.im.iis.ds.parjob.dev.doc/topics/c_deeref_Transformer_Stage.ht
mlDate and time functions
You can use the date and time functions to perform various operations on dates and times
in the Transformer stage.
Functions that specify dates, times, or timestamps in the arguments use strings with
specific formats:
For a date, the format is %yyyy-%mm-%dd
For a time, the format is %hh:%nn:%ss. If extended to include microseconds, the
format is %hh:%nn:%ss.x where x gives the number of decimal places seconds is
given to.
For a timestamp, the format is %yyyy-%mm-%dd %hh:%nn:%ss. If extended to
include microseconds, the format is %yyyy-%mm-%dd %hh:%nn:%ss.x, where x
gives the number of decimal places seconds is given to.
Functions that have days of week in the argument take a string specifying the day of the
week. The day is specified as a three-letter abbreviation, or the full name. For example,
the strings "thu" and "thursday" are both valid.
The following functions are in the Date & Time category of the expression editor. Square
brackets indicate an argument is optional. The examples show the function as it appears
in a Derivation field in the Transformer stage.
CurrentDate
Returns the date that the job runs in date format.
Input: -
Output: date
Examples. Use this function to add a new column containing the date to
the data output by the Transformer stage:
CurrentDate()
CurrentTime
Returns the time at which the job runs in time format.
Input: -
Output: time
Examples. Use this function to add a new column containing the time to
the data output by the Transformer stage:
CurrentTime()
CurrentTimeMS
Returns the time at which the job runs in time format, the time includes
microseconds.
Input: -
Output: time
Examples. Use this function to add a new column containing the time to
the data output by the Transformer stage. You must set the Extended field
in the column metadata to Microseconds to contain the full time:
CurrentTimeMS()
CurrentTimestamp
Returns a timestamp giving the date and time that the job runs in timestamp
format.
Input: -
Output: timestamp
Examples. Use this function to add a new column containing the
timestamp to the data output by the Transformer stage:
CurrentTimestamp()
CurrentTimestampMS
Returns a timestamp giving the date and time that the job runs in timestamp
format, the time part includes microseconds.
Input: -
Output: timestamp
Examples. Use this function to add a new column containing the
timestamp to the data output by the Transformer stage. You must set the
Extended field in the column metadata to Microseconds to contain the full
timestamp.
CurrentTimestampMS()
DateFromDaysSince
Returns a date by adding an integer to a baseline date. The integer can be negative
to return a date that is earlier than the base date.
Input: number (int32), [baseline_date (date)]
Output: date
Examples. If mylink.myintcol contains the integer 18250, and
mylink.mydatecol contains the date 1958–08–18, then the three following
functions are equivalent, and return the date 2008–08–05:
DateFromDaysSince(18250,"1958-08-18")
DateFromDaysSince(mylink.myintcol,"1958-08-18")
DateFromDaysSince(mylink.myintcol,mylink.mydatecol)
DateFromDaysSince(-1,"1958-08-18")
DateFromDaysSince(mylink.mynegintcol,"1958-08-18")
DateFromDaysSince(mylink.mynegintcol,mylink.mydatecol)
DateFromComponents
Returns a date from the given years, months, and day of month given as three
separate values.
Input: years (int32), months (int32), dayofmonth (int32)
Output: date
Examples. If mylink.yearcol contains the value 2010, mylink.monthcol
contains the value 12, and mylink.dayofmonthcol contains the value 2,
then the two following functions are equivalent, and return the date 2010–
12–02.
DateFromComponents(2010, 12, 2)
DateFromComponents(mylink.yearcol, mylink.monthcol,
mylink.dayofmonthcol)
DateFromJulianDay
Returns a date from the given julian day.
Input: julianday (uint32)
Output: date
Examples. If mylink.myjulcol contains the value 2454614, then the two
following functions are equivalent, and return the date 2008–05–27.
DateFromJulianDay(2454614)
DateFromJulianDay(mylink.myjulcol)
DateOffsetByComponents
Returns the given date, with offsets applied from the given year offset, month
offset, and day of month offset given as three separate values. The offset values
can each be positive, zero, or negative.
Input: basedate (date), year_offset (int32), month_offset (int32),
dayofmonth_offset (int32)
Output: date
Examples. If mylink.basedate contains 2011-08-18 and mylink.yearos
contains the value 2, mylink.monthos contains the value 0, and
mylink.dayofmonthosol contains the value 0, then the two following
functions are equivalent, and return the date 2013–08–18.
DateOffsetByComponents("2011-08-18", 2011, 8, 18)
DateOffsetByComponents(mylink.basedate, mylink.yearos,
mylink.monthos,
mylink.dayofmonthos)
If mylink.basedate contains 2011-08-18 and mylink.yearos contains the
value -2, mylink.monthos contains the value 0, and
mylink.dayofmonthosol contains the value 0, then the two following
functions are equivalent, and return the date 2009–08–18.
DateOffsetByComponents("2011-08-18", 2011, 8, 18)
DateOffsetByComponents(mylink.basedate, mylink.yearos,
mylink.monthos,
mylink.dayofmonthos)
DaysSinceFromDate
Returns the number of days from source date to the given date.
Input: source_date, given_date
Output: days_since (int32)
Examples. If mylink.mysourcedate contains the date 1958–08–18 and
mylink.mygivendate contains the date 2008–08–18, then the two
following functions are equivalent, and return the integer value 18263.
DaysSinceFromDate(mylink.mysourcedate, mylink.mygivendate)
DaysSinceFromDate("1958-08-18","2008-08-18")
DaysInMonth
Returns the number of days in the month in the given basedate.
Input: basedate (date)
Output: daysinmonth (int32)
Examples. If mylink.mysourcedate contains the date 1958–08–18, then
the two following functions are equivalent, and return the integer value 31.
DaysInMonth(mylink.mysourcedate)
DaysInMonth("1958-08-18")
DaysInYear
Returns the number of days in the year in the given basedate.
Input: basedate (date)
Output: daysinyearh (int32)
Examples. If mylink.mysourcedate contains the date 2012–08–18, then
the two following functions are equivalent, and return the integer value
366.
DaysInYear(mylink.mysourcedate)
DaysInYear("2012-08-18")
DaysInYear(mylink.mysourcedate)
DaysInYear("2011-08-18")
DateOffsetByDays
Returns the given date, offset by the given number of days. The offset value can
be positive, zero, or negative.
Input: basedate (date), dayoffset (int32)
Output: date
Examples. If mylink.basedate contains 2011-08-18 and mylink.dayoffset
contains the value 2, then the two following functions are equivalent, and
return the date 2011–08–20.
DateOffsetByDays("2011-08-18", 2)
DateOffsetByDays(mylink.basedate, mylink.dayoffset)
If mylink.basedate contains 2011-08-18 and mylink.dayoffset contains the
value -31, then the two following functions are equivalent, and return the
date 2011–07–18.
DateOffsetByDays("2011-08-18", -31)
DateOffsetByDays(mylink.basedate, mylink.dayoffset)
HoursFromTime
Returns the hour portion of a time.
Input: time
Output: hours (int8)
Examples. If mylink.mytime contains the time 22:30:00, then the
following two functions are equivalent, and return the integer value 22.
HoursFromTime(mylink.mytime)
HoursFromTime("22:30:00")
JulianDayFromDate
Returns a julian day from the given date.
Input: date
Output: julianday (int32)
Examples. If mylink.mydate contains the date 2008–05–27, then the two
following functions are equivalent, and return the value 2454614.
JulianDayFromDate("2008–05–27")
JulianDayFromDate(mylink.mydate)
MicroSecondsFromTime
Returns the microsecond portion of a time.
Input: time
Output: microseconds (int32)
Examples. If mylink.mytime contains the time 22:30:00.32, then the
following function returns the value 320000:
MicroSecondsFromTime(mylink.mytime)
MidnightSecondsFromTime
Returns the number of seconds from midnight to the given time.
Input: time
Output: seconds (int8)
Examples. If mylink.mytime contains the time 00:30:52, then the two
following functions are equivalent, and return the value 1852:
MidnightSecondsFromTime("00:30:52")
MidnightSecondsFromTime(mylink.mytime)
MinutesFromTime
Returns the minute portion of a time.
Input: time
Output: minutes (int8)
Examples. If mylink.mytime contains the time 22:30:52, then the two
following functions are equivalent, and return the value 30:
MinutesFromTime("22:30:52")
MinutesFromTime(mylink.mytime)
MonthDayFromDate
Returns the day of the month from the given date.
Input: date
Output: day (int8)
Examples. If mylink.mydate contains the date 2008-08-18, then the two
following functions are equivalent, and return the value 18:
MonthDayFromDate("2008-08-18")
MonthDayFromDate(mylink.mydate)
MonthFromDate
Returns the month number from the given date.
Input: date
Output: month_number (int8)
Examples. If mylink.mydate contains the date 2008-08-18, then the two
following functions are equivalent, and return the value 8:
MonthFromDate("2008-08-18")
MonthDayDate(mylink.mydate)
NextWeekdayFromDate
Returns the date of the specified day of the week soonest after the source date.
The day of the week is specified as the full name, for example, thursday, or a
three-letter abbreviation, for example, thu.
Input: sourcedate (date), day_of_week (string)
Output: date
Examples. If mylink.mysourcedate contains the date 2008-08-18, then the
two following functions are equivalent, and return the value 2008–08–21:
NextWeekdayFromDate("2008-08-18", "thursday")
NextWeekdayFromDate(mylink.mysourcedate, "thu")
NthWeekdayFromDate
Returns the date of the specified day of the week offset by the specified number
of weeks from the source date. The day of the week is specified as the full name,
for example, thursday, or a three-letter abbreviation, for example, thu. The offset
can be positive, negative, or zero.
Input: basedate (date), day_of_week (string), week_offset (int32)
Output: date
Examples. If mylink.mydate contains the date 2009-08-18, then the two
following functions are equivalent, and return the value 2009–08–27:
NthWeekdayFromDate("2009-08-18", "thursday", 1)
NthWeekdayFromDate(mylink.mydate, "thu", 1)
TimeDate()
TimeFromComponents
Returns a time from the given hours, minutes, seconds and microseconds given as
four separate values.
Input: hours (int32), minutes (int32), seconds (int32), microseconds
(int32)
Output: time
Examples. If mylink.hourcol contains the value 10, mylink.mincol
contains the value 12, mylink.seccol contains the value 2, and
mylink.mseccol contains 0, then the two following functions are
equivalent, and return the time 10:12:02.0:
TimeFromComponents(10, 12, 2, 0)
TimeFromComponents(mylink.hourcol, mylink.mincol,
mylink.seccol, mylink.mseccol)
TimeFromMidnightSeconds
Returns the time given the number of seconds since midnight.
Input: seconds (dfloat)
Output: time
Examples. If mylink.mymidnightseconds contains the value 240, then the
two following functions are equivalent, and return the value 00:04:00:
TimeFromMidnightSeconds("240")
TimeFromMidnightSeconds(mylink.mymidnightseconds)
TimeOffsetByComponents
Returns the given time, with offsets applied from the given hour offset, minute
offset, and second offset, each given as separate values. The seconds offset can
include partial seconds.
Input: basetime (time), hour_offset (int32), minute_offset (int32),
second_offset (dfloat)
Output: time
Examples. If mylink.basetime contains 14:05:29 and mylink.houros
contains the value 2, mylink.minos contains the value 0, mylink.secos
contains the value 20, then the two following functions are equivalent, and
return the time 16:05:49.
TimeOffsetByComponents("14:05:29", 2, 0, 20)
TimeOffsetByComponents(mylink.basetime, mylink.houros,
mylink.minos, mylink.secos)
TimeOffsetBySeconds
Returns the given time, with offsets applied from the given seconds offset. The
seconds offset can include partial seconds.
Input: basetime (time), second_offset (dfloat)
Output: time
Examples. If mylink.basetime contains 14:05:29.30 and mylink.secos
contains the value 2.5, then the two following functions are equivalent,
and return the time 14:05:31.80:
TimeOffsetByComponents("14:05:29.30", 2.5)
TimeOffsetByComponents(mylink.basetime, mylink.secos)
TimestampFromDateTime
Returns a timestamp form the given date and time.
Input: date time
Output: timestamp
Examples. If mylink.mydate contains the date 2008–08–18 and
mylink.mytime contains the time 22:30:52, then the two following
functions are equivalent, and return the timestamp 2008–08–18 22:30:52:
TimestampFromDateTime("2008–08–18","22:30:52")
TimestampFromDateTime(mylink.mydate,mylink.mytime)
TimestampFromSecondsSince
Returns a timestamp derived from the number of seconds from the base
timestamp.
Input: seconds (dfloat), [base_timestamp]
Output: timestamp
Examples. If mylink.myseconds contains the value 2563 and
mylink.timestamp_base contains the timestamp 2008–08–18 22:30:52,
then the two following functions are equivalent, and return the timestamp
2008–08–18 23:13:35:
TimestampFromSecondsSince("2563","2008–08–18 22:30:52")
TimestampFromSecondsSince(mylink.myseconds,mylink.timestamp_
base)
TimestampFromTimet
Returns a timestamp from the given UNIX time_t value.
Input: timet (int32)
Output: timestamp
Examples. If mylink.mytimet contains the value 1234567890, then the
two following functions are equivalent, and return the timestamp 2009–
02–13 23:31:30:
TimestampFromTimet("1234567890")
TimestampFromTimet(mylink.mytimet)
TimestampOffsetByComponents
Returns the given timestamp, with offsets applied from the given year offset,
month offset, day offset, hour offset, minute offset, and second offset, each given
as separate values. The seconds offset can include partial seconds.
Input: basetimestamp (timestamp), year_offset (int32), month_offset
(int32), dayofmonth_offset (int32), hour_offset (int32), minute_offset
(int32), second_offset (dfloat)
Output: timestamp
Examples. If mylink.basetimestamp contains 2009-08-18 14:05:29 and
mylink.yearos contains 0, mylink.monthos contains the value 2,
mylink.dayos contains the value -4, mylink.houros contains the value 2,
mylink.minos contains the value 0, mylink.secos contains the value 20,
then the two following functions are equivalent, and return the timestamp
2009-10-14 16:05:49.
TimestampOffsetByComponents("2009-08-18 14:05:29", 0, 2, -4,
2, 0, 20)
TimestampOffsetByComponents(mylink.basetimestamp,
mylink.houros,
mylink.minos, mylink.secos)
TimestampOffsetBySeconds
Returns the given timestamp, with offsets applied from the given seconds offset.
The seconds offset can include partial seconds.
Input: basetimestamp (timestamp), second_offset (dfloat)
Output: timestamp
Examples. If mylink.basetimestamp contains 2009-08-18 14:05:29 and
mylink.secos contains the value 32760, then the two following functions
are equivalent, and return the timestamp 2009-08-18 23:11:29:
TimeOffsetBySeconds("2009-08-18 14:05:29", 32760)
TimeOffsetBySeconds
(mylink.basetimestamp, mylink.secos)
TimetFromTimestamp
Returns a UNIX time_t value from the given timestamp.
Input: timestamp
Output: timet (int32)
Examples. If mylink.mytimestamp contains the value 2009–02–13
23:31:30, then the two following functions are equivalent, and return the
value 1234567890:
TimestampFromTimet("2009–02–13 23:31:30")
TimestampFromTimet(mylink.mytimestamp)
WeekdayFromDate
Returns the day number of the week from the given date. Origin_day optionally
specifies the day regarded as the first in the week and is Sunday by default.
Input: date, [origin_day]
Output: day (int8)
Examples. If mylink.mydate contains the date 2008-08-18, then the two
following functions are equivalent, and return the value 1:
WeekdayFromDate("2008-08-18")
WeekdayFromDate(mylink.mydate)
If mylink.mydate contains the date 2008-08-18, and mylink.origin_day
contains saturday, then the two following functions are equivalent, and
return the value 2:
WeekdayFromDate("2008-08-18","saturday")
WeekdayFromDate(mylink.mydate,mylink.origin_day)
YeardayFromDate
Returns the day number in the year from the given date.
Input: date
Output: day (int16)
Examples. If mylink.mydate contains the date 2008-08-18, then the two
following functions are equivalent, and return the value 231:
YeardayFromDate("2008-08-18")
YeardayFromDate(mylink.mydate)
YearFromDate
Returns the year from the given date.
Input: date
Output: year (int16)
Examples. If mylink.mydate contains the date 2008-08-18, then the two
following functions are equivalent, and return the value 2008:
YearFromDate("2008-08-18")
YearFromDate(mylink.mydate)
YearweekFromDate
Returns the week number in the year from the given date
Input: date
Output: week (int16)
Examples. If mylink.mydate contains the date 2008-08-18, then the two
following functions are equivalent, and return the value 33:
YearweekFromDate("2008-08-18")
YearweekFromDate(mylink.mydate)
Logical functions
The logical functions perform bit operations.
The logical functions are in the Logical category of the expression editor. Square brackets
indicate an argument is optional. The examples show the function as it appears in a
Derivation field in the Transformer stage.
BitAnd
Returns the bitwise AND of the two integer arguments.
Input: number1 (uint64), number2 (uint64)
Output: number (uint64)
Examples. If mylink.mynumber1 contains the number 352 and
mylink.mynumber2 contains the number 400, then the following two
functions are equivalent, and return the value 256:
BitAnd(352,400)
BitAnd(mylink.mynumber1,mylink.mynumber2)
BitCompress
Returns the integer made from the string argument, which contains a binary
representation of "1"s and "0"s.
Input: string
Output: number (uint64)
Examples. If mylink.mynumber1 contains the string "0101100000", then
the following two functions are equivalent, and return the number 352.
BitExpand("0101100000")
BitExpand(mylink.mynumber)
BitExpand
Returns a string containing the binary representation in "1"s and "0"s of the given
integer.
Input: number (uint64)
Output: string
Examples. If mylink.mynumber1 contains the number 352, then the
following two functions are equivalent, and return the string
"0101100000".
BitExpand(352)
BitExpand(mylink.mynumber)
BitOr
Returns the bitwise OR of the two integer arguments.
Input: number1 (uint64), number2 (uint64)
Output: number (uint64)
Examples. If mylink.mynumber1 contains the number 352 and
mylink.mynumber2 contains the number 400, then the following two
functions are equivalent, and return the value 496:
BitOr(352,400)
BitOr(mylink.mynumber1,mylink.mynumber2)
BitXOr
Returns the bitwise Exclusive OR of the two integer arguments.
Input: number1 (uint64), number2 (uint64)
Output: number (uint64)
Examples. If mylink.mynumber1 contains the number 352 and
mylink.mynumber2 contains the number 400, then the following two
functions are equivalent, and return the value 240:
BitXOr(352,400)
BitXOr(mylink.mynumber1,mylink.mynumber2)
Not
Returns the complement of the logical value of an expression. If the value of
expression is true, the Not function returns a value of false (0). If the value of
expression is false, the NOT function returns a value of true (1). A numeric
expression that evaluates to 0 is a logical value of false. A numeric expression
that evaluates to anything else, other than the null value, is a logical true. An
empty string is logically false. All other string expressions, including strings that
include an empty string, spaces, or the number 0 and spaces, are logically true.
Input: expression
Output: complement (int8)
Examples. If mylink.myexpression contains the expression 5–5, then the
following two functions are equivalent, and return the value 1:
Not(5-5)
Not(mylink.myexpression)
Not(5+5)
Not(mylink.myexpression)
SetBit
Returns an integer with specific bits set to a specific state, where origfield is the
input value to perform the action on, bitlist is a string containing a list of comma-
separated bit numbers to set the state of, and bitstate is either 1 or 0, indicating
which state to set those bits.
Input: origfield (uint64),bitlist (string),bitstate (uint8)
Output: number (uint64)
Examples. If mylink.origfield contains the number 352, mylink.bitlist
contains the list "2,4,8", and mylink.bitstate contains the value 1, then the
following two functions are equivalent, and return the value 494:
SetBit(356,"2,4,8",1)
SetBit(mylink.origfield,mylink.bitlist,mylink.bitstate)
Mathematical functions
The mathematical functions perform mathematical operations.
The mathematical functions are in the Mathematical category of the expression editor.
Square brackets indicate an argument is optional. The examples show the function as it
appears in a Derivation field in the Transformer stage.
Abs
Returns the absolute value of any numeric expression. The absolute value of an
expression is its unsigned magnitude.
Input: numeric_expression (int32)
Output: result (dfloat)
Examples. If mylink.number1 contains the number 12 and
mylink.number2 contains the number 34, then the following two functions
are equivalent, and return the number 22:
Abs(12-34)
Abs(mylink.mynumber1-mylink.mynumber2)
Rand()
Random
Returns a random number between 0 and 232-1
Input: -
Output: result (uint32)
Examples. Use this function to add a column to your output containing a
random number:
Random()
Sin
Calculates the trigonometric sine of an expression. The expression must be a
numeric value. The expression must produce a numeric value which is the angle
in radians.
Input: radians (dfloat)
Output: result (dfloat)
Examples. If mylink.number contains the number 0.785398, then the
following two functions are equivalent, and return the value 0.7071:
Sin(0.785398)
Sin(mylink.mynumber)
Sinh
Calculates the hyperbolic sine of an expression. The expression must be a
numeric value.
Input: number (dfloat)
Output: result (dfloat)
Examples: If mylink.number contains the number 2, then the following
two functions are equivalent, and return the value 3.62686:
Sinh(2)
Sinh(mylink.mynumber)
Sqrt
Calculates the square root of a number.
Input: number (dfloat)
Output: result (dfloat)
Examples: If mylink.number contains the number 450, then the following
two functions are equivalent, and return the value 21.2132:
Sqrt(450)
Sqrt(mylink.mynumber)
Tan
Calculates the trigonometric tangent of an expression. The expression must
produce a numeric value which is the angle in radians.
Input: radians (dfloat)
Output: result (dfloat)
Examples. If mylink.number contains the number 0.7853981, then the
following two functions are equivalent, and return the value 0.7071:
Tan(0.7853981)
Tan(mylink.mynumber)
Tanh
Calculates the hyperbolic tangent of an expression. The expression must be a
numeric value.
Input: number (dfloat)
Output: result (dfloat)
Examples: If mylink.number contains the number 2, then the following
two functions are equivalent, and return the value 0.964028:
Tanh(2)
Tanh(mylink.mynumber)
Null handling functions
You can use the null handling functions in the Transformer stage to handle nulls in
derivations.
If you use input columns in an output column expression, a null value in any input
column causes a null to be written to the output column. You can, however, use the null
handling functions to handle nulls explicitly.
The following functions are available in the Null Handling category. Square brackets
indicate an argument is optional. The examples show the function as it appears in a
Derivation field in the Transformer stage.
IsNotNull
Returns true when an expression does not evaluate to the null value.
Input: any
Output: true/false (int8)
Examples. If the Derivation field for an output column contained the
following code, then the Transformer stage checks if the input column
named mylink.mycolumn contains a null value. If the input column does
not contain a null, the output column contains the value of the input
column. If the input column does contain a null, then the output column
contains the string NULL.
NullToEmpty(mylink.mycolumn)
NullToZero
Returns zero if the input column is null, otherwise returns the input column value.
Input: input column
Output: input column value or zero
Examples. If the Derivation field for an output column contained the
following code, then the Transformer stage checks if the input column
named mylink.mycolumn contains a null value. If the input column
contains a null, the output column contains zero. If the input column does
contain a null, then the output column contains the value from the input
column.
NullToZeroy(mylink.mycolumn)
NullToValue
Returns the specified value if the input column is null, otherwise returns the input
column value.
Input: input column, value
Output: input column value or value
Examples. If the Derivation field for an output column contained the
following code, then the Transformer stage checks if the input column
named mylink.mycolumn contains a null value. If the input column
contains a null, the output column contains 42. If the input column does
contain a null, then the output column contains the value from the input
column.
NullToValue(mylink.mycolumn,42)
SetNull
Assigns a null value to the target column.
Input: -
Output: -
Examples. If the Derivation field for an output column contained the
following code, then the Transformer stage sets the output column to null:
setnull()
Number functions
Use the number functions to extract the mantissa from a decimal or floating point
number. The Number category in the expression editor also contains the type casting
functions, which you can use to cast numbers as double, float, or integer data types.
Square brackets indicate an argument is optional. The examples show the function as it
appears in a Derivation field in the Transformer stage.
The type casting functions help you when you perform mathematical calculations using
numeric fields. For example, if you have a calculation using an output column of type
float derived from an input column of type integer in a Parallel Transformer stage the
result is derived as an integer regardless of its float type. If you want a non-integral result
for a calculation using integral operands, you can use the type casting functions to cast
the integer operands into non-integral operands.
AsDouble
Treat the given number as a double.
Input: number
Output: number (double)
Examples. In the following expression, the input column mynumber
contains an integer, but the function outputs a double. If
mylink.mynumber contains the value 56, then the following two functions
are equivalent, and return the value 1.29629629629629619E+01:
AsDouble(56/4.32)
AsDouble(mylink.mynumber/4.32)
AsFloat
Treat the given number as a float.
Input: number
Output: number (float)
Examples. In the following expression, the input column mynumber
contains an integer, but the function outputs a float. If mylink.mynumber
contains the value 56, then the following two functions are equivalent, and
return the value 1.29629629629629619E+01:
AsFloat(56/4.32)
AsFloat(mylink.mynumber/4.32)
AsInteger
Treat the given number as an integer.
Input: number
Output: number (integer)
Examples. In the following expression, the input column mynumber
contains a double, but the function is output an integer. If
mylink.mynumber contains the value 56, then the following two functions
are equivalent, and return the value 12:
AsInteger(56/4.32)
AsInteger(mylink.mynumber/4.32)
MantissaFromDecimal
Returns the mantissa from the given decimal.
Input: number (decimal)
Output: result (dfloat)
Examples. If mylink.number contains the number 243.7675, then the
following two functions are equivalent, and return the value 7675:
MantissaFromDecimal(243.7675)
MantissaFromDecimal(mylink.mynumber)
MantissaFromDFloat
Returns the mantissa from the given dfloat.
Input: number (dfloat)
Output: result (dfloat)
Examples. If mylink.number contains the number
1.234412000000000010E +4, then the following function returns the
value 1:
MantissaFromDFloat(mylink.mynumber)
Raw functions
Use the Raw function to obtain the length of the data in a column containing raw data.
The function is in the Raw category. The examples show the function as it appears in a
Derivation field in the Transformer stage.
RawLength
Returns the length of a raw string.
Input: input string (raw)
Output: result (int32)
Examples. If mylink.rawdata contains the raw data from a bitmap, then
the following function returns the size of the bitmap in bytes:
RawLength(mylink.rawdata)
String functions
Use the string functions to manipulate strings.
The following functions are in the String category of the expression editor. Square
brackets indicate an argument is optional. The examples show the function as it appears
in a Derivation field in the Transformer stage.
AlNum
Checks whether the given string contains only alphanumeric characters.
Input: string (string)
Output: true/false (int8)
Examples. If mylink.mystring1 contains the string "OED_75_9*E", then
the following function would return the value -1 (false).
AlNum(mylink.mystring1)
If mylink.mystring2 contains the string "12 red roses", then the following
function would return the value 1 (true).
AlNum(mylink.mystring2)
Alpha
Checks whether the given string contains only alphabetic characters.
Input: string (string)
Output: true/false (int8)
Examples. If mylink.mystring1 contains the string "12 red roses", then the
following function would return the value -1(false).
Alpha(mylink.mystring1)
Alpha(mylink.mystring2)
CompactWhiteSpace
Return the string after reducing all consecutive white space to a single space.
Input: string (string)
Output: result (string)
Examples. If mylink.mystring contains the string "too many spaces",
then the following function returns the string "too many spaces":
CompactWhiteSpace(mylink.mystring)
Compare
Compares two strings for sorting. The comparison can be left-justified (the
default) or right-justified. A right-justified comparison compares numeric
substrings within the specified strings as numbers. The numeric strings must
occur at the same character position in each string. For example, a right-justified
comparison of the strings AB100 and AB99 indicates that AB100 is greater than
AB99 since 100 is greater than 99. A right-justified comparison of the strings
AC99 and AB100 indicates that AC99 is greater since C is greater than B.
Input: string1 (string), string2 (string), [justification (L or R)]
Output: result (int8), can be -1 for string1 is less than string2, 0 for both
strings are the same, 1 for string1 is greater than string2.
Examples. If mylink.mystring1 contains the string "AB99" and
mylink.mystring2 contains the string "AB100", then the following
function returns the result 1.
Compare(mylink.mystring1,mylink.mystring2,L)
contains the string "AB100", then the following function returns the result
-1.
Compare(mylink.mystring1,mylink.mystring2,R)
CompareNoCase
Compares two strings for sorting, ignoring their case.
Input: string1 (string), string2 (string)
Output: result (int8), can be -1 for string1 is less than string2, 0 for both
strings are the same, 1 for string1 is greater than string2.
Examples. If mylink.mystring1 contains the string "Chocolate Cake" and
mylink.mystring2 contains the string "chocolate cake", then the following
function returns the result 1.
ComparNoCase(mylink.mystring1,mylink.mystring2)
CompareNum
Compares the first n characters of two strings.
Input: string1 (string), string2 (string), length (int16)
Output: result (int8), can be -1 for string1 is less than string2, 0 for both
strings are the same, 1 for string1 is greater than string2.
Examples. If mylink.mystring1 contains the string "Chocolate" and
mylink.mystring2 contains the string "Choccy Treat", then the following
function returns the result 1.
ComparNum(mylink.mystring1,mylink.mystring2,4)
CompareNumNoCase
Compares the first n characters of two strings, ignoring their case.
Input: string1 (string), string2 (string), length (int16)
Output: result (int8), can be -1 for string1 is less than string2, 0 for both
strings are the same, 1 for string1 is greater than string2.
Examples. If mylink.mystring1 contains the string "chocolate" and
mylink.mystring2 contains the string "Choccy Treat", then the following
function returns the result 1.
ComparNumNoCase(mylink.mystring1,mylink.mystring2,4)
Convert
Converts characters in the string designated in expression. Converts the characters
specified in fromlist to the characters specified in tolist.
Input: fromlist (string), tolist (string), expression (string)
Output: result (string)
Examples. If mylink.mystring1 contains the string "NOW IS THE
TIME", then the following function returns the string "NOW YS XHE
XYME".
Convert("TI","XY",mylink.mystring1)
Count
Counts the number of times a substring occurs in a string.
Input: string (string), substring (string)
Output: result (int32)
Examples. If mylink.mystring1 contains the string "chocolate drops,
chocolate ice cream, chocolate bars", then the following function returns
3.
Count(mylink.mystring1,"choc")
Dcount
Counts the number of delimited fields in a string.
Input: string (string), delimiter (string)
Output: result (int32)
Examples. If mylink.mystring1 contains the string "chocolate drops,
chocolate ice cream, chocolate bars", then the following function returns
3.
Dcount(mylink.mystring1,",")
DownCase
Changes all uppercase letters in a string to lowercase.
Input: string (string)
Output: result (string)
Examples. If mylink.mystring1 contains the string "CaMel cAsE", then
the following function returns the string "camel case".
DownCase(mylink.mystring1)
DQuote
Encloses a string in double quotation marks.
Input: string (string)
Output: result (string)
Examples. If mylink.mystring1 contains the string needs quotes, then the
following function returns the string "needs quotes".
DQuote(mylink.mystring1)
Field
Returns one or more substrings located between specified delimiters in a string.
The argument occurrence specifies which occurrence of the delimiter is to be
used as a terminator. The argument number optionally specifies how many
substrings to return.
Input: string (string), delimiter (string), occurrence (int32), [number
(int32)]
Output: result (string)
Examples. If mylink.mystring1 contains the string "chocolate drops,
chocolate ice cream, chocolate bars, chocolate dippers", then the following
function returns the string "chocolate ice cream".
Field(mylink.mystring1,",",2)
Field(mylink.mystring1,",",2,2)
Index
Finds the starting character position of a substring. The argument occurrence
specifies which occurrence of the substring is to be located.
Input: string (string) substring (string) occurrence (int32)
Output: result (int32)
Examples. If mylink.mystring1 contains the string "chocolate drops,
chocolate ice cream, chocolate bars, chocolate dippers", then the following
function returns the value 18.
Index(mylink.mystring1,"chocolate",2)
Left
Returns the leftmost n characters of a string.
Input: string (string) number (int32)
Output: result (string)
Examples. If mylink.mystring1 contains the string "chocolate drops,
chocolate ice cream, chocolate bars, chocolate dippers", then the following
function returns the string "chocolate".
Left(mylink.mystring1,9)
Len
Returns the length of a string in characters.
Input: string (string)
Output: result (int32)
Examples. If mylink.mystring1 contains the string "chocolate", then the
following function returns the value 9.
Len(mylink.mystring1)
Num
Returns 1 if string can be converted to a number, or 0 otherwise.
Input: string (string)
Output: result (int32)
Examples. If mylink.mystring1 contains the string "22", then the
following function returns the value 1.
Num(mylink.mystring1)
Num(mylink.mystring1)
PadString
Return the string padded with the specified number of pad characters.
Input: string (string) padstring (string) padlength (int32)
Output: result (string)
Examples. IIf mylink.mystring1 contains the string "AB175", then the
following function returns the string "AB17500000".
PadString(mylink.mystring1,"0",5)
Right
Returns the rightmost n characters of a string.
Input: string (string) number (int32)
Output: result (string)
Examples. If mylink.mystring1 contains the string "chocolate drops,
chocolate ice cream, chocolate bars, chocolate dippers", then the following
function returns the string "dippers".
Right(mylink.mystring1,7)
Soundex
Returns a code which identifies a set of words that are (roughly) phonetically
alike based on the standard, open algorithm for SOUNDEX evaluation.
Input: string (string)
Output: result (string)
Examples. If mylink.mystring1 contains the string "Griffin" then the
following function returns the code "G615".
Soundex(mylink.mystring1)
Soundex(mylink.mystring1)
Space
Returns a string of n space characters.
Input: length (int32)
Output: result (string)
Examples. If mylink.mylength contains the number 100, then the
following function returns a string that contains 100 space characters.
Space(mylink.mylength)
SQuote
Encloses a string in single quotation marks.
Input: string (string)
Output: result (string)
Examples. If mylink.mystring1 contains the string needs quotes, then the
following function returns the string 'needs quotes'.
SQuote(mylink.mystring1)
Str
Repeats a string the specified number of time.
Input: string (string)
Output: result (string)
Examples. If mylink.mystring1 contains the string needs "choc", then the
following function returns the string "chocchocchocchocchoc".
Str(mylink.mystring1,5)
StripWhiteSpace
Returns the string after removing all whitespace characters from it.
Input: string (string) repeats (int32)
Output: result (string)
Examples. If mylink.mystring contains the string "too many spaces",
then the following function returns the string "toomanyspaces":
StripWhiteSpace(mylink.mystring)
Trim
Remove all leading and trailing spaces and tabs plus reduce internal occurrences
to one. The argument stripchar optionally specifies a character other than a space
or a tab. The argument options optionally specifies the type of trim operation to
be performed and contains one or more of the following values:
Trim(mylink.mystring)
Trim(mylink.mystring,".")
If mylink.mystring contains the string "Remove..all..dots....", then the
Trim(mylink.mystring,".","A")
Trim(mylink.mystring,".","T")
TrimB
Removes all trailing spaces and tabs from a string.
Input: string (string)
Output: result (string)
Examples. If mylink.mystring contains the string "too many trailing
spaces ", then the following function returns the string "too many
trailing spaces":
TrimB(mylink.mystring)
TrimF
Removes all leading spaces and tabs from a string.
Input: string (string)
Output: result (string)
Examples. If mylink.mystring contains the string " too many leading
spaces", then the following function returns the string "too many leading
spaces":
TrimF(mylink.mystring)
TrimLeadingTrailing
Removes all leading and trailing spaces and tabs from a string.
Input: string (string)
Output: result (string)
Examples. If mylink.mystring contains the string " too many spaces ",
then the following function returns the string "too many spaces":
TrimLeadingTrailing(mylink.mystring)
UpCase
Changes all lowercase letters in a string to uppercase.
Input: string (string)
Output: result (string)
Examples. If mylink.mystring1 contains the string "CaMel cAsE", then
the following function returns the string "CAMEL CASE".
UpCase(mylink.mystring1)
Vector function
Use the vector function to access an element in a vector column.
The function is in the Vector category of the expression editor. The examples show the
function as it appears in a Derivation field in the Transformer stage.
ElementAt
Accesses an element of a vector. The vector index starts at 0. The function can be
used as part of, or the whole of an expression.
Input: input_column (column name) index (int)
Output: element of vector
Examples. The following example outputs the second element of the
vector in the column mylink.myvector.
ElementAt(mylink.myvector, 2)
The following example outputs the second element of the vector in the
column mylink.myvector and adds one it.
ElementAt(mylink.myvector, 2) + 1
The following functions are in the Type Conversion category of the expression editor.
Square brackets indicate an argument is optional. The default date format is %yyyy-
%mm-%dd.
The examples show the function as it appears in a Derivation field in the Transformer
stage.
Char
Generates an ASCII character from its numeric code value. You can optionally
specify the allow8bits argument to convert 8-bit ASCII values.
Input: code (number), [allow8bits]
Output: result (char)
Examples. The following example outputs the ASCII code 65 as the
character A.
Char(65)
DateToString
Returns the string representation of the given date. The format of the string can
optionally be specified.
Input: date (date), [format (string)]
Output: result (string)
Examples. The following example outputs the date contained in the
column mylink.mydate to a string. If mylink.mydate contains the date 18th
August, 2009, then the output string is "2009-08-18":
DateToString(mylink.mydate)
DateToString(mylink.mydate, "%dd:%mm:%yyyy")
DateToDecimal
Returns the given date as a packed decimal value. If your target decimal specifies
a scale, part of the date appears after the decimal point. You can optionally
specify a format string that specifies how the date is stored in the decimal number.
The default format string is "%yyyy%mm%dd", so, for example, the date 2009-
08-25 is stored as the decimal number 20090825. Format strings can only specify
a format that contains numbers. For example, you cannot specify a format string
such as "%yyyy-%mm-%dd", because the hyphen character (-) cannot be stored
in a packed decimal value. The following tokens are valid for conversions to or
from decimal values:
DateToDecimal (mylink.basedate)
DecimalToDate
Returns the given packed decimal as a date. Both the sign and the scale of the
decimal number are ignored when it is converted to a date. You can optionally
specify a format string that specifies how the date is stored in the decimal number.
The default format string is "%yyyy%mm%dd", so, for example, the date 2009-
08-25 is stored as the decimal number 20090825. Format strings can only specify
a format that contains numbers. For example, you cannot specify a format string
such as "%yyyy-%mm-%dd", because the hyphen character (-) cannot be stored
in a packed decimal value. The following tokens are valid for conversions to or
from decimal values:
DecimalToDate (mylink.basedate)
DecimalToDecimal
Returns the given decimal in decimal representation with precision and scale
specified in the target column definition. The argument rtype optionally specifies
a rounding type, and is set to one of the following values:
ceil. Round the source field toward positive infinity. For example, 1.4 -> 2, -1.6
-> -1.
floor. Round the source field toward negative infinity. For example, 1.6 -> 1, -1.4
-> -2.
round_inf. Round or truncate the source field toward the nearest representable
value, breaking ties by rounding positive values toward positive infinity and
negative values toward negative infinity. For example, 1.4 -> 1, 1.5 -> 2, -1.4 ->
-1, -1.5 -> -2.
trunc_zero. Discard any fractional digits to the right of the rightmost fractional
digit supported in the destination, regardless of sign. For example, if the
destination is an integer, all fractional digits are truncated. If the destination is
another decimal with a smaller scale, round or truncate to the scale size of the
destination decimal. For example, 1.6 -> 1, -1.6 -> -1.
DecimalToDecimal(mylink.mydec,"ceil")
DecimalToDecimal(mylink.mydec,"floor")
DecimalToDecimal(mylink.mydec,"trunc_zero")
DecimalToDecimal(mylink.mydec,"round_inf")
In all these examples, the target decimal has a length of 10 and a scale of
2.
DecimalToDFloat
Returns the given decimal in dfloat representation. The argument "fix_zero"
optionally specifies that all zero decimal values are regarded as valid (by default,
decimal numbers comprising all zeros are treated as invalid).
Input: decimal (decimal) [,"fix_zero"]
Output: result (dfloat)
Examples. If the column mylink.mydec contains the decimal number
00000004.00 the following function returns the dfloat number
4.00000000000000000E+00.
DecimalToDFloat(mylink.mydec,"fix_zero")
DecimalToDFloat(mylink.mydec,"fix_zero")
DecimalToDFloat(mylink.mydec,"fix_zero")
DecimalToDFloat(mylink.mydec)
DecimalToDFloat(mylink.mydec)
DecimalToString
Returns the given decimal as a string. The argument "fix_zero" optionally
specifies that all zero decimal values are regarded as valid (by default, decimal
numbers comprising all zeros are treated as invalid). This covers the case where
the sign bits of the packed decimal representation are all 0 as well as all the
content digits. This cast is not considered valid unless "fix_zero" is true.
Input: decimal (decimal) [,"fix_zero"]
Output: result (string)
Examples. If the column mylink.mydec contains the decimal number
00000004.00, the following function returns the string "4":
DecimalToString(mylink.mydec,"suppress_zero")
DecimalToString(mylink.mydec,"fix_zero")
If the column mylink.mydec contains the decimal number 00012344.00,
the following function returns the string "12344".
DecimalToString(mylink.mydec,"suppress_zero")
DecimalToString(mylink.mydec,"fix_zero")
DecimalToString(mylink.mydec,"fix_zero")
DecimalToString(mylink.mydec,"suppress_zero")
DecimalToString(mylink.mydec)
DecimalToString(mylink.mydec)
DecimalToTime
Returns the given packed decimal as a time. You can optionally specify a format
string that specifies how the time is stored in the decimal number. The default
format string is " %hh%nn%ss", so, for example, the time 14:03:22 is stored as
the decimal number 140322. Format strings can only specify a format that
contains numbers. For example, you cannot specify a format string such as "%hh:
%nn:%ss", because the colon character (:) cannot be stored in a packed decimal
value. The following tokens are valid for conversions to or from decimal values:
If your specified format includes microseconds (for example, %ss.4), then the
position of the decimal point is inferred in the decimal value. The position of the
decimal point does not have to coincide with the specified scale of the decimal
(for example, scale = 4).
DecimalToTime(mylink.mytimedec)
DecimalToTime(mylink.mytimedec, "%ss%nn%hh")
DecimalToTimestamp
Returns the given packed decimal as a timestamp. You can optionally specify a
format string that specifies how the timestamp is stored in the decimal number.
The default format string is " %yyyy%mm%dd%hh%nn%ss", so, for example,
the timestamp 2009-08-25 14:03:22 is stored as the decimal number
20090825140322. Format strings can only specify a format that contains numbers.
For example, you cannot specify a format string such as "%yyyy/%mm/%dd%hh:
%nn:%ss", because the slash character (/) and the colon character (:) cannot be
stored in a packed decimal value. The following tokens are valid for conversions
to or from decimal values:
%ss.N (two-digit seconds, plus the number of fractional digits allowed. The
number of fractional digits is from one to six inclusive).
If your specified format includes microseconds (for example, %ss.4), then the
position of the decimal point is inferred in the decimal value. The position of the
decimal point does not have to coincide with the specified scale of the decimal
(for example, scale = 4).
DecimalToTimestamp(mylink.mytimestampdec)
DecimalToTimestamp(mylink.mytimestampdec, "%hh%nn%ss%yy%mm
%dd")
DFloatToDecimal
Returns the given dfloat in decimal representation. The argument rtype optionally
specifies a rounding type, and is set to one of the following values:
ceil. Round the source field toward positive infinity. For example, 1.4 -> 2, -1.6
-> -1.
floor. Round the source field toward negative infinity. For example, 1.6 -> 1, -1.4
-> -2.
round_inf. Round or truncate the source field toward the nearest representable
value, breaking ties by rounding positive values toward positive infinity and
negative values toward negative infinity. For example, 1.4 -> 1, 1.5 -> 2, -1.4 ->
-1, -1.5 -> -2.
trunc_zero. Discard any fractional digits to the right of the rightmost fractional
digit supported in the destination, regardless of sign. For example, if the
destination is an integer, all fractional digits are truncated. If the destination is
another decimal with a smaller scale, round or truncate to the scale size of the
destination decimal. For example, 1.6 -> 1, -1.6 -> -1.
Input: number (dfloat), [rtype (string)]
Output: result (decimal)
Examples. If the column mylink.myfloat contains the dfloat number
2.534, the following function returns the decimal number 00000002.54.
DFloatToDecimal(mylink.mydec,"ceil")
DFloatToDecimal(mylink.mydec,"floor")
DFloatToDecimal(mylink.mydec,"trunc_zero")
DFloatToDecimal(mylink.mydec,"round_inf")
DfloatToStringNoExp
Returns the given dfloat in its string representation with no exponent, using the
specified scale.
Input: number (dfloat), scale (string)
Output: result (string)
Examples. If the column mylink.myfloat contains the dfloat number
2.534, then the following function returns the string 00000002.50:
DfloatToStringNoExp(mylink.myfloat,2)
IsValid
Returns whether the given string is valid for the given type. Valid types are
"date", "decimal", "dfloat", "sfloat", "int8", "uint8", "int16", "uint16", "int32",
"uint32", "int64", "uint64", "raw", "string", "time", "timestamp", "ustring". For
data types of date, time, and timestamp, you can optionally specify a format
string. The format string describes the format that your input data uses when it
differs from the default formats for date, time, or timestamp. The default format
for date is “%yyyy-%mm-%dd”. The default format for time is "%hh:%mm:%ss".
The default format for timestamp is “%yyyy-%mm-%dd %hh:%mm:%ss".
Input: type (string), teststring (string) [, format (string)]
Output: result (int8)
Examples. If the column mylink.mystring contains the string "1", then the
following function returns the value 1.
IsValid("int8",mylink.mystring)
If the column mylink.mystring contains the string "380096.06", then the
following function returns the value 0.
IsValid("int8",mylink.mystring)
IsValidDate
Returns whether the given value is valid for the type date.
Input: testdate (date)
Output: result (int8)
Examples. If the column mylink.mydate contains the date 2011-09-13,
then the following function returns the value 1.
IsValidDate(mylink.mydate)
IsValidDate(StringTodate (mylink.mydate))
IsValidDecimal
Returns whether the given value is valid for the type decimal. If the allzerosflag is
set to 0, then an all-zeroes representation is not valid. The allzerosflag is set to
zero by default.
Input: testvalue (decimal) [, allzerosflag (uint8)]
Output: result (int8)
Examples. If the column mylink.mynum contains the value 310007.65,
then the following function returns the value 1.
IsValidDecimal(mylink.mynum)
IsValidDecimal(StringToDecimal (mylink.mynum))
IsValidTime
Returns whether the given time is valid for the type time.
Input: testtime (time)
Output: result (int8)
Examples. If the column mylink.mytime contains the time 23:09:22, then
the following function returns the value 1:
IsValidTime(mylink.mytime)
IsValidTime(StringToTime (mylink.mytime))
IsValidTimestamp
Returns whether the given timestamp is valid for the type timestamp.
Input: testtimestamp (timestamp)
Output: result (int8)
Examples. If the column mylink.mytimestamp contains the time 2011-09-
13 23:09:22, then the following function returns the value 1:
IsValidTimestamp(mylink.mytimestamp)
IsValidTimestamp(StringToTimestamp (mylink.mytimestamp))
RawNumAt
Returns the integer value at the specified index value in the specified raw field.
The index starts at 0.
Input: rawfield (raw), index (int32)
Output: result (int32)
Examples. If the column mylink.myraw contains a raw value derived
from the string "hello", then the following function returns the integer
0x68 (the ASCII code for the character h):
RawNumAt(mylink.myraw, 0)
If the column mylink.myraw contains a raw value derived from the string
"hello", then the following function returns 0 because the specified index
is out of range:
RawNumAt(mylink.myraw, 12)
RawToString
Returns the given raw value as a string representation. You must ensure that the
raw input value contains a sequence of bytes that are valid as characters in the
target character set in which the output string is used. For example, the raw value
{ 0xE0 0x41 0x42 } is not a valid sequence of UTF-8 characters, since the lead
byte, 0xE0, is supposed to be followed by a byte in the range [0x80..0xBF]. If a
raw value { xE0 x41 x42 } is passed to the RawToString function, there could be
an error if the output string is then accessed as if it were encoded in UTF-8.
Input: rawfield (raw)
Output: result (string)
Examples. If the column mylink.myraw contains the value { 0x31 0x31
0x30 0x35 0x32 0x32 0x30 0x39 }, then the following function returns the
string "11052209".
RawNumAt(mylink.myraw)
Seq
Generates a numeric code value from an ASCII character. You can optionally
specify the allow8bits argument to convert 8-bit ASCII values.
Input: Seq (char)
Output: result (number)
Examples. The following example outputs the character A as the ASCII
code 65.
Seq("A")
SeqAt
Returns the numeric code point value of the character at the specified position in
the given string. The index starts at 0. If the specified index is out of range, the
function returns 0.
Input: basestring (string), index (int32)
Output: result (int32)
Examples. If the column mylink.mystring contains the string "horse", then
the following function returns the value 0x6F (that is, the ASCII value of
the character o).
SeqAt(mylink.mystring, 1)
StringToDate
Returns a date from the given string in the given format. You do not have to
specify a format string if your string contains a date in the default format yyyy-
mm-dd.
Input: string (string) [,format (string)]
Output: result (date)
Examples: If the column mylink.mystring contains the string ″1958–08–
18″, then the following function returns the date 1958–08–18.
StringToDate(mylink.mystring)
StringToDate(mylink.mystring,"%dd:%mm:%yyyy")
StringToDecimal
Returns the given string as a decimal representation. The argument rtype
optionally specifies a rounding type, and is set to one of the following values:
ceil. Round the source field toward positive infinity. For example, 1.4 -> 2, -1.6
-> -1.
floor. Round the source field toward negative infinity. For example, 1.6 -> 1, -1.4
-> -2.
round_inf. Round or truncate the source field toward the nearest representable
value, breaking ties by rounding positive values toward positive infinity and
negative values toward negative infinity. For example, 1.4 -> 1, 1.5 -> 2, -1.4 ->
-1, -1.5 -> -2.
trunc_zero. Discard any fractional digits to the right of the rightmost fractional
digit supported in the destination, regardless of sign. For example, if the
destination is an integer, all fractional digits are truncated. If the destination is
another decimal with a smaller scale, round or truncate to the scale size of the
destination decimal. For example, 1.6 -> 1, -1.6 -> -1.
StringToDecimal(mylink.mystring)
StringToDecimal(mylink.mystring,"ceil")
StringToRaw
Returns a string in raw representation.
Input: string (string)
Output: result (raw)
Examples. If the column mylink.mystring contains the string "hello", and
the target column is defined as being of type Binary then the following
function returns the value { 0x68 0x65 0x6C 0x6C 0x6F }.
StringToRaw(mylink.mystring)
StringToTime
Returns a time representation of the given string.
Input: string (string), [format (string)]
Output: result (time)
Examples: If the column mylink.mystring contains the string "20:06:58",
then the function returns a time of 20:06:58.
StringToTime(mylink.mystring)
If the column mylink.mystring contains the string "20: 6:58", then the
function returns a time of 20:06:58.
StringToTime(mylink.mystring,"%(h,s):$(n,s):$(s,s)")
StringToTimestamp
Returns a time representation of the given string.
Input: string (string) [format (string)]
Output: result (time)
Examples: If the column mylink.mystring contains the string "1958–08–
08 20:06:58", then the function returns the timestamp 1958–08–08
20:06:58.
StringToTimestamp(mylink.mystring)
If the column mylink.mystring contains the string "8/ 8/1958 20: 6:58",
then the function returns the timestamp 1958–08–08 20:06:58.
StringToTimestamp(mylink.mystring, "%(d,s)/%(m,s)/%yyyy%
(h,s):$(n,s):$(s,s)")
StringToUstring
Returns a ustring from the given string, optionally using the specified map
(otherwise uses project default).
Input: string (string), [mapname(string)]
Output: result (ustring)
Examples: If the column mylink.mystring contains the string "11052009",
then the following function returns the ustring "11052009"
StringToUstring(mylink.mystring)
TimestampToDate
Returns a date from the given timestamp.
Input: timestamp (timestamp)
Output: result (date)
Examples: If the column mylink.mytimestamp contains the timestamp
1958–08–18 20:06:58, then the following function returns the date 1958–
08–18:
TimestampToDate(mylink.mytimestamp)
TimestampToDecimal
Returns the given timestamp as a packed decimal. You can optionally specify a
format string that specifies how the timestamp is stored in the decimal number.
The default format string is " %yyyy%mm%dd%hh%nn%ss", so, for example,
the timestamp 2009-08-25 14:03:22 is stored as the decimal number
20090825140322. Format strings can only specify a format that contains numbers.
For example, you cannot specify a format string such as "%yyyy/%mm/%dd%hh:
%nn:%ss", because the slash character (/) and the colon character (:) cannot be
stored in a packed decimal value. The following tokens are valid for conversions
to or from decimal values:
%ss.N (two-digit seconds, plus the number of fractional digits allowed. The
number of fractional digits is from one to six inclusive).
If your specified format includes microseconds (for example, %ss.4), then the
position of the decimal point is inferred in the decimal value. The position of the
decimal point does not have to coincide with the specified scale of the decimal
(for example scale = 4).
TimestampToDecimal(mylink.mytimestamp)
TimestampToDecimal(mylink.mytimestamp, "%hh%nn%ss%yy%mm%dd")
TimestampToString
Returns a string from the given timestamp.
Input: timestamp (timestamp) [format (string)]
Output: result (string)
Examples: If the column mylink.mytimestamp contains the timestamp
1958–08–1820:06:58, then the function returns the string "1958–08–
1820:06:58".
TimestampToString(mylink.mytimestamp)
TimestampToTime(mylink.mytimestamp)
TimeToString
Returns a string from the given time.
Input: timestamp (timestamp) [format (string)]
Output: result (time)
Examples: If the column mylink.mytime contains the time 20:06:58, then
the following function returns the string "20:06:58":
TimeToString(mylink.mytime)
TimeToString(mylink.mytime, "%ss:$nn:$hh")
TimeToDecimal
Returns the given time as a packed decimal. You can optionally specify a format
string that specifies how the time is stored in the decimal number. The default
format string is " %hh%nn%ss", so, for example, the time 14:03:22 is stored as
the decimal number 140322. Format strings can only specify a format that
contains numbers. For example, you cannot specify a format string such as "%hh:
%nn:%ss", because the colon character (:) cannot be stored in a packed decimal
value. The following tokens are valid for conversions to or from decimal values:
%ss.N (two-digit seconds, plus the number of fractional digits allowed. The
number of fractional digits is from one to six inclusive).
If your specified format includes microseconds (for example, %ss.4), then the
position of the decimal point is inferred in the decimal value. The position of the
decimal point does not have to coincide with the specified scale of the decimal
(for example scale = 4).
Input: time (time) [, format (string)]
Output: result (decimal)
Examples: If the column mylink.mytime contains the time 20:06:58, then
the following function returns the decimal value 200658:
TimeToDecimal(mylink.mytime)
TimeToDecimal(mylink.mytime, "%ss%nn%hh")
UstringToString
Returns a string from the given ustring, optionally using the specified map
(otherwise uses project default).
Input: string (ustring) [, mapname(string)]
Output: result (string)
Examples: If the column mylink.myustring contains the ustring
"11052009", then the following function returns the string "11052009":
UstringToString(mylink.myustring)
Utility functions
The utility functions have a variety of purposes.
The following functions are available in the Utility category (square brackets indicate an
argument is optional):
GetEnvironment
Returns the value of the given environment variable.
Input: environment variable (string)
Output: result (string)
Examples. If you queried the value of the environment variable name
APT_RDBMS_COMMIT_ROWS then the following derivation might
return the value "2048".
GetEnvironment("APT_RDBMS_COMMIT_ROWS")
GetSavedInputRecord
This function is used to implement the aggregating of data on the input link of a
Transformer stage. You call the GetsSavedInputRecord function to a retrieve a
copy of an input row that you have previously saved to a cache area. The function
retrieves the next input row from the cache (in the order in which they were saved
to the cache) and makes it the current input row. The retrieved row overrides what
was the current input row, and so any derivation using an input column value will
use the value of that column in the input row retrieved from the cache, not what
was previously the current input row. You must call GetSavedInputRecord in a
loop variable derivation, you cannot call it from anywhere else. For example, you
cannot call GetSavedInputRecord in the Loop Condition expression. You can call
GetSavedInputRecord, multiple times and retrieve the next cached row on each
call. Use the SaveInputRecord function to store rows to the cache.
GetSavedInputRecord returns the cache index number of the record retrieved
from that cache.
Input: -
Output: cache_index_number
Examples. The following example is the derivation of a loop variable
named SavedRecordIndex in a Transformer stage:
SavedRecordIndex: GetSavedInputRecord()
NextSKChain
This function is used in the Slowly Changing Dimension stage as the derivation
for a column with the SKChain purpose code. The function is not used in the
Transformer stage. NextSKChain returns the value of the surrogate key column
for the next row in the chain, or the value that has been specified to use for the
last record in the chain.
Input: last_chain_value (int64)
Output: surrogate_key_value (int64)
Examples. If you specify the following function in the derivation field for
a SKChain column in an SCD stage, the output column contains the value
of the surrogate key of the next record in the chain, or the value 180858 if
this is the last row in the chain.
NextSKChain(180858)
NextSurrogateKey
Returns the value of the next surrogate key. You must have previously set up your
surrogate key source, and defined details on the Surrogate Key tab of the Stage
page of the Transformer properties window.
Input: -
Output: surrogate_key_value (int64)
Example. The derivation field of your surrogate key column contains the
following function:
NextSurrogateKey()
PrevSKChain
This function is used in the Slowly Changing Dimension stage as the derivation
for a column with the SKChain purpose code. The function is not used in the
Transformer stage. PrevSKChain Returns the value of the surrogate key column
for the previous record in the chain, or the value that has been specified to use for
the first record in the chain.
Input: first_chain_value (int64)
Output: surrogate_key_value (int64)
Examples. If you specify the following function in the derivation field for
a SKChain column in an SCD stage, the output column contains the value
of the surrogate key of the previous record in the chain, or the value
121060 if this is the last row in the chain.
PrevSKChain(121060)
SaveInputRecord
This function is used to implement the aggregating of data on the input link of a
Transformer stage. You call the SaveInputRecord function to save a copy of the
current input row to a cache area. The function returns the count of records in the
cache, starting from 1. You can call SaveInputRecord from within the derivation
of a stage variable in the Transformer stage. You can call SaveInputRecord
multiple times for the same input row. The first call adds the input row to the
cache and each subsequent call adds a duplicate of that same input row into the
cache. So, for example, if SaveInputRecord is called three times for one input
record, then the cache will contain three rows, each identical to the original input
row. Use the GetSavedInputRecord function to retrieve the rows that you have
stored.
Input: -
Output: cache_record_count (int64)
Examples. The following example is the derivation of a stage variable
named NumSavedRecords in a Transformer stage:
NumSavedRecords: SaveInputRecord()