Documente Academic
Documente Profesional
Documente Cultură
Youcanusethedateandtimefunctionstoperformvariousoperationsondatesandtimes
intheTransformerstage.
Functionsthatspecifydates,times,ortimestampsintheargumentsusestringswith
specificformats:
Foradate,theformatis%
yyyy
%
mm
%
dd
Foratime,theformatis%
hh
:%
nn
:%
ss
.Ifextendedtoincludemicroseconds,theformat
is%
hh
:%
nn
:%
ss.x
where
x
givesthenumberofdecimalplacessecondsisgivento.
Foratimestamp,theformatis%
yyyy
%
mm
%
dd
%
hh
:%
nn
:%
ss
.Ifextendedtoinclude
microseconds,theformatis%
yyyy
%
mm
%
dd
%
hh
:%
nn
:%
ss.x
,where
x
givesthe
numberofdecimalplacessecondsisgivento.
Functionsthathavedaysofweekintheargumenttakeastringspecifyingthedayofthe
week.Thedayisspecifiedasathreeletterabbreviation,orthefullname.Forexample,
thestrings"thu"and"thursday"arebothvalid.
ThefollowingfunctionsareintheDate&Timecategoryoftheexpressioneditor.Square
bracketsindicateanargumentisoptional.Theexamplesshowthefunctionasitappears
inaDerivationfieldintheTransformerstage.
CurrentDate
Returnsthedatethatthejobrunsindateformat.
Input
:
Output
:date
Examples
.Usethisfunctiontoaddanewcolumncontainingthedateto
thedataoutputbytheTransformerstage:
CurrentDate()
CurrentTime
Returnsthetimeatwhichthejobrunsintimeformat.
Input
:
Output
:time
Examples
.Usethisfunctiontoaddanewcolumncontainingthetimeto
thedataoutputbytheTransformerstage:
CurrentTime()
CurrentTimeMS
Returnsthetimeatwhichthejobrunsintimeformat,thetimeincludes
microseconds.
Input
:
Output
:time
Examples
.Usethisfunctiontoaddanewcolumncontainingthetimeto
thedataoutputbytheTransformerstage.YoumustsettheExtendedfield
inthecolumnmetadatatoMicrosecondstocontainthefulltime:
CurrentTimeMS()
CurrentTimestamp
Returnsatimestampgivingthedateandtimethatthejobrunsintimestamp
format.
Input
:
Output
:timestamp
Examples
.Usethisfunctiontoaddanewcolumncontainingthe
timestamptothedataoutputbytheTransformerstage:
CurrentTimestamp()
CurrentTimestampMS
Returnsatimestampgivingthedateandtimethatthejobrunsintimestamp
format,thetimepartincludesmicroseconds.
Input
:
Output
:timestamp
Examples
.Usethisfunctiontoaddanewcolumncontainingthe
timestamptothedataoutputbytheTransformerstage.Youmustsetthe
ExtendedfieldinthecolumnmetadatatoMicrosecondstocontainthefull
timestamp.
CurrentTimestampMS()
DateFromDaysSince
Returnsadatebyaddinganintegertoabaselinedate.Theintegercanbenegative
toreturnadatethatisearlierthanthebasedate.
Input
:number(int32),[baseline_date(date)]
Output
:date
Examples
.Ifmylink.myintcolcontainstheinteger18250,and
mylink.mydatecolcontainsthedate19580818,thenthethreefollowing
functionsareequivalent,andreturnthedate20080805:
DateFromDaysSince(18250,"19580818")
DateFromDaysSince(mylink.myintcol,"19580818")
DateFromDaysSince(mylink.myintcol,mylink.mydatecol)
Ifmylink.mynegintcolcontainstheinteger1,andmylink.mydatecol
containsthedate19580818,thenthefollowingthreefunctionsare
equivalent,andreturnthedate19580817:
DateFromDaysSince(1,"19580818")
DateFromDaysSince(mylink.mynegintcol,"19580818")
DateFromDaysSince(mylink.mynegintcol,mylink.mydatecol)
DateFromComponents
Returnsadatefromthegivenyears,months,anddayofmonthgivenasthree
separatevalues.
Input
:years(int32),months(int32),dayofmonth(int32)
Output
:date
Examples
.Ifmylink.yearcolcontainsthevalue2010,mylink.monthcol
containsthevalue12,andmylink.dayofmonthcolcontainsthevalue2,
thenthetwofollowingfunctionsareequivalent,andreturnthedate
20101202.
DateFromComponents(2010,12,2)
DateFromComponents(mylink.yearcol,mylink.monthcol,
mylink.dayofmonthcol)
DateFromJulianDay
Returnsadatefromthegivenjulianday.
Input
:julianday(uint32)
Output
:date
Examples
.Ifmylink.myjulcolcontainsthevalue2454614,thenthetwo
followingfunctionsareequivalent,andreturnthedate20080527.
DateFromJulianDay(2454614)
DateFromJulianDay(mylink.myjulcol)
DateOffsetByComponents
Returnsthegivendate,withoffsetsappliedfromthegivenyearoffset,month
offset,anddayofmonthoffsetgivenasthreeseparatevalues.Theoffsetvalues
caneachbepositive,zero,ornegative.
Input
:basedate(date),year_offset(int32),month_offset(int32),
dayofmonth_offset(int32)
Output
:date
Examples
.Ifmylink.basedatecontains20110818andmylink.yearos
containsthevalue2,mylink.monthoscontainsthevalue0,and
mylink.dayofmonthosolcontainsthevalue0,thenthetwofollowing
functionsareequivalent,andreturnthedate20130818.
DateOffsetByComponents("20110818",2011,8,18)
DateOffsetByComponents(mylink.basedate,mylink.yearos,
mylink.monthos,
mylink.dayofmonthos)
Ifmylink.basedatecontains20110818andmylink.yearoscontainsthe
value2,mylink.monthoscontainsthevalue0,and
mylink.dayofmonthosolcontainsthevalue0,thenthetwofollowing
functionsareequivalent,andreturnthedate20090818.
DateOffsetByComponents("20110818",2011,8,18)
DateOffsetByComponents(mylink.basedate,mylink.yearos,
mylink.monthos,
mylink.dayofmonthos)
DaysSinceFromDate
Returnsthenumberofdaysfromsourcedatetothegivendate.
Input
:source_date,given_date
Output
:days_since(int32)
Examples
.Ifmylink.mysourcedatecontainsthedate19580818and
mylink.mygivendatecontainsthedate20080818,thenthetwo
followingfunctionsareequivalent,andreturntheintegervalue18263.
DaysSinceFromDate(mylink.mysourcedate,mylink.mygivendate)
DaysSinceFromDate("19580818","20080818")
DaysInMonth
Returnsthenumberofdaysinthemonthinthegivenbasedate.
Input
:basedate(date)
Output
:daysinmonth(int32)
Examples
.Ifmylink.mysourcedatecontainsthedate19580818,then
thetwofollowingfunctionsareequivalent,andreturntheintegervalue31.
DaysInMonth(mylink.mysourcedate)
DaysInMonth("19580818")
DaysInYear
Returnsthenumberofdaysintheyearinthegivenbasedate.
Input
:basedate(date)
Output
:daysinyearh(int32)
Examples
.Ifmylink.mysourcedatecontainsthedate20120818,then
thetwofollowingfunctionsareequivalent,andreturntheintegervalue
366.
DaysInYear(mylink.mysourcedate)
DaysInYear("20120818")
Ifmylink.mysourcedatecontainsthedate20110818,thenthetwo
followingfunctionsareequivalent,andreturntheintegervalue365.
DaysInYear(mylink.mysourcedate)
DaysInYear("20110818")
DateOffsetByDays
Returnsthegivendate,offsetbythegivennumberofdays.Theoffsetvaluecan
bepositive,zero,ornegative.
Input
:basedate(date),dayoffset(int32)
Output
:date
Examples
.Ifmylink.basedatecontains20110818andmylink.dayoffset
containsthevalue2,thenthetwofollowingfunctionsareequivalent,and
returnthedate20110820.
DateOffsetByDays("20110818",2)
DateOffsetByDays(mylink.basedate,mylink.dayoffset)
Ifmylink.basedatecontains20110818andmylink.dayoffsetcontainsthe
value31,thenthetwofollowingfunctionsareequivalent,andreturnthe
date20110718.
DateOffsetByDays("20110818",31)
DateOffsetByDays(mylink.basedate,mylink.dayoffset)
HoursFromTime
Returnsthehourportionofatime.
Input
:time
Output
:hours(int8)
Examples
.Ifmylink.mytimecontainsthetime22:30:00,thenthe
followingtwofunctionsareequivalent,andreturntheintegervalue22.
HoursFromTime(mylink.mytime)
HoursFromTime("22:30:00")
JulianDayFromDate
Returnsajuliandayfromthegivendate.
Input
:date
Output
:julianday(int32)
Examples
.Ifmylink.mydatecontainsthedate20080527,thenthetwo
followingfunctionsareequivalent,andreturnthevalue2454614.
JulianDayFromDate("20080527")
JulianDayFromDate(mylink.mydate)
MicroSecondsFromTime
Returnsthemicrosecondportionofatime.
Input
:time
Output
:microseconds(int32)
Examples
.Ifmylink.mytimecontainsthetime22:30:00.32,thenthe
followingfunctionreturnsthevalue320000:
MicroSecondsFromTime(mylink.mytime)
MidnightSecondsFromTime
Returnsthenumberofsecondsfrommidnighttothegiventime.
Input
:time
Output
:seconds(int8)
Examples
.Ifmylink.mytimecontainsthetime00:30:52,thenthetwo
followingfunctionsareequivalent,andreturnthevalue1852:
MidnightSecondsFromTime("00:30:52")
MidnightSecondsFromTime(mylink.mytime)
MinutesFromTime
Returnstheminuteportionofatime.
Input
:time
Output
:minutes(int8)
Examples
.Ifmylink.mytimecontainsthetime22:30:52,thenthetwo
followingfunctionsareequivalent,andreturnthevalue30:
MinutesFromTime("22:30:52")
MinutesFromTime(mylink.mytime)
MonthDayFromDate
Returnsthedayofthemonthfromthegivendate.
Input
:date
Output
:day(int8)
Examples
.Ifmylink.mydatecontainsthedate20080818,thenthetwo
followingfunctionsareequivalent,andreturnthevalue18:
MonthDayFromDate("20080818")
MonthDayFromDate(mylink.mydate)
MonthFromDate
Returnsthemonthnumberfromthegivendate.
Input
:date
Output
:month_number(int8)
Examples
.Ifmylink.mydatecontainsthedate20080818,thenthetwo
followingfunctionsareequivalent,andreturnthevalue8:
MonthFromDate("20080818")
MonthDayDate(mylink.mydate)
NextWeekdayFromDate
Returnsthedateofthespecifieddayoftheweeksoonestafterthesourcedate.
Thedayoftheweekisspecifiedasthefullname,forexample,thursday,ora
threeletterabbreviation,forexample,thu.
Input
:sourcedate(date),day_of_week(string)
Output
:date
Examples
.Ifmylink.mysourcedatecontainsthedate20080818,thenthe
twofollowingfunctionsareequivalent,andreturnthevalue20080821:
NextWeekdayFromDate("20080818","thursday")
NextWeekdayFromDate(mylink.mysourcedate,"thu")
NthWeekdayFromDate
Returnsthedateofthespecifieddayoftheweekoffsetbythespecifiednumber
ofweeksfromthesourcedate.Thedayoftheweekisspecifiedasthefullname,
forexample,thursday,orathreeletterabbreviation,forexample,thu.Theoffset
canbepositive,negative,orzero.
Input
:basedate(date),day_of_week(string),week_offset(int32)
Output
:date
Examples
.Ifmylink.mydatecontainsthedate20090818,thenthetwo
followingfunctionsareequivalent,andreturnthevalue20090827:
NthWeekdayFromDate("20090818","thursday",1)
NthWeekdayFromDate(mylink.mydate,"thu",1)
Ifmylink.mydatecontainsthedate20090818,thenthetwofollowing
functionsareequivalent,andreturnthevalue20090806:
NthWeekdayFromDate("20090818","thursday",2)
NthWeekdayFromDate(mylink.mydate,"thu",2)
PreviousWeekdayFromDate
Returnsthedateofthespecifieddayoftheweekmostrecentbeforethesource
date.Thedayoftheweekisspecifiedasthefullname,forexample,thursday,ora
threeletterabbreviation,forexample,thu.
Input
:sourcedate,day_of_week(string)
Output
:date
Examples
.Ifmylink.mysourcedatecontainsthedate20080818,thenthe
twofollowingfunctionsareequivalent,andreturnthevalue20080814:
PreviousWeekdayFromDate("20080818","thursday")
PreviousWeekdayFromDate(mylink.mysourcedate,"thu")
SecondsFromTime
Returnsthesecondsportionofatime.
Input
:time
Output
:seconds(dfloat)
Examples
.Ifmylink.mytimecontainsthetime22:30:52,thenthetwo
followingfunctionsareequivalent,andreturnthevalue52:
SecondsFromTime("22:30:52")
SecondsFromTime(mylink.mytime)
SecondsSinceFromTimestamp
Returnsthenumberofsecondsbetweentwotimestamps.
Input
:timestamp,timestamp_base
Output
:seconds(dfloat)
Examples
.Ifmylink.mytimestampcontainsthetimestamp20080818
22:30:52,andmylink.mytimestamp_basecontainsthetimestamp
2008081922:30:52,thenthetwofollowingfunctionsareequivalent,
andreturnthevalue86400:
SecondsSinceFromTimestamp("2008081822:30:52","20080819
22:30:52")
SecondsSinceFromTimestamp(mylink.mytimestamp,
mylink.mytimestamp_base)
TimeDate
Returnsthesystemtimeanddateasaformattedstring.
Input
:
Output
:systemtimeanddate(string)
Examples
.Ifthejobwasrunat4.21pmonJune20th2008,thenthe
followingfunctionreturnsthestring"16:21:4820Jun2008".
TimeDate()
TimeFromComponents
Returnsatimefromthegivenhours,minutes,secondsandmicrosecondsgivenas
fourseparatevalues.
Input
:hours(int32),minutes(int32),seconds(int32),microseconds
(int32)
Output
:time
Examples
.Ifmylink.hourcolcontainsthevalue10,mylink.mincol
containsthevalue12,mylink.seccolcontainsthevalue2,and
mylink.mseccolcontains0,thenthetwofollowingfunctionsare
equivalent,andreturnthetime10:12:02.0:
TimeFromComponents(10,12,2,0)
TimeFromComponents(mylink.hourcol,mylink.mincol,
mylink.seccol,mylink.mseccol)
TimeFromMidnightSeconds
Returnsthetimegiventhenumberofsecondssincemidnight.
Input
:seconds(dfloat)
Output
:time
Examples
.Ifmylink.mymidnightsecondscontainsthevalue240,thenthe
twofollowingfunctionsareequivalent,andreturnthevalue00:04:00:
TimeFromMidnightSeconds("240")
TimeFromMidnightSeconds(mylink.mymidnightseconds)
TimeOffsetByComponents
Returnsthegiventime,withoffsetsappliedfromthegivenhouroffset,minute
offset,andsecondoffset,eachgivenasseparatevalues.Thesecondsoffsetcan
includepartialseconds.
Input
:basetime(time),hour_offset(int32),minute_offset(int32),
second_offset(dfloat)
Output
:time
Examples
.Ifmylink.basetimecontains14:05:29andmylink.houros
containsthevalue2,mylink.minoscontainsthevalue0,mylink.secos
containsthevalue20,thenthetwofollowingfunctionsareequivalent,and
returnthetime16:05:49.
TimeOffsetByComponents("14:05:29",2,0,20)
TimeOffsetByComponents(mylink.basetime,mylink.houros,
mylink.minos,mylink.secos)
TimeOffsetBySeconds
Returnsthegiventime,withoffsetsappliedfromthegivensecondsoffset.The
secondsoffsetcanincludepartialseconds.
Input
:basetime(time),second_offset(dfloat)
Output
:time
Examples
.Ifmylink.basetimecontains14:05:29.30andmylink.secos
containsthevalue2.5,thenthetwofollowingfunctionsareequivalent,
andreturnthetime14:05:31.80:
TimeOffsetByComponents("14:05:29.30",2.5)
TimeOffsetByComponents(mylink.basetime,mylink.secos)
TimestampFromDateTime
Returnsatimestampformthegivendateandtime.
Input
:datetime
Output
:timestamp
Examples
.Ifmylink.mydatecontainsthedate20080818and
mylink.mytimecontainsthetime22:30:52,thenthetwofollowing
functionsareequivalent,andreturnthetimestamp2008081822:30:52:
TimestampFromDateTime("20080818","22:30:52")
TimestampFromDateTime(mylink.mydate,mylink.mytime)
TimestampFromSecondsSince
Returnsatimestampderivedfromthenumberofsecondsfromthebase
timestamp.
Input
:seconds(dfloat),[base_timestamp]
Output
:timestamp
Examples
.Ifmylink.mysecondscontainsthevalue2563and
mylink.timestamp_basecontainsthetimestamp2008081822:30:52,
thenthetwofollowingfunctionsareequivalent,andreturnthetimestamp
2008081823:13:35:
TimestampFromSecondsSince("2563","2008081822:30:52")
TimestampFromSecondsSince(mylink.myseconds,mylink.timestamp_b
ase)
TimestampFromTimet
ReturnsatimestampfromthegivenUNIXtime_tvalue.
Input
:timet(int32)
Output
:timestamp
Examples
.Ifmylink.mytimetcontainsthevalue1234567890,thenthe
twofollowingfunctionsareequivalent,andreturnthetimestamp
2009021323:31:30:
TimestampFromTimet("1234567890")
TimestampFromTimet(mylink.mytimet)
TimestampOffsetByComponents
Returnsthegiventimestamp,withoffsetsappliedfromthegivenyearoffset,
monthoffset,dayoffset,houroffset,minuteoffset,andsecondoffset,eachgiven
asseparatevalues.Thesecondsoffsetcanincludepartialseconds.
Input
:basetimestamp(timestamp),year_offset(int32),month_offset
(int32),dayofmonth_offset(int32),hour_offset(int32),minute_offset
(int32),second_offset(dfloat)
Output
:timestamp
Examples
.Ifmylink.basetimestampcontains2009081814:05:29and
mylink.yearoscontains0,mylink.monthoscontainsthevalue2,
mylink.dayoscontainsthevalue4,mylink.houroscontainsthevalue2,
mylink.minoscontainsthevalue0,mylink.secoscontainsthevalue20,
thenthetwofollowingfunctionsareequivalent,andreturnthetimestamp
2009101416:05:49.
TimestampOffsetByComponents("2009081814:05:29",0,2,4,
2,0,20)
TimestampOffsetByComponents(mylink.basetimestamp,
mylink.houros,
mylink.minos,mylink.secos)
TimestampOffsetBySeconds
Returnsthegiventimestamp,withoffsetsappliedfromthegivensecondsoffset.
Thesecondsoffsetcanincludepartialseconds.
Input
:basetimestamp(timestamp),second_offset(dfloat)
Output
:timestamp
Examples
.Ifmylink.basetimestampcontains2009081814:05:29and
mylink.secoscontainsthevalue32760,thenthetwofollowingfunctions
areequivalent,andreturnthetimestamp2009081823:11:29:
TimeOffsetBySeconds("2009081814:05:29",32760)
TimeOffsetBySeconds
(mylink.basetimestamp,mylink.secos)
TimetFromTimestamp
ReturnsaUNIXtime_tvaluefromthegiventimestamp.
Input
:timestamp
Output
:timet(int32)
Examples
.Ifmylink.mytimestampcontainsthevalue20090213
23:31:30,thenthetwofollowingfunctionsareequivalent,andreturnthe
value1234567890:
TimestampFromTimet("2009021323:31:30")
TimestampFromTimet(mylink.mytimestamp)
WeekdayFromDate
Returnsthedaynumberoftheweekfromthegivendate.Origin_dayoptionally
specifiesthedayregardedasthefirstintheweekandisSundaybydefault.
Input
:date,[origin_day]
Output
:day(int8)
Examples
.Ifmylink.mydatecontainsthedate20080818,thenthetwo
followingfunctionsareequivalent,andreturnthevalue1:
WeekdayFromDate("20080818")
WeekdayFromDate(mylink.mydate)
Ifmylink.mydatecontainsthedate20080818,andmylink.origin_day
containssaturday,thenthetwofollowingfunctionsareequivalent,and
returnthevalue2:
WeekdayFromDate("20080818","saturday")
WeekdayFromDate(mylink.mydate,mylink.origin_day)
YeardayFromDate
Returnsthedaynumberintheyearfromthegivendate.
Input
:date
Output
:day(int16)
Examples
.Ifmylink.mydatecontainsthedate20080818,thenthetwo
followingfunctionsareequivalent,andreturnthevalue231:
YeardayFromDate("20080818")
YeardayFromDate(mylink.mydate)
YearFromDate
Returnstheyearfromthegivendate.
Input
:date
Output
:year(int16)
Examples
.Ifmylink.mydatecontainsthedate20080818,thenthetwo
followingfunctionsareequivalent,andreturnthevalue2008:
YearFromDate("20080818")
YearFromDate(mylink.mydate)
YearweekFromDate
Returnstheweeknumberintheyearfromthegivendate
Input
:date
Output
:week(int16)
Examples
.Ifmylink.mydatecontainsthedate20080818,thenthetwo
followingfunctionsareequivalent,andreturnthevalue33:
YearweekFromDate("20080818")
YearweekFromDate(mylink.mydate)
Logicalfunctions
Thelogicalfunctionsperformbitoperations.
ThelogicalfunctionsareintheLogicalcategoryoftheexpressioneditor.Squarebrackets
indicateanargumentisoptional.Theexamplesshowthefunctionasitappearsina
DerivationfieldintheTransformerstage.
BitAnd
ReturnsthebitwiseANDofthetwointegerarguments.
Input
:number1(uint64),number2(uint64)
Output
:number(uint64)
Examples
.Ifmylink.mynumber1containsthenumber352and
mylink.mynumber2containsthenumber400,thenthefollowingtwo
functionsareequivalent,andreturnthevalue256:
BitAnd(352,400)
BitAnd(mylink.mynumber1,mylink.mynumber2)
BitCompress
Returnstheintegermadefromthestringargument,whichcontainsabinary
representationof"1"sand"0"s.
Input
:string
Output
:number(uint64)
Examples
.Ifmylink.mynumber1containsthestring"0101100000",then
thefollowingtwofunctionsareequivalent,andreturnthenumber352.
BitExpand("0101100000")
BitExpand(mylink.mynumber)
BitExpand
Returnsastringcontainingthebinaryrepresentationin"1"sand"0"softhegiven
integer.
Input
:number(uint64)
Output
:string
Examples
.Ifmylink.mynumber1containsthenumber352,thenthe
followingtwofunctionsareequivalent,andreturnthestring
"0101100000".
BitExpand(352)
BitExpand(mylink.mynumber)
BitOr
ReturnsthebitwiseORofthetwointegerarguments.
Input
:number1(uint64),number2(uint64)
Output
:number(uint64)
Examples
.Ifmylink.mynumber1containsthenumber352and
mylink.mynumber2containsthenumber400,thenthefollowingtwo
functionsareequivalent,andreturnthevalue496:
BitOr(352,400)
BitOr(mylink.mynumber1,mylink.mynumber2)
BitXOr
ReturnsthebitwiseExclusiveORofthetwointegerarguments.
Input
:number1(uint64),number2(uint64)
Output
:number(uint64)
Examples
.Ifmylink.mynumber1containsthenumber352and
mylink.mynumber2containsthenumber400,thenthefollowingtwo
functionsareequivalent,andreturnthevalue240:
BitXOr(352,400)
BitXOr(mylink.mynumber1,mylink.mynumber2)
Not
Returnsthecomplementofthelogicalvalueofanexpression.Ifthevalueof
expressionistrue,theNotfunctionreturnsavalueoffalse(0).Ifthevalueof
expressionisfalse,theNOTfunctionreturnsavalueoftrue(1).Anumeric
expressionthatevaluatesto0isalogicalvalueoffalse.Anumericexpression
thatevaluatestoanythingelse,otherthanthenullvalue,isalogicaltrue.An
emptystringislogicallyfalse.Allotherstringexpressions,includingstringsthat
includeanemptystring,spaces,orthenumber0andspaces,arelogicallytrue.
Input
:expression
Output
:complement(int8)
Examples
.Ifmylink.myexpressioncontainstheexpression55,thenthe
followingtwofunctionsareequivalent,andreturnthevalue1:
Not(55)
Not(mylink.myexpression)
Ifmylink.myexpressioncontainstheexpression5+5,thenthefollowing
twofunctionsareequivalent,andreturnthevalue0:
Not(5+5)
Not(mylink.myexpression)
SetBit
Returnsanintegerwithspecificbitssettoaspecificstate,where
origfield
isthe
inputvaluetoperformtheactionon,
bitlist
isastringcontainingalistof
commaseparatedbitnumberstosetthestateof,and
bitstate
iseither1or0,
indicatingwhichstatetosetthosebits.
Input
:origfield(uint64),bitlist(string),bitstate(uint8)
Output
:number(uint64)
Examples
.Ifmylink.origfieldcontainsthenumber352,mylink.bitlist
containsthelist"2,4,8",andmylink.bitstatecontainsthevalue1,thenthe
followingtwofunctionsareequivalent,andreturnthevalue494:
SetBit(356,"2,4,8",1)
SetBit(mylink.origfield,mylink.bitlist,mylink.bitstate)
Mathematicalfunctions
Themathematicalfunctionsperformmathematicaloperations.
ThemathematicalfunctionsareintheMathematicalcategoryoftheexpressioneditor.
Squarebracketsindicateanargumentisoptional.Theexamplesshowthefunctionasit
appearsinaDerivationfieldintheTransformerstage.
Abs
Returnstheabsolutevalueofanynumericexpression.Theabsolutevalueofan
expressionisitsunsignedmagnitude.
Input
:numeric_expression(int32)
Output
:result(dfloat)
Examples
.Ifmylink.number1containsthenumber12and
mylink.number2containsthenumber34,thenthefollowingtwofunctions
areequivalent,andreturnthenumber22:
Abs(1234)
Abs(mylink.mynumber1mylink.mynumber2)
Ifmylink.number1containsthenumber34andmylink.number2contains
thenumber12,thenthefollowingtwofunctionsareequivalent,andreturn
thenumber22:
Abs(3412)
Abs(mylink.mynumber1mylink.mynumber2)
Acos
Calculatesthetrigonometricarccosineofanexpression.Theexpressionmustbe
anumericvalue.Theresultisexpressedinradians.
Input
:numeric_expression(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber0.707106781,thenthe
followingtwofunctionsareequivalent,andreturnthevalue0.785398:
Acos(0.707106781)
Acos(mylink.mynumber)
Asin
Calculatesthetrigonometricarcsineofanexpression.Theexpressionmustbea
numericvalue.Theresultisexpressedinradians.
Input
:numeric_expression(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber0.707106781,thenthe
followingtwofunctionsareequivalent,andreturnthevalue0.785398:
Asin(0.707106781)
Asin(mylink.mynumber)
Atan
Calculatesthetrigonometricarctangentofanexpression.Theexpressionmustbe
anumericvalue.Theresultisexpressedinradians.
Input
:numeric_expression(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber135,thenthefollowing
twofunctionsareequivalent,andreturnthevalue1.56339,whichisthe
anglethathasanarctangentof135:
Atan(135)
Atan(mylink.mynumber)
Ceil
Calculatesthesmallestintegervaluegreaterthanorequaltothegivendecimal
value.
Input
:number(dfloat)
Output
:result(int32)
Examples
.Ifmylink.numbercontainsthenumber2355.66,thenthe
followingtwofunctionsareequivalent,andreturnthevalue2356:
Ceil(2355.66)
Ceil(mylink.mynumber)
Cos
Calculatesthetrigonometriccosineofanexpression.Theexpressionmustbea
numericvalue.Theexpressionmustproduceanumericvaluewhichistheangle
inradians.
Input
:radians(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber0.785398,thenthe
followingtwofunctionsareequivalent,andreturnthevalue0.7071:
Cos(0.785398)
Cos(mylink.mynumber)
Cosh
Calculatesthehyperboliccosineofanexpression.Theexpressionmustbea
numericvalue.
Input
:number(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber2,thenthefollowing
twofunctionsareequivalent,andreturnthevalue3.7622:
Cosh(2)
Cosh(mylink.mynumber)
Div
Outputsthewholepartoftherealdivisionoftworealnumbers(dividend,
divisor).
Input
:dividend(dfloat),divisor(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.dividendcontainsthenumber100,and
mylink.divisorcontainsthenumber25,thenthefollowingtwofunctions
areequivalent,andreturnthevalue4:
Div(100,25)
Div(mylink.dividend,mylink.divisor)
Exp
Calculatestheresultofbase'e'raisedtothepowerdesignatedbythevalueofthe
expression.Thevalueof'e'isapproximately2.71828.Theexpressionmust
evaluatetoanumericvalue.
Input
:number(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber5,thenthefollowing
twofunctionsareequivalent,andreturnthevalue54.5982:
Exp(51)
Exp(mylink.number1)
Fabs
Calculatestheabsolutevalueofthegivenfloatvalue.
Input
:number(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber26.53,thenthe
followingtwofunctionsareequivalent,andreturnthevalue26.53:
Fabs(26.53)
Fabs(mylink.number)
Floor
Calculatesthelargestintegervaluelessthanorequaltothegivendecimalvalue.
Input
:number(dfloat)
Output
:result(int32)
Examples
.Ifmylink.numbercontainsthenumber203.25,thenthe
followingtwofunctionsareequivalent,andreturnthevalue203:
Floor(203.25)
Floor(mylink.number)
Ldexp
Returnsadfloatvaluefrommultiplyingthemantissaby2raisedtothepowerof
theexponent.
Input
:mantissa(dfloat),exponent(int32)
Output
:result(dfloat)
Examples
.Ifmylink.mantissacontainsthenumber2,and
mylink.exponentcontainsthenumber3,thenthefollowingtwofunctions
areequivalent,andreturnthevalue16:
Floor(2,3)
Floor(mylink.mantissa,mylink.exponent)
Llabs
Calculatestheabsolutevalueofthegivenintegervalue.
Input
:number(integer)
Output
:result(unsignedinteger)
Examples
.Ifmylink.numbercontainsthenumber26,thenthefollowing
twofunctionsareequivalent,andreturnthevalue26:
Llabs(26)
Llabs(mylink.number)
Ln
Calculatesthenaturallogarithmofanexpressioninbase'e'.Thevalueof'e'is
approximately2.71828.Theexpressionmustevaluatetoanumericvaluegreater
than0.
Input
:number(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber6,thenthefollowing
twofunctionsareequivalent,andreturnthevalue1.79176:
Ln(6)
Ln(mylink.number)
Log10
Returnsthelogtothebase10ofthegivenvalue
Input
:number(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber6,thenthefollowing
twofunctionsareequivalent,andreturnthevalue0.778151:
Log10(6)
Log10(mylink.number)
Max
Returnsthegreaterofthetwoargumentvalues.
Input
:number1(int32),number2(int32)
Output
:result(int32)
Examples
.Ifmylink.number1containsthenumber6,and
mylink.number1containsthenumber101,thenthefollowingtwo
functionsareequivalent,andreturnthevalue101:
Max(6,101)
Max(mylink.number1,mylink.number2)
Min
Returnsthelowerofthetwoargumentvalues.
Input
:number1(int32),number2(int32)
Output
:result(int32)
Examples
.Ifmylink.number1containsthenumber6,and
mylink.number1containsthenumber101,thenthefollowingtwo
functionsareequivalent,andreturnthevalue6:
Min(6,101)
Min(mylink.number1,mylink.number2)
Mod
Calculatesthemodulo(theremainder)oftwoexpressions(dividend,divisor).
Input
:dividend(int32),divisor(int32)
Output
:result(int32)
Examples
.Ifmylink.dividendcontainsthenumber115,and
mylink.divisorcontainsthenumber25,thenthefollowingtwofunctions
areequivalent,andreturnthevalue15:
Mod(115,25)
Mod(mylink.dividend,mylink.divisor)
Neg
Negatesanumber.
Input
:number(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber123,thenthefollowing
twofunctionsareequivalent,andreturnthevalue123:
Neg(123)
Neg(mylink.number)
Pwr
Calculatesthevalueofanexpressionwhenraisedtoaspecifiedpower
(expression,power).
Input
:expression(dfloat),power(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.expressioncontainsthenumber2,andmylink.power
containsthenumber3,thenthefollowingtwofunctionsareequivalent,
andreturnthevalue8:
Pwr(2,3)
Pwr(mylink.expression,mylink.power)
Rand
32
Returnapsuedorandomintegerbetween0and2
1
Input
:
Output
:result(uint32)
Examples
.Usethisfunctiontoaddacolumntoyouroutputcontaininga
randomnumber:
Rand()
Random
32
Returnsarandomnumberbetween0and2
1
Input
:
Output
:result(uint32)
Examples
.Usethisfunctiontoaddacolumntoyouroutputcontaininga
randomnumber:
Random()
Sin
Calculatesthetrigonometricsineofanexpression.Theexpressionmustbea
numericvalue.Theexpressionmustproduceanumericvaluewhichistheangle
inradians.
Input
:radians(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber0.785398,thenthe
followingtwofunctionsareequivalent,andreturnthevalue0.7071:
Sin(0.785398)
Sin(mylink.mynumber)
Sinh
Calculatesthehyperbolicsineofanexpression.Theexpressionmustbea
numericvalue.
Input
:number(dfloat)
Output
:result(dfloat)
Examples
:Ifmylink.numbercontainsthenumber2,thenthefollowing
twofunctionsareequivalent,andreturnthevalue3.62686:
Sinh(2)
Sinh(mylink.mynumber)
Sqrt
Calculatesthesquarerootofanumber.
Input
:number(dfloat)
Output
:result(dfloat)
Examples
:Ifmylink.numbercontainsthenumber450,thenthefollowing
twofunctionsareequivalent,andreturnthevalue21.2132:
Sqrt(450)
Sqrt(mylink.mynumber)
Tan
Calculatesthetrigonometrictangentofanexpression.Theexpressionmust
produceanumericvaluewhichistheangleinradians.
Input
:radians(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber0.7853981,thenthe
followingtwofunctionsareequivalent,andreturnthevalue0.7071:
Tan(0.7853981)
Tan(mylink.mynumber)
Tanh
Calculatesthehyperbolictangentofanexpression.Theexpressionmustbea
numericvalue.
Input
:number(dfloat)
Output
:result(dfloat)
Examples
:Ifmylink.numbercontainsthenumber2,thenthefollowing
twofunctionsareequivalent,andreturnthevalue0.964028:
Tanh(2)
Tanh(mylink.mynumber)
Nullhandlingfunctions
YoucanusethenullhandlingfunctionsintheTransformerstagetohandlenullsin
derivations.
Ifyouuseinputcolumnsinanoutputcolumnexpression,anullvalueinanyinput
columncausesanulltobewrittentotheoutputcolumn.Youcan,however,usethenull
handlingfunctionstohandlenullsexplicitly.
ThefollowingfunctionsareavailableintheNullHandlingcategory.Squarebrackets
indicateanargumentisoptional.Theexamplesshowthefunctionasitappearsina
DerivationfieldintheTransformerstage.
IsNotNull
Returnstruewhenanexpressiondoesnotevaluatetothenullvalue.
Input
:any
Output
:true/false(int8)
Examples
.IftheDerivationfieldforanoutputcolumncontainedthe
followingcode,thentheTransformerstagechecksiftheinputcolumn
namedmylink.mycolumncontainsanullvalue.Iftheinputcolumndoes
notcontainanull,theoutputcolumncontainsthevalueoftheinput
column.Iftheinputcolumndoescontainanull,thentheoutputcolumn
containsthestringNULL.
IfIsNotNull(mylink.mycolumn)Thenmylink.mycolumnElse
"NULL"
IsNull
Returnstruewhenanexpressionevaluatestothenullvalue.
Input
:any
Output
:true/false(int8)
Examples
.IftheDerivationfieldforanoutputcolumncontainedthe
followingcode,thentheTransformerstagechecksiftheinputcolumn
namedmylink.mycolumncontainsanullvalue.Iftheinputcolumn
containsanull,theoutputcolumncontainsthestringNULL.Iftheinput
columndoesnotcontainanull,thentheoutputcolumncontainsthevalue
oftheinputcolumn.
IfIsNull(mylink.mycolumn)Then"NULL"Elsemylink.mycolumn
NullToEmpty
Returnsanemptystringiftheinputcolumnisnull,otherwisereturnstheinput
columnvalue.
Input
:inputcolumn
Output
:inputcolumnvalueoremptystring
Examples
.IftheDerivationfieldforanoutputcolumncontainedthe
followingcode,thentheTransformerstagechecksiftheinputcolumn
namedmylink.mycolumncontainsanullvalue.Iftheinputcolumn
containsanull,theoutputcolumncontainsanemptystring.Iftheinput
columndoescontainanull,thentheoutputcolumncontainsthevalue
fromtheinputcolumn.
NullToEmpty(mylink.mycolumn)
NullToZero
Returnszeroiftheinputcolumnisnull,otherwisereturnstheinputcolumnvalue.
Input
:inputcolumn
Output
:inputcolumnvalueorzero
Examples
.IftheDerivationfieldforanoutputcolumncontainedthe
followingcode,thentheTransformerstagechecksiftheinputcolumn
namedmylink.mycolumncontainsanullvalue.Iftheinputcolumn
containsanull,theoutputcolumncontainszero.Iftheinputcolumndoes
containanull,thentheoutputcolumncontainsthevaluefromtheinput
column.
NullToZeroy(mylink.mycolumn)
NullToValue
Returnsthespecifiedvalueiftheinputcolumnisnull,otherwisereturnstheinput
columnvalue.
Input
:inputcolumn,
value
Output
:inputcolumnvalueor
value
Examples
.IftheDerivationfieldforanoutputcolumncontainedthe
followingcode,thentheTransformerstagechecksiftheinputcolumn
namedmylink.mycolumncontainsanullvalue.Iftheinputcolumn
containsanull,theoutputcolumncontains42.Iftheinputcolumndoes
containanull,thentheoutputcolumncontainsthevaluefromtheinput
column.
NullToValue(mylink.mycolumn,42)
SetNull
Assignsanullvaluetothetargetcolumn.
Input
:
Output
:
Examples
.IftheDerivationfieldforanoutputcolumncontainedthe
followingcode,thentheTransformerstagesetstheoutputcolumntonull:
setnull()
Numberfunctions
Usethenumberfunctionstoextractthemantissafromadecimalorfloatingpoint
number.TheNumbercategoryintheexpressioneditoralsocontainsthetypecasting
functions,whichyoucanusetocastnumbersasdouble,float,orintegerdatatypes.
Squarebracketsindicateanargumentisoptional.Theexamplesshowthefunctionasit
appearsinaDerivationfieldintheTransformerstage.
Thetypecastingfunctionshelpyouwhenyouperformmathematicalcalculationsusing
numericfields.Forexample,ifyouhaveacalculationusinganoutputcolumnoftype
floatderivedfromaninputcolumnoftypeintegerinaParallelTransformerstagethe
resultisderivedasanintegerregardlessofitsfloattype.Ifyouwantanonintegralresult
foracalculationusingintegraloperands,youcanusethetypecastingfunctionstocast
theintegeroperandsintononintegraloperands.
AsDouble
Treatthegivennumberasadouble.
Input
:number
Output
:number(double)
Examples
.Inthefollowingexpression,theinputcolumnmynumber
containsaninteger,butthefunctionoutputsadouble.If
mylink.mynumbercontainsthevalue56,thenthefollowingtwofunctions
areequivalent,andreturnthevalue1.29629629629629619E+01:
AsDouble(56/4.32)
AsDouble(mylink.mynumber/4.32)
AsFloat
Treatthegivennumberasafloat.
Input
:number
Output
:number(float)
Examples
.Inthefollowingexpression,theinputcolumnmynumber
containsaninteger,butthefunctionoutputsafloat.Ifmylink.mynumber
containsthevalue56,thenthefollowingtwofunctionsareequivalent,and
returnthevalue1.29629629629629619E+01:
AsFloat(56/4.32)
AsFloat(mylink.mynumber/4.32)
AsInteger
Treatthegivennumberasaninteger.
Input
:number
Output
:number(integer)
Examples
.Inthefollowingexpression,theinputcolumnmynumber
containsadouble,butthefunctionisoutputaninteger.If
mylink.mynumbercontainsthevalue56,thenthefollowingtwofunctions
areequivalent,andreturnthevalue12:
AsInteger(56/4.32)
AsInteger(mylink.mynumber/4.32)
MantissaFromDecimal
Returnsthemantissafromthegivendecimal.
Input
:number(decimal)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber243.7675,thenthe
followingtwofunctionsareequivalent,andreturnthevalue7675:
MantissaFromDecimal(243.7675)
MantissaFromDecimal(mylink.mynumber)
MantissaFromDFloat
Returnsthemantissafromthegivendfloat.
Input
:number(dfloat)
Output
:result(dfloat)
Examples
.Ifmylink.numbercontainsthenumber
1.234412000000000010E+4,thenthefollowingfunctionreturnsthe
value1:
MantissaFromDFloat(mylink.mynumber)
Rawfunctions
UsetheRawfunctiontoobtainthelengthofthedatainacolumncontainingrawdata.
ThefunctionisintheRawcategory.Theexamplesshowthefunctionasitappearsina
DerivationfieldintheTransformerstage.
RawLength
Returnsthelengthofarawstring.
Input
:inputstring(raw)
Output
:result(int32)
Examples
.Ifmylink.rawdatacontainstherawdatafromabitmap,then
thefollowingfunctionreturnsthesizeofthebitmapinbytes:
RawLength(mylink.rawdata)
Stringfunctions
Usethestringfunctionstomanipulatestrings.
ThefollowingfunctionsareintheStringcategoryoftheexpressioneditor.Square
bracketsindicateanargumentisoptional.Theexamplesshowthefunctionasitappears
inaDerivationfieldintheTransformerstage.
AlNum
Checkswhetherthegivenstringcontainsonlyalphanumericcharacters.
Input
:string(string)
Output
:true/false(int8)
Examples
.Ifmylink.mystring1containsthestring"OED_75_9*E",then
thefollowingfunctionwouldreturnthevalue1(false).
AlNum(mylink.mystring1)
Ifmylink.mystring2containsthestring"12redroses",thenthefollowing
functionwouldreturnthevalue1(true).
AlNum(mylink.mystring2)
Alpha
Checkswhetherthegivenstringcontainsonlyalphabeticcharacters.
Input
:string(string)
Output
:true/false(int8)
Examples
.Ifmylink.mystring1containsthestring"12redroses",thenthe
followingfunctionwouldreturnthevalue1(false).
Alpha(mylink.mystring1)
Ifmylink.mystring2containsthestring"twelveredroses",thenthe
followingfunctionwouldreturnthevalue1(true).
Alpha(mylink.mystring2)
CompactWhiteSpace
Returnthestringafterreducingallconsecutivewhitespacetoasinglespace.
Input
:string(string)
Output
:result(string)
Examples
.Ifmylink.mystringcontainsthestring"toomanyspaces",
thenthefollowingfunctionreturnsthestring"toomanyspaces":
CompactWhiteSpace(mylink.mystring)
Compare
Comparestwostringsforsorting.Thecomparisoncanbeleftjustified(the
default)orrightjustified.Arightjustifiedcomparisoncomparesnumeric
substringswithinthespecifiedstringsasnumbers.Thenumericstringsmust
occuratthesamecharacterpositionineachstring.Forexample,arightjustified
comparisonofthestringsAB100andAB99indicatesthatAB100isgreaterthan
AB99since100isgreaterthan99.Arightjustifiedcomparisonofthestrings
AC99andAB100indicatesthatAC99isgreatersinceCisgreaterthanB.
Input
:string1(string),string2(string),[justification(LorR)]
Output
:result(int8),canbe1forstring1islessthanstring2,0forboth
stringsarethesame,1forstring1isgreaterthanstring2.
Examples
.Ifmylink.mystring1containsthestring"AB99"and
mylink.mystring2containsthestring"AB100",thenthefollowing
functionreturnstheresult1.
Compare(mylink.mystring1,mylink.mystring2,L)
Ifmylink.mystring1containsthestring"AB99"andmylink.mystring2
containsthestring"AB100",thenthefollowingfunctionreturnstheresult
1.
Compare(mylink.mystring1,mylink.mystring2,R)
CompareNoCase
Comparestwostringsforsorting,ignoringtheircase.
Input
:string1(string),string2(string)
Output
:result(int8),canbe1forstring1islessthanstring2,0forboth
stringsarethesame,1forstring1isgreaterthanstring2.
Examples
.Ifmylink.mystring1containsthestring"ChocolateCake"and
mylink.mystring2containsthestring"chocolatecake",thenthefollowing
functionreturnstheresult1.
ComparNoCase(mylink.mystring1,mylink.mystring2)
CompareNum
Comparesthefirst
n
charactersoftwostrings.
Input
:string1(string),string2(string),length(int16)
Output
:result(int8),canbe1forstring1islessthanstring2,0forboth
stringsarethesame,1forstring1isgreaterthanstring2.
Examples
.Ifmylink.mystring1containsthestring"Chocolate"and
mylink.mystring2containsthestring"ChoccyTreat",thenthefollowing
functionreturnstheresult1.
ComparNum(mylink.mystring1,mylink.mystring2,4)
CompareNumNoCase
Comparesthefirst
n
charactersoftwostrings,ignoringtheircase.
Input
:string1(string),string2(string),length(int16)
Output
:result(int8),canbe1forstring1islessthanstring2,0forboth
stringsarethesame,1forstring1isgreaterthanstring2.
Examples
.Ifmylink.mystring1containsthestring"chocolate"and
mylink.mystring2containsthestring"ChoccyTreat",thenthefollowing
functionreturnstheresult1.
ComparNumNoCase(mylink.mystring1,mylink.mystring2,4)
Convert
Convertscharactersinthestringdesignatedin
expression
.Convertsthecharacters
specifiedin
fromlist
tothecharactersspecifiedin
tolist
.
Input
:fromlist(string),tolist(string),expression(string)
Output
:result(string)
Examples
.Ifmylink.mystring1containsthestring"NOWISTHE
TIME",thenthefollowingfunctionreturnsthestring"NOWYSXHE
XYME".
Convert("TI","XY",mylink.mystring1)
Count
Countsthenumberoftimesasubstringoccursinastring.
Input
:string(string),substring(string)
Output
:result(int32)
Examples
.Ifmylink.mystring1containsthestring"chocolatedrops,
chocolateicecream,chocolatebars",thenthefollowingfunctionreturns
3.
Count(mylink.mystring1,"choc")
Dcount
Countsthenumberofdelimitedfieldsinastring.
Input
:string(string),delimiter(string)
Output
:result(int32)
Examples
.Ifmylink.mystring1containsthestring"chocolatedrops,
chocolateicecream,chocolatebars",thenthefollowingfunctionreturns
3.
Dcount(mylink.mystring1,",")
DownCase
Changesalluppercaselettersinastringtolowercase.
Input
:string(string)
Output
:result(string)
Examples
.Ifmylink.mystring1containsthestring"CaMelcAsE",then
thefollowingfunctionreturnsthestring"camelcase".
DownCase(mylink.mystring1)
DQuote
Enclosesastringindoublequotationmarks.
Input
:string(string)
Output
:result(string)
Examples
.Ifmylink.mystring1containsthestringneedsquotes,thenthe
followingfunctionreturnsthestring"needsquotes".
DQuote(mylink.mystring1)
Field
Returnsoneormoresubstringslocatedbetweenspecifieddelimitersinastring.
Theargument
occurrence
specifieswhichoccurrenceofthedelimiteristobe
usedasaterminator.Theargument
number
optionallyspecifieshowmany
substringstoreturn.
Input
:string(string),delimiter(string),occurrence(int32),[number
(int32)]
Output
:result(string)
Examples
.Ifmylink.mystring1containsthestring"chocolatedrops,
chocolateicecream,chocolatebars,chocolatedippers",thenthefollowing
functionreturnsthestring"chocolateicecream".
Field(mylink.mystring1,",",2)
Ifmylink.mystring1containsthestring"chocolatedrops,chocolateice
cream,chocolatebars,chocolatedippers",thenthefollowingfunction
returnsthestring"chocolateicecream,chocolatebars".
Field(mylink.mystring1,",",2,2)
Index
Findsthestartingcharacterpositionofasubstring.Theargument
occurrence
specifieswhichoccurrenceofthesubstringistobelocated.
Input
:string(string)substring(string)occurrence(int32)
Output
:result(int32)
Examples
.Ifmylink.mystring1containsthestring"chocolatedrops,
chocolateicecream,chocolatebars,chocolatedippers",thenthefollowing
functionreturnsthevalue18.
Index(mylink.mystring1,"chocolate",2)
Left
Returnstheleftmost
n
charactersofastring.
Input
:string(string)number(int32)
Output
:result(string)
Examples
.Ifmylink.mystring1containsthestring"chocolatedrops,
chocolateicecream,chocolatebars,chocolatedippers",thenthefollowing
functionreturnsthestring"chocolate".
Left(mylink.mystring1,9)
Len
Returnsthelengthofastringincharacters.
Input
:string(string)
Output
:result(int32)
Examples
.Ifmylink.mystring1containsthestring"chocolate",thenthe
followingfunctionreturnsthevalue9.
Len(mylink.mystring1)
Num
Returns1ifstringcanbeconvertedtoanumber,or0otherwise.
Input
:string(string)
Output
:result(int32)
Examples
.Ifmylink.mystring1containsthestring"22",thenthe
followingfunctionreturnsthevalue1.
Num(mylink.mystring1)
Ifmylink.mystring1containsthestring"twentytwo",thenthefollowing
functionreturnsthevalue0.
Num(mylink.mystring1)
PadString
Returnthestringpaddedwiththespecifiednumberofpadcharacters.
Input
:string(string)padstring(string)padlength(int32)
Output
:result(string)
Examples
.IIfmylink.mystring1containsthestring"AB175",thenthe
followingfunctionreturnsthestring"AB17500000".
PadString(mylink.mystring1,"0",5)
Right
Returnstherightmost
n
charactersofastring.
Input
:string(string)number(int32)
Output
:result(string)
Examples
.Ifmylink.mystring1containsthestring"chocolatedrops,
chocolateicecream,chocolatebars,chocolatedippers",thenthefollowing
functionreturnsthestring"dippers".
Right(mylink.mystring1,7)
Soundex
Returnsacodewhichidentifiesasetofwordsthatare(roughly)phonetically
alikebasedonthestandard,openalgorithmforSOUNDEXevaluation.
Input
:string(string)
Output
:result(string)
Examples
.Ifmylink.mystring1containsthestring"Griffin"thenthe
followingfunctionreturnsthecode"G615".
Soundex(mylink.mystring1)
Ifmylink.mystring1containsthestring"Griphin"thenthefollowing
functionalsoreturnsthecode"G615".
Soundex(mylink.mystring1)
Space
Returnsastringof
n
spacecharacters.
Input
:length(int32)
Output
:result(string)
Examples
.Ifmylink.mylengthcontainsthenumber100,thenthe
followingfunctionreturnsastringthatcontains100spacecharacters.
Space(mylink.mylength)
SQuote
Enclosesastringinsinglequotationmarks.
Input
:string(string)
Output
:result(string)
Examples
.Ifmylink.mystring1containsthestringneedsquotes,thenthe
followingfunctionreturnsthestring'needsquotes'.
SQuote(mylink.mystring1)
Str
Repeatsastringthespecifiednumberoftime.
Input
:string(string)
Output
:result(string)
Examples
.Ifmylink.mystring1containsthestringneeds"choc",thenthe
followingfunctionreturnsthestring"chocchocchocchocchoc".
Str(mylink.mystring1,5)
StripWhiteSpace
Returnsthestringafterremovingallwhitespacecharactersfromit.
Input
:string(string)repeats(int32)
Output
:result(string)
Examples
.Ifmylink.mystringcontainsthestring"toomanyspaces",
thenthefollowingfunctionreturnsthestring"toomanyspaces":
StripWhiteSpace(mylink.mystring)
Trim
Removeallleadingandtrailingspacesandtabsplusreduceinternaloccurrences
toone.Theargument
stripchar
optionallyspecifiesacharacterotherthanaspace
oratab.Theargument
options
optionallyspecifiesthetypeoftrimoperationto
beperformedandcontainsoneormoreofthefollowingvalues:
A
Removealloccurrencesof
stripchar
B
Removebothleadingandtrailingoccurrencesof
stripchar
D
Removeleading,trailing,andredundantwhitespacecharacters
E
Removetrailingwhitespacecharacters
F
Removeleadingwhitespacecharacters
L
Removeallleadingoccurrencesof
stripchar
R
Removeleading,trailing,andredundantoccurrencesof
stripchar
T
Removealltrailingoccurrencesof
stripchar
Input
:string(string)[stripchar(string)][options(string)]
Output
:result(string)
Examples
.Ifmylink.mystringcontainsthestring"Stringwithwhitespace
",thenthefollowingfunctionreturnsthestring"Stringwithwhitespace":
Trim(mylink.mystring)
Ifmylink.mystringcontainsthestring"..Remove..redundant..dots....",then
thefollowingfunctionreturnsthestring"Remove.redundant.dots":
Trim(mylink.mystring,".")
Ifmylink.mystringcontainsthestring"Remove..all..dots....",thenthe
followingfunctionreturnsthestring"Removealldots":
Trim(mylink.mystring,".","A")
Ifmylink.mystringcontainsthestring"Remove..trailing..dots....",thenthe
followingfunctionreturnsthestring"Remove..trailing..dots":
Trim(mylink.mystring,".","T")
TrimB
Removesalltrailingspacesandtabsfromastring.
Input
:string(string)
Output
:result(string)
Examples
.Ifmylink.mystringcontainsthestring"toomanytrailing
spaces",thenthefollowingfunctionreturnsthestring"toomany
trailingspaces":
TrimB(mylink.mystring)
TrimF
Removesallleadingspacesandtabsfromastring.
Input
:string(string)
Output
:result(string)
Examples
.Ifmylink.mystringcontainsthestring"toomanyleading
spaces",thenthefollowingfunctionreturnsthestring"toomanyleading
spaces":
TrimF(mylink.mystring)
TrimLeadingTrailing
Removesallleadingandtrailingspacesandtabsfromastring.
Input
:string(string)
Output
:result(string)
Examples
.Ifmylink.mystringcontainsthestring"toomanyspaces",
thenthefollowingfunctionreturnsthestring"toomanyspaces":
TrimLeadingTrailing(mylink.mystring)
UpCase
Changesalllowercaselettersinastringtouppercase.
Input
:string(string)
Output
:result(string)
Examples
.Ifmylink.mystring1containsthestring"CaMelcAsE",then
thefollowingfunctionreturnsthestring"CAMELCASE".
UpCase(mylink.mystring1)
Vectorfunction
Usethevectorfunctiontoaccessanelementinavectorcolumn.
ThefunctionisintheVectorcategoryoftheexpressioneditor.Theexamplesshowthe
functionasitappearsinaDerivationfieldintheTransformerstage.
ElementAt
Accessesanelementofavector.Thevectorindexstartsat0.Thefunctioncanbe
usedaspartof,orthewholeofanexpression.
Input
:input_column(columnname)index(int)
Output
:elementofvector
Examples
.Thefollowingexampleoutputsthesecondelementofthe
vectorinthecolumnmylink.myvector.
ElementAt(mylink.myvector,2)
Thefollowingexampleoutputsthesecondelementofthevectorinthe
columnmylink.myvectorandaddsoneit.
ElementAt(mylink.myvector,2)+1
Typeconversionfunctions
Usethetypeconversionfunctionstochangethetypeofanargument.
ThefollowingfunctionsareintheTypeConversioncategoryoftheexpressioneditor.
Squarebracketsindicateanargumentisoptional.Thedefaultdateformatis
%yyyy%mm%dd.
TheexamplesshowthefunctionasitappearsinaDerivationfieldintheTransformer
stage.
Char
GeneratesanASCIIcharacterfromitsnumericcodevalue.Youcanoptionally
specifytheallow8bitsargumenttoconvert8bitASCIIvalues.
Input
:code(number),[allow8bits]
Output
:result(char)
Examples
.ThefollowingexampleoutputstheASCIIcode65asthe
characterA.
Char(65)
DateToString
Returnsthestringrepresentationofthegivendate.Theformatofthestringcan
optionallybespecified.
Input
:date(date),[format(string)]
Output
:result(string)
Examples
.Thefollowingexampleoutputsthedatecontainedinthe
columnmylink.mydatetoastring.Ifmylink.mydatecontainsthedate18th
August,2009,thentheoutputstringis"20090818":
DateToString(mylink.mydate)
Thefollowingexampleoutputsthedatecontainedinthecolumn
mylink.mydatetoastringwiththeformatdd:mm:yyyy.Ifmylink.mydate
containedthedate18thAugust,2009,thentheoutputstringwouldbe
"18:08:2009":
DateToString(mylink.mydate,"%dd:%mm:%yyyy")
DateToDecimal
Returnsthegivendateasapackeddecimalvalue.Ifyourtargetdecimalspecifies
ascale,partofthedateappearsafterthedecimalpoint.Youcanoptionally
specifyaformatstringthatspecifieshowthedateisstoredinthedecimalnumber.
Thedefaultformatstringis"%yyyy%mm%dd",so,forexample,thedate
20090825isstoredasthedecimalnumber20090825.Formatstringscanonly
specifyaformatthatcontainsnumbers.Forexample,youcannotspecifyaformat
stringsuchas"%yyyy%mm%dd",becausethehyphencharacter()cannotbe
storedinapackeddecimalvalue.Thefollowingtokensarevalidforconversions
toorfromdecimalvalues:
%yyyy(fourdigityear)
%yy(twodigityear)
%NNNNyy(twodigityearwithcutoff)
%mm(twodigitmonth)
%dd(twodigitdayofmonth)
%ddd(threedigitdayofyear)
Theliteraldigits0to9arealsovalid.
Input
:basedate(date)[,format(string)]
Output
:converted_date(decimal)
Examples
.Ifthecolumnmylink.basedatecontainsthedate20120818,
thenthefollowingfunctionstoresthedateasthedecimalnumber
18082012:
DateToDecimal(mylink.basedate,"%dd%mm%yyyy")
Ifthecolumnmylink.basedatecontainsthedate20120818,andthetarget
columnhasalengthof10andascaleof2,thenthefollowingfunction
storesthedateasthedecimalnumber201208.18:
DateToDecimal(mylink.basedate)
DecimalToDate
Returnsthegivenpackeddecimalasadate.Boththesignandthescaleofthe
decimalnumberareignoredwhenitisconvertedtoadate.Youcanoptionally
specifyaformatstringthatspecifieshowthedateisstoredinthedecimalnumber.
Thedefaultformatstringis"%yyyy%mm%dd",so,forexample,thedate
20090825isstoredasthedecimalnumber20090825.Formatstringscanonly
specifyaformatthatcontainsnumbers.Forexample,youcannotspecifyaformat
stringsuchas"%yyyy%mm%dd",becausethehyphencharacter()cannotbe
storedinapackeddecimalvalue.Thefollowingtokensarevalidforconversions
toorfromdecimalvalues:
%yyyy(fourdigityear)
%yy(twodigityear)
%NNNNyy(twodigityearwithcutoff)
%mm(twodigitmonth)
%dd(twodigitdayofmonth)
%ddd(threedigitdayofyear)
Theliteraldigits0to9arealsovalid.
Input
:basedec(decimal)[,format(string)]
Output
:date
Examples
.Ifthecolumnmylink.mydecdatacontainsthevalue18082012,
thenthefollowingfunctionreturnsthedate20120818:
DecimalToDate(mylink.basedate,"%dd%mm%yyyy")
Ifthecolumnmylink.mydecdatacontainsthevalue201208.18,thenthe
followingfunctionreturnsthedate20120818:
DecimalToDate(mylink.basedate)
DecimalToDecimal
Returnsthegivendecimalindecimalrepresentationwithprecisionandscale
specifiedinthetargetcolumndefinition.Theargument
rtype
optionallyspecifies
aroundingtype,andissettooneofthefollowingvalues:
ceil
.Roundthesourcefieldtowardpositiveinfinity.Forexample,1.4>2,1.6
>1.
floor
.Roundthesourcefieldtowardnegativeinfinity.Forexample,1.6>1,1.4
>2.
round_inf
.Roundortruncatethesourcefieldtowardthenearestrepresentable
value,breakingtiesbyroundingpositivevaluestowardpositiveinfinityand
negativevaluestowardnegativeinfinity.Forexample,1.4>1,1.5>2,1.4>
1,1.5>2.
trunc_zero
.Discardanyfractionaldigitstotherightoftherightmostfractional
digitsupportedinthedestination,regardlessofsign.Forexample,ifthe
destinationisaninteger,allfractionaldigitsaretruncated.Ifthedestinationis
anotherdecimalwithasmallerscale,roundortruncatetothescalesizeofthe
destinationdecimal.Forexample,1.6>1,1.6>1.
Input
:decimal(decimal)[,rtype(string)]
Output
:result(decimal)
Examples
.Ifthecolumnmylink.mydeccontainsthedecimalnumber
2.5345,thefollowingfunctionreturnsthedecimalnumber00000002.54.
DecimalToDecimal(mylink.mydec,"ceil")
Thefollowingfunctionreturnsthedecimalnumber00000002.53.
DecimalToDecimal(mylink.mydec,"floor")
Thefollowingfunctionreturnsthedecimalnumber00000002.53.
DecimalToDecimal(mylink.mydec,"trunc_zero")
Thefollowingfunctionreturnsthedecimalnumber00000002.53.
DecimalToDecimal(mylink.mydec,"round_inf")
Inalltheseexamples,thetargetdecimalhasalengthof10andascaleof
2.
DecimalToDFloat
Returnsthegivendecimalindfloatrepresentation.Theargument"fix_zero"
optionallyspecifiesthatallzerodecimalvaluesareregardedasvalid(bydefault,
decimalnumberscomprisingallzerosaretreatedasinvalid).
Input
:decimal(decimal)[,"fix_zero"]
Output
:result(dfloat)
Examples
.Ifthecolumnmylink.mydeccontainsthedecimalnumber
00000004.00thefollowingfunctionreturnsthedfloatnumber
4.00000000000000000E+00.
DecimalToDFloat(mylink.mydec,"fix_zero")
Ifthecolumnmylink.mydeccontainsthedecimalnumber00012344.00
thefollowingfunctionreturnsthedfloatnumber
1.23440000000000000E+04.
DecimalToDFloat(mylink.mydec,"fix_zero")
Ifthecolumnmylink.mydeccontainsthedecimalnumber00012344.120
thefollowingfunctionreturnsthedfloatnumber
1.23441200000000010E+04.
DecimalToDFloat(mylink.mydec,"fix_zero")
Ifthecolumnmylink.mydeccontainsthedecimalnumber00012344.120
thefollowingfunctionreturnsthedfloatnumber
1.23441200000000010E+04.
DecimalToDFloat(mylink.mydec)
Ifthecolumnmylink.mydeccontainsthedecimalnumber00012344.000
thefollowingfunctionreturnsthedfloatnumber
1.23440000000000000E+04.
DecimalToDFloat(mylink.mydec)
DecimalToString
Returnsthegivendecimalasastring.Theargument"fix_zero"optionally
specifiesthatallzerodecimalvaluesareregardedasvalid(bydefault,decimal
numberscomprisingallzerosaretreatedasinvalid).Thiscoversthecasewhere
thesignbitsofthepackeddecimalrepresentationareall0aswellasallthe
contentdigits.Thiscastisnotconsideredvalidunless"fix_zero"istrue.
Input
:decimal(decimal)[,"fix_zero"]
Output
:result(string)
Examples
.Ifthecolumnmylink.mydeccontainsthedecimalnumber
00000004.00,thefollowingfunctionreturnsthestring"4":
DecimalToString(mylink.mydec,"suppress_zero")
Ifthecolumnmylink.mydeccontainsthedecimalnumber00000004.00,
thefollowingfunctionreturnsthestring
"0000000000000000000000000004.0000000000".
DecimalToString(mylink.mydec,"fix_zero")
Ifthecolumnmylink.mydeccontainsthedecimalnumber00012344.00,
thefollowingfunctionreturnsthestring"12344".
DecimalToString(mylink.mydec,"suppress_zero")
Ifthecolumnmylink.mydeccontainsthedecimalnumber00012344.00,
thefollowingfunctionreturnsthestring
"0000000000000000000000012344.0000000000".
DecimalToString(mylink.mydec,"fix_zero")
Ifthecolumnmylink.mydeccontainsthedecimalnumber00012344.120,
thefollowingfunctionreturnsthestring
"0000000000000000000000012344.1200000000".
DecimalToString(mylink.mydec,"fix_zero")
Ifthecolumnmylink.mydeccontainsthedecimalnumber00012344.120,
thefollowingfunctionreturnsthestring"12344.12":
DecimalToString(mylink.mydec,"suppress_zero")
Ifthecolumnmylink.mydeccontainsthedecimalnumber00012344.120,
thefollowingfunctionreturnsthestring
"0000000000000000000000012344.120000000".
DecimalToString(mylink.mydec)
Ifthecolumnmylink.mydeccontainsthedecimalnumber00012344.000,
thefollowingfunctionreturnsthestring
"0000000000000000000000012344.0000000000".
DecimalToString(mylink.mydec)
DecimalToTime
Returnsthegivenpackeddecimalasatime.Youcanoptionallyspecifyaformat
stringthatspecifieshowthetimeisstoredinthedecimalnumber.Thedefault
formatstringis"%hh%nn%ss",so,forexample,thetime14:03:22isstoredas
thedecimalnumber140322.Formatstringscanonlyspecifyaformatthat
containsnumbers.Forexample,youcannotspecifyaformatstringsuchas
"%hh:%nn:%ss",becausethecoloncharacter(:)cannotbestoredinapacked
decimalvalue.Thefollowingtokensarevalidforconversionstoorfromdecimal
values:
%hh(twodigithoursusing24hourclock)
%nn(twodigitminutes)
%ss(twodigitseconds)
%ss.
N
(twodigitseconds,plusthenumberoffractionaldigitsallowed.The
numberoffractionaldigitsisfromonetosixinclusive).
Theliteraldigits0to9arealsovalid.
Ifyourspecifiedformatincludesmicroseconds(forexample,%ss.4),thenthe
positionofthedecimalpointisinferredinthedecimalvalue.Thepositionofthe
decimalpointdoesnothavetocoincidewiththespecifiedscaleofthedecimal
(forexample,scale=4).
Input
:time(time)[,format(string)]
Output
:result(decimal)
Examples
:Ifthecolumnmylink.mytimedeccontainsthedecimalvalue
200658,thenthefollowingfunctionreturnsthetime20:06:58:
DecimalToTime(mylink.mytimedec)
Ifthecolumnmylink.mytimedeccontainsthedecimalvalue580620,then
thefollowingfunctionreturnsthetime20:06:58:
DecimalToTime(mylink.mytimedec,"%ss%nn%hh")
DecimalToTimestamp
Returnsthegivenpackeddecimalasatimestamp.Youcanoptionallyspecifya
formatstringthatspecifieshowthetimestampisstoredinthedecimalnumber.
Thedefaultformatstringis"%yyyy%mm%dd%hh%nn%ss",so,forexample,
thetimestamp2009082514:03:22isstoredasthedecimalnumber
20090825140322.Formatstringscanonlyspecifyaformatthatcontainsnumbers.
Forexample,youcannotspecifyaformatstringsuchas
"%yyyy/%mm/%dd%hh:%nn:%ss",becausetheslashcharacter(/)andthecolon
character(:)cannotbestoredinapackeddecimalvalue.Thefollowingtokensare
validforconversionstoorfromdecimalvalues:
%yyyy(fourdigityear)
%yy(twodigityear)
%NNNNyy(twodigityearwithcutoff)
%mm(twodigitmonth)
%dd(twodigitdayofmonth)
%ddd(threedigitdayofyear)
%hh(twodigithoursusing24hourclock)
%nn(twodigitminutes)
%ss(twodigitseconds)
%ss.
N
(twodigitseconds,plusthenumberoffractionaldigitsallowed.The
numberoffractionaldigitsisfromonetosixinclusive).
Theliteraldigits0to9arealsovalid.
Ifyourspecifiedformatincludesmicroseconds(forexample,%ss.4),thenthe
positionofthedecimalpointisinferredinthedecimalvalue.Thepositionofthe
decimalpointdoesnothavetocoincidewiththespecifiedscaleofthedecimal
(forexample,scale=4).
Input
:timestamp(timestamp)[,format(string)]
Output
:result(decimal)
Examples
:Ifthecolumnmylink.mytimestampdeccontainsthevalue
19580818200658,thenthefollowingfunctionreturnsthetimestamp
1958081820:06:58:
DecimalToTimestamp(mylink.mytimestampdec)
Ifthecolumnmylink.mytimestampdeccontainsthedecimalvalue
200658580818,thenthefollowingfunctionreturnsthetimestamp
1958081820:06:58:
DecimalToTimestamp(mylink.mytimestampdec,
"%hh%nn%ss%yy%mm%dd")
DFloatToDecimal
Returnsthegivendfloatindecimalrepresentation.Theargument
rtype
optionally
specifiesaroundingtype,andissettooneofthefollowingvalues:
ceil
.Roundthesourcefieldtowardpositiveinfinity.Forexample,1.4>2,1.6
>1.
floor
.Roundthesourcefieldtowardnegativeinfinity.Forexample,1.6>1,1.4
>2.
round_inf
.Roundortruncatethesourcefieldtowardthenearestrepresentable
value,breakingtiesbyroundingpositivevaluestowardpositiveinfinityand
negativevaluestowardnegativeinfinity.Forexample,1.4>1,1.5>2,1.4>
1,1.5>2.
trunc_zero
.Discardanyfractionaldigitstotherightoftherightmostfractional
digitsupportedinthedestination,regardlessofsign.Forexample,ifthe
destinationisaninteger,allfractionaldigitsaretruncated.Ifthedestinationis
anotherdecimalwithasmallerscale,roundortruncatetothescalesizeofthe
destinationdecimal.Forexample,1.6>1,1.6>1.
Input
:number(dfloat),[rtype(string)]
Output
:result(decimal)
Examples
.Ifthecolumnmylink.myfloatcontainsthedfloatnumber
2.534,thefollowingfunctionreturnsthedecimalnumber00000002.54.
DFloatToDecimal(mylink.mydec,"ceil")
Ifthecolumnmylink.myfloatcontainsthedfloatnumber2.534,the
followingfunctionreturnsthedecimalnumber00000002.53.
DFloatToDecimal(mylink.mydec,"floor")
Ifthecolumnmylink.myfloatcontainsthedfloatnumber2.534,the
followingfunctionreturnsthedecimalnumber00000002.53.
DFloatToDecimal(mylink.mydec,"trunc_zero")
Ifthecolumnmylink.myfloatcontainsthedfloatnumber2.534,the
followingfunctionreturnsthedecimalnumber00000002.53.
DFloatToDecimal(mylink.mydec,"round_inf")
DfloatToStringNoExp
Returnsthegivendfloatinitsstringrepresentationwithnoexponent,usingthe
specifiedscale.
Input
:number(dfloat),scale(string)
Output
:result(string)
Examples
.Ifthecolumnmylink.myfloatcontainsthedfloatnumber
2.534,thenthefollowingfunctionreturnsthestring00000002.50:
DfloatToStringNoExp(mylink.myfloat,2)
IsValid
Returnswhetherthegivenstringisvalidforthegiventype.Validtypesare
"date","decimal","dfloat","sfloat","int8","uint8","int16","uint16","int32",
"uint32","int64","uint64","raw","string","time","timestamp","ustring".For
datatypesofdate,time,andtimestamp,youcanoptionallyspecifyaformat
string.Theformatstringdescribestheformatthatyourinputdatauseswhenit
differsfromthedefaultformatsfordate,time,ortimestamp.Thedefaultformat
fordateis%yyyy%mm%dd.Thedefaultformatfortimeis"%hh:%mm:%ss".
Thedefaultformatfortimestampis%yyyy%mm%dd%hh:%mm:%ss".
Input
:type(string),teststring(string)[,format(string)]
Output
:result(int8)
Examples
.Ifthecolumnmylink.mystringcontainsthestring"1",thenthe
followingfunctionreturnsthevalue1.
IsValid("int8",mylink.mystring)
Ifthecolumnmylink.mystringcontainsthestring"380096.06",thenthe
followingfunctionreturnsthevalue0.
IsValid("int8",mylink.mystring)
IsValidDate
Returnswhetherthegivenvalueisvalidforthetypedate.
Input
:testdate(date)
Output
:result(int8)
Examples
.Ifthecolumnmylink.mydatecontainsthedate20110913,
thenthefollowingfunctionreturnsthevalue1.
IsValidDate(mylink.mydate)
Ifthecolumnmylink.mydatecontainsthestring"380096.06",thenthe
followingfunctionreturnsthevalue0,becausetheconvertedstringisnot
avaliddate.
IsValidDate(StringTodate(mylink.mydate))
IsValidDecimal
Returnswhetherthegivenvalueisvalidforthetypedecimal.Iftheallzerosflagis
setto0,thenanallzeroesrepresentationisnotvalid.Theallzerosflagissetto
zerobydefault.
Input
:testvalue(decimal)[,allzerosflag(uint8)]
Output
:result(int8)
Examples
.Ifthecolumnmylink.mynumcontainsthevalue310007.65,
thenthefollowingfunctionreturnsthevalue1.
IsValidDecimal(mylink.mynum)
Ifthecolumnmylink.mynumcontainsthestring"wakerobin",thenthe
followingfunctionreturnsthevalue0,becausetheconvertedstringisnot
avaliddecimal.
IsValidDecimal(StringToDecimal(mylink.mynum))
IsValidTime
Returnswhetherthegiventimeisvalidforthetypetime.
Input
:testtime(time)
Output
:result(int8)
Examples
.Ifthecolumnmylink.mytimecontainsthetime23:09:22,then
thefollowingfunctionreturnsthevalue1:
IsValidTime(mylink.mytime)
Ifthecolumnmylink.mydatecontainsthestring"IbnKayeed",thenthe
followingfunctionreturnsthevalue0,becausetheconvertedstringisnot
avalidtime.
IsValidTime(StringToTime(mylink.mytime))
IsValidTimestamp
Returnswhetherthegiventimestampisvalidforthetypetimestamp.
Input
:testtimestamp(timestamp)
Output
:result(int8)
Examples
.Ifthecolumnmylink.mytimestampcontainsthetime
2011091323:09:22,thenthefollowingfunctionreturnsthevalue1:
IsValidTimestamp(mylink.mytimestamp)
Ifthecolumnmylink.mytimestampcontainsthestring"oneoftwo",then
thefollowingfunctionreturnsthevalue0,becausetheconvertedstringis
notavalidtimestamp.
IsValidTimestamp(StringToTimestamp(mylink.mytimestamp))
RawNumAt
Returnstheintegervalueatthespecifiedindexvalueinthespecifiedrawfield.
Theindexstartsat0.
Input
:rawfield(raw),index(int32)
Output
:result(int32)
Examples
.Ifthecolumnmylink.myrawcontainsarawvaluederived
fromthestring"hello",thenthefollowingfunctionreturnstheinteger
0x68(theASCIIcodeforthecharacterh):
RawNumAt(mylink.myraw,0)
Ifthecolumnmylink.myrawcontainsarawvaluederivedfromthestring
"hello",thenthefollowingfunctionreturns0becausethespecifiedindex
isoutofrange:
RawNumAt(mylink.myraw,12)
RawToString
Returnsthegivenrawvalueasastringrepresentation.Youmustensurethatthe
rawinputvaluecontainsasequenceofbytesthatarevalidascharactersinthe
targetcharactersetinwhichtheoutputstringisused.Forexample,therawvalue
{0xE00x410x42}isnotavalidsequenceofUTF8characters,sincethelead
byte,0xE0,issupposedtobefollowedbyabyteintherange[0x80..0xBF].Ifa
rawvalue{xE0x41x42}ispassedtotheRawToStringfunction,therecouldbe
anerroriftheoutputstringisthenaccessedasifitwereencodedinUTF8.
Input
:rawfield(raw)
Output
:result(string)
Examples
.Ifthecolumnmylink.myrawcontainsthevalue{0x310x31
0x300x350x320x320x300x39},thenthefollowingfunctionreturnsthe
string"11052209".
RawNumAt(mylink.myraw)
Seq
GeneratesanumericcodevaluefromanASCIIcharacter.Youcanoptionally
specifytheallow8bitsargumenttoconvert8bitASCIIvalues.
Input
:Seq(char)
Output
:result(number)
Examples
.ThefollowingexampleoutputsthecharacterAastheASCII
code65.
Seq("A")
SeqAt
Returnsthenumericcodepointvalueofthecharacteratthespecifiedpositionin
thegivenstring.Theindexstartsat0.Ifthespecifiedindexisoutofrange,the
functionreturns0.
Input
:basestring(string),index(int32)
Output
:result(int32)
Examples
.Ifthecolumnmylink.mystringcontainsthestring"horse",then
thefollowingfunctionreturnsthevalue0x6F(thatis,theASCIIvalueof
thecharactero).
SeqAt(mylink.mystring,1)
StringToDate
Returnsadatefromthegivenstringinthegivenformat.Youdonothaveto
specifyaformatstringifyourstringcontainsadateinthedefaultformat
yyyymmdd.
Input
:string(string)[,format(string)]
Output
:result(date)
Examples
:Ifthecolumnmylink.mystringcontainsthestring
19580818,thenthefollowingfunctionreturnsthedate19580818.
StringToDate(mylink.mystring)
Ifthecolumnmylink.mystringcontainsthestring18:08:1958,thenthe
followingfunctionreturnsthedate19580818.
StringToDate(mylink.mystring,"%dd:%mm:%yyyy")
StringToDecimal
Returnsthegivenstringasadecimalrepresentation.Theargument
rtype
optionallyspecifiesaroundingtype,andissettooneofthefollowingvalues:
ceil
.Roundthesourcefieldtowardpositiveinfinity.Forexample,1.4>2,1.6
>1.
floor
.Roundthesourcefieldtowardnegativeinfinity.Forexample,1.6>1,1.4
>2.
round_inf
.Roundortruncatethesourcefieldtowardthenearestrepresentable
value,breakingtiesbyroundingpositivevaluestowardpositiveinfinityand
negativevaluestowardnegativeinfinity.Forexample,1.4>1,1.5>2,1.4>
1,1.5>2.
trunc_zero
.Discardanyfractionaldigitstotherightoftherightmostfractional
digitsupportedinthedestination,regardlessofsign.Forexample,ifthe
destinationisaninteger,allfractionaldigitsaretruncated.Ifthedestinationis
anotherdecimalwithasmallerscale,roundortruncatetothescalesizeofthe
destinationdecimal.Forexample,1.6>1,1.6>1.
Input
:string(string),[rtype(string)]
Output
:result(decimal)
Examples
.Ifthecolumnmylink.mystringcontainsthestring"19982.22",
andthetargetisdefinedashavingaprecisionof7andascaleof2,then
thefollowingfunctionreturnsthedecimal19983.22.
StringToDecimal(mylink.mystring)
Ifthecolumnmylink.mystringcontainsthestring"19982.2276",andthe
targetisdefinedashavingaprecisionof7andascaleof2,thenthe
followingfunctionreturnsthedecimal19983.23.
StringToDecimal(mylink.mystring,"ceil")
StringToRaw
Returnsastringinrawrepresentation.
Input
:string(string)
Output
:result(raw)
Examples
.Ifthecolumnmylink.mystringcontainsthestring"hello",and
thetargetcolumnisdefinedasbeingoftypeBinarythenthefollowing
functionreturnsthevalue{0x680x650x6C0x6C0x6F}.
StringToRaw(mylink.mystring)
StringToTime
Returnsatimerepresentationofthegivenstring.
Input
:string(string),[format(string)]
Output
:result(time)
Examples
:Ifthecolumnmylink.mystringcontainsthestring"20:06:58",
thenthefunctionreturnsatimeof20:06:58.
StringToTime(mylink.mystring)
Ifthecolumnmylink.mystringcontainsthestring"20:6:58",thenthe
functionreturnsatimeof20:06:58.
StringToTime(mylink.mystring,"%(h,s):$(n,s):$(s,s)")
StringToTimestamp
Returnsatimerepresentationofthegivenstring.
Input
:string(string)[format(string)]
Output
:result(time)
Examples
:Ifthecolumnmylink.mystringcontainsthestring
"1958080820:06:58",thenthefunctionreturnsthetimestamp
1958080820:06:58.
StringToTimestamp(mylink.mystring)
Ifthecolumnmylink.mystringcontainsthestring"8/8/195820:6:58",
thenthefunctionreturnsthetimestamp1958080820:06:58.
StringToTimestamp(mylink.mystring,
"%(d,s)/%(m,s)/%yyyy%(h,s):$(n,s):$(s,s)")
StringToUstring
Returnsaustringfromthegivenstring,optionallyusingthespecifiedmap
(otherwiseusesprojectdefault).
Input
:string(string),[mapname(string)]
Output
:result(ustring)
Examples
:Ifthecolumnmylink.mystringcontainsthestring"11052009",
thenthefollowingfunctionreturnstheustring"11052009"
StringToUstring(mylink.mystring)
TimestampToDate
Returnsadatefromthegiventimestamp.
Input
:timestamp(timestamp)
Output
:result(date)
Examples
:Ifthecolumnmylink.mytimestampcontainsthetimestamp
1958081820:06:58,thenthefollowingfunctionreturnsthedate
19580818:
TimestampToDate(mylink.mytimestamp)
TimestampToDecimal
Returnsthegiventimestampasapackeddecimal.Youcanoptionallyspecifya
formatstringthatspecifieshowthetimestampisstoredinthedecimalnumber.
Thedefaultformatstringis"%yyyy%mm%dd%hh%nn%ss",so,forexample,
thetimestamp2009082514:03:22isstoredasthedecimalnumber
20090825140322.Formatstringscanonlyspecifyaformatthatcontainsnumbers.
Forexample,youcannotspecifyaformatstringsuchas
"%yyyy/%mm/%dd%hh:%nn:%ss",becausetheslashcharacter(/)andthecolon
character(:)cannotbestoredinapackeddecimalvalue.Thefollowingtokensare
validforconversionstoorfromdecimalvalues:
%yyyy(fourdigityear)
%yy(twodigityear)
%NNNNyy(twodigityearwithcutoff)
%mm(twodigitmonth)
%dd(twodigitdayofmonth)
%ddd(threedigitdayofyear)
%hh(twodigithoursusing24hourclock)
%nn(twodigitminutes)
%ss(twodigitseconds)
%ss.
N
(twodigitseconds,plusthenumberoffractionaldigitsallowed.The
numberoffractionaldigitsisfromonetosixinclusive).
Theliteraldigits0to9arealsovalid.
Ifyourspecifiedformatincludesmicroseconds(forexample,%ss.4),thenthe
positionofthedecimalpointisinferredinthedecimalvalue.Thepositionofthe
decimalpointdoesnothavetocoincidewiththespecifiedscaleofthedecimal
(forexamplescale=4).
Input
:timestamp(timestamp)[,format(string)]
Output
:result(decimal)
Examples
:Ifthecolumnmylink.mytimestampcontainsthetimestamp
1958081820:06:58,thenthefollowingfunctionreturnsthedecimal
value19580818200658:
TimestampToDecimal(mylink.mytimestamp)
Ifthecolumnmylink.mytimestampcontainsthetimestamp19580818
20:06:58,thenthefollowingfunctionreturnsthedecimalvalue
200658580818:
TimestampToDecimal(mylink.mytimestamp,"%hh%nn%ss%yy%mm%dd")
TimestampToString
Returnsastringfromthegiventimestamp.
Input
:timestamp(timestamp)[format(string)]
Output
:result(string)
Examples
:Ifthecolumnmylink.mytimestampcontainsthetimestamp
1958081820:06:58,thenthefunctionreturnsthestring
"1958081820:06:58".
TimestampToString(mylink.mytimestamp)
Ifthecolumnmylink.mytimestampcontainsthetimestamp
1958081820:06:58,thenthefunctionreturnsthestring"18/08/1958
20:06:58":
TimestampToString(mylink.mytimestamp,"%dd/%mm/%yyyy
%hh:$nn:$ss")
TimestampToTime
Returnsthestringrepresentationofthegiventimestamp.
Input
:timestamp(timestamp)
Output
:result(time)
Examples
:Ifthecolumnmylink.mytimestampcontainsthetimestamp
1958081820:06:58,thenthefunctionreturnsthetime20:06:58:
TimestampToTime(mylink.mytimestamp)
TimeToString
Returnsastringfromthegiventime.
Input
:timestamp(timestamp)[format(string)]
Output
:result(time)
Examples
:Ifthecolumnmylink.mytimecontainsthetime20:06:58,then
thefollowingfunctionreturnsthestring"20:06:58":
TimeToString(mylink.mytime)
Ifthecolumnmylink.mytimecontainsthetime20:06:58,thenthe
followingfunctionreturnsthestring"58:06:20":
TimeToString(mylink.mytime,"%ss:$nn:$hh")
TimeToDecimal
Returnsthegiventimeasapackeddecimal.Youcanoptionallyspecifyaformat
stringthatspecifieshowthetimeisstoredinthedecimalnumber.Thedefault
formatstringis"%hh%nn%ss",so,forexample,thetime14:03:22isstoredas
thedecimalnumber140322.Formatstringscanonlyspecifyaformatthat
containsnumbers.Forexample,youcannotspecifyaformatstringsuchas
"%hh:%nn:%ss",becausethecoloncharacter(:)cannotbestoredinapacked
decimalvalue.Thefollowingtokensarevalidforconversionstoorfromdecimal
values:
%hh(twodigithoursusing24hourclock)
%nn(twodigitminutes)
%ss(twodigitseconds)
%ss.
N
(twodigitseconds,plusthenumberoffractionaldigitsallowed.The
numberoffractionaldigitsisfromonetosixinclusive).
Theliteraldigits0to9arealsovalid.
Ifyourspecifiedformatincludesmicroseconds(forexample,%ss.4),thenthe
positionofthedecimalpointisinferredinthedecimalvalue.Thepositionofthe
decimalpointdoesnothavetocoincidewiththespecifiedscaleofthedecimal
(forexamplescale=4).
Input
:time(time)[,format(string)]
Output
:result(decimal)
Examples
:Ifthecolumnmylink.mytimecontainsthetime20:06:58,then
thefollowingfunctionreturnsthedecimalvalue200658:
TimeToDecimal(mylink.mytime)
Ifthecolumnmylink.mytimecontainsthetime20:06:58,thenthe
followingfunctionreturnsthedecimalvalue580620:
TimeToDecimal(mylink.mytime,"%ss%nn%hh")
UstringToString
Returnsastringfromthegivenustring,optionallyusingthespecifiedmap
(otherwiseusesprojectdefault).
Input
:string(ustring)[,mapname(string)]
Output
:result(string)
Examples
:Ifthecolumnmylink.myustringcontainstheustring
"11052009",thenthefollowingfunctionreturnsthestring"11052009":
UstringToString(mylink.myustring)
Utilityfunctions
Theutilityfunctionshaveavarietyofpurposes.
ThefollowingfunctionsareavailableintheUtilitycategory(squarebracketsindicatean
argumentisoptional):
GetEnvironment
Returnsthevalueofthegivenenvironmentvariable.
Input
:environmentvariable(string)
Output
:result(string)
Examples
.Ifyouqueriedthevalueoftheenvironmentvariablename
APT_RDBMS_COMMIT_ROWSthenthefollowingderivationmight
returnthevalue"2048".
GetEnvironment("APT_RDBMS_COMMIT_ROWS")
GetSavedInputRecord
Thisfunctionisusedtoimplementtheaggregatingofdataontheinputlinkofa
Transformerstage.YoucalltheGetsSavedInputRecordfunctiontoaretrievea
copyofaninputrowthatyouhavepreviouslysavedtoacachearea.Thefunction
retrievesthenextinputrowfromthecache(intheorderinwhichtheyweresaved
tothecache)andmakesitthecurrentinputrow.Theretrievedrowoverrideswhat
wasthecurrentinputrow,andsoanyderivationusinganinputcolumnvaluewill
usethevalueofthatcolumnintheinputrowretrievedfromthecache,notwhat
waspreviouslythecurrentinputrow.YoumustcallGetSavedInputRecordina
loopvariablederivation,youcannotcallitfromanywhereelse.Forexample,you
cannotcallGetSavedInputRecordintheLoopConditionexpression.Youcancall
GetSavedInputRecord,multipletimesandretrievethenextcachedrowoneach
call.UsetheSaveInputRecordfunctiontostorerowstothecache.
GetSavedInputRecordreturnsthecacheindexnumberoftherecordretrieved
fromthatcache.
Input
:
Output
:cache_index_number
Examples
.Thefollowingexampleisthederivationofaloopvariable
namedSavedRecordIndexinaTransformerstage:
SavedRecordIndex:GetSavedInputRecord()
NextSKChain
ThisfunctionisusedintheSlowlyChangingDimensionstageasthederivation
foracolumnwiththeSKChainpurposecode.Thefunctionisnotusedinthe
Transformerstage.NextSKChainreturnsthevalueofthesurrogatekeycolumn
forthenextrowinthechain,orthevaluethathasbeenspecifiedtouseforthe
lastrecordinthechain.
Input
:last_chain_value(int64)
Output
:surrogate_key_value(int64)
Examples
.Ifyouspecifythefollowingfunctioninthederivationfieldfor
aSKChaincolumninanSCDstage,theoutputcolumncontainsthevalue
ofthesurrogatekeyofthenextrecordinthechain,orthevalue180858if
thisisthelastrowinthechain.
NextSKChain(180858)
NextSurrogateKey
Returnsthevalueofthenextsurrogatekey.Youmusthavepreviouslysetupyour
surrogatekeysource,anddefineddetailsontheSurrogateKeytaboftheStage
pageoftheTransformerpropertieswindow.
Input
:
Output
:surrogate_key_value(int64)
Example
.Thederivationfieldofyoursurrogatekeycolumncontainsthe
followingfunction:
NextSurrogateKey()
PrevSKChain
ThisfunctionisusedintheSlowlyChangingDimensionstageasthederivation
foracolumnwiththeSKChainpurposecode.Thefunctionisnotusedinthe
Transformerstage.PrevSKChainReturnsthevalueofthesurrogatekeycolumn
forthepreviousrecordinthechain,orthevaluethathasbeenspecifiedtousefor
thefirstrecordinthechain.
Input
:first_chain_value(int64)
Output
:surrogate_key_value(int64)
Examples
.Ifyouspecifythefollowingfunctioninthederivationfieldfor
aSKChaincolumninanSCDstage,theoutputcolumncontainsthevalue
ofthesurrogatekeyofthepreviousrecordinthechain,orthevalue
121060ifthisisthelastrowinthechain.
PrevSKChain(121060)
SaveInputRecord
Thisfunctionisusedtoimplementtheaggregatingofdataontheinputlinkofa
Transformerstage.YoucalltheSaveInputRecordfunctiontosaveacopyofthe
currentinputrowtoacachearea.Thefunctionreturnsthecountofrecordsinthe
cache,startingfrom1.YoucancallSaveInputRecordfromwithinthederivation
ofastagevariableintheTransformerstage.YoucancallSaveInputRecord
multipletimesforthesameinputrow.Thefirstcalladdstheinputrowtothe
cacheandeachsubsequentcalladdsaduplicateofthatsameinputrowintothe
cache.So,forexample,ifSaveInputRecordiscalledthreetimesforoneinput
record,thenthecachewillcontainthreerows,eachidenticaltotheoriginalinput
row.UsetheGetSavedInputRecordfunctiontoretrievetherowsthatyouhave
stored.
Input
:
Output
:cache_record_count(int64)
Examples
.Thefollowingexampleisthederivationofastagevariable
namedNumSavedRecordsinaTransformerstage:
NumSavedRecords:SaveInputRecord()