【Datastage】函數大全


一、 類型轉換函數

類型轉換函數用於更改參數的類型。

以下函數位於表達式編輯器的“類型轉換”類別中。方括號表示參數是可選的。缺省日期格式為 %yyyy-%mm-%dd。

以下示例按照 Transformer 階段的“派生”字段中所示來顯示這些函數。

1. Char

根據其數字代碼值生成一個 ASCII 字符。您可以指定 allow8bits 參數來轉換 8 位 ASCII 值(可選)。

· 輸入:code (number),[allow8bits]

· 輸出:result (char)

· 示例。以下示例將 ASCII 碼 65 輸出為字符 A。

Char(65)

2. DateToString

返回給定日期的字符串表示。可以指定字符串的格式(可選)。

· 輸入:date (date),[format (string)]

· 輸出:result (string)

· 示例。以下示例會將 mylink.mydate 列中包含的日期輸出為字符串。如果 mylink.mydate 包含日期 2009 年 8 月 18 日,那么輸出字符串為“2009-08-18”:

DateToString(mylink.mydate)

以下示例會將 mylink.mydate 列中包含的日期輸出為 dd:mm:yyyy 格式的字符串。如果 mylink.mydate 包含日期 2009 年 8 月 18 日,那么輸出字符串為“18:08:2009”:

DateToString(mylink.mydate, "%dd:%mm:%yyyy")

3. DateToDecimal

將給定的日期返回為壓縮十進制值。如果您的目標十進制數指定了小數位,那么部分日期會在小數點后顯示。您可以指定格式字符串來指定如何以十進制數形式存儲日期(可選)。缺省格式字符串為“%yyyy%mm%dd”,因此,日期 2009-08-25 將存儲為十進制數 20090825。格式字符串只能指定包含數字的格式。例如,不能指定諸如“%yyyy-%mm-%dd”之類的格式字符串,這是因為壓縮十進制值中不能存儲連字符 (-)。以下標記對於與十進制值之間的轉換有效:

%yyyy(四位數表示的年份)

%yy(兩位數表示的年份)

%NNNNyy(截斷的兩位數年份)

%mm(兩位數表示的月份)

%dd(兩位數表示的一月中的第幾天)

%ddd(三位數表示的一年中的第幾天)

字面值數字 0 到 9 都有效。

· 輸入:basedate (date) [, format (string)]

· 輸出:converted_date (decimal)

· 示例。如果 mylink.basedate 列包含日期 2012-08-18,那么以下函數會將日期存儲為十進制數 18082012:

DateToDecimal (mylink.basedate, "%dd%mm%yyyy")

如果 mylink.basedate 列包含日期 2012-08-18,並且目標列的長度為 10,小數位為 2,那么以下函數會將日期存儲為十進制數 201208.18:

DateToDecimal (mylink.basedate)

4. DecimalToDate

將給定的壓縮十進制數返回為日期。在將十進制數轉換為日期時,會忽略其符號和小數位。您可以指定格式字符串來指定如何以十進制數形式存儲日期(可選)。缺省格式字符串為“%yyyy%mm%dd”,因此,日期 2009-08-25 將存儲為十進制數 20090825。格式字符串只能指定包含數字的格式。例如,不能指定諸如“%yyyy-%mm-%dd”之類的格式字符串,這是因為壓縮十進制值中不能存儲連字符 (-)。以下標記對於與十進制值之間的轉換有效:

%yyyy(四位數表示的年份)

%yy(兩位數表示的年份)

%NNNNyy(截斷的兩位數年份)

%mm(兩位數表示的月份)

%dd(兩位數表示的一月中的第幾天)

%ddd(三位數表示的一年中的第幾天)

字面值數字 0 到 9 都有效。

· 輸入:basedec (decimal) [, format (string)]

· 輸出:date

· 示例。如果 mylink.mydecdata 列包含值 18082012,那么以下函數將返回日期 2012-08-18:

DecimalToDate (mylink.basedate, "%dd%mm%yyyy")

如果 mylink.mydecdata 列包含值 -201208.18,那么以下函數將返回日期 2012-08-18:

DecimalToDate (mylink.basedate)

5. DecimalToDecimal

以具有目標列定義中指定精度和小數位的十進制表示形式返回給定的十進制數。參數 rtype 指定取整類型,並設置為以下某個值(可選):

ceil。向正無窮方向對源字段取整。例如,1.4 -> 2,-1.6 -> -1。

floor。向負無窮方向對源字段取整。例如,1.6 -> 1,-1.4 -> -2。

round_inf。通過向正無窮方向對正數值取整並向負無窮方向對負數值取整,向最接近的可表示值對源字段進行取整或截斷。例如,1.4 -> 1,1.5 -> 2,-1.4 -> -1,-1.5 -> -2。

trunc_zero。不論符號如何,廢棄位於目標數據支持的最右側小數位右側的任何小數位。例如,如果目標數據是整數,那么截斷所有小數位。如果目標數據是另一個具有更少小數位的小數,那么按照目標小數的小數位數進行取整或截斷。例如,1.6 -> 1,-1.6 -> -1。

· 輸入:decimal (decimal) [,rtype (string)]

· 輸出:result (decimal)

· 示例。如果 mylink.mydec 列包含十進制數 2.5345,那么以下函數將返回十進制數 00000002.54。

DecimalToDecimal(mylink.mydec,"ceil")

以下函數將返回十進制數 00000002.53。

DecimalToDecimal(mylink.mydec,"floor")

以下函數將返回十進制數 00000002.53。

DecimalToDecimal(mylink.mydec,"trunc_zero")

以下函數將返回十進制數 00000002.53。

DecimalToDecimal(mylink.mydec,"round_inf")

在所有這些示例中,目標十進制的長度為 10,小數位為 2。

6. DecimalToDFloat

以 dfloat 表示形式返回給定的十進制數。參數“fix_zero”指定所有零十進制值均視為有效(缺省情況下,全部由零組成的十進制數將視為無效)(可選)。

· 輸入:decimal (decimal) [,"fix_zero"]

· 輸出:result (dfloat)

· 示例。如果 mylink.mydec 列包含十進制數 00000004.00,那么以下函數將返回 dfloat 數 4.00000000000000000E+00。

DecimalToDFloat(mylink.mydec,"fix_zero")

如果 mylink.mydec 列包含十進制數 00012344.00,那么以下函數將返回 dfloat 數 1.23440000000000000E+04。

DecimalToDFloat(mylink.mydec,"fix_zero")

如果 mylink.mydec 列包含十進制數 00012344.120,那么以下函數將返回 dfloat 數 1.23441200000000010E+04。

DecimalToDFloat(mylink.mydec,"fix_zero")

如果 mylink.mydec 列包含十進制數 00012344.120,那么以下函數將返回 dfloat 數 1.23441200000000010E+04。

DecimalToDFloat(mylink.mydec)

如果 mylink.mydec 列包含十進制數 00012344.000,那么以下函數將返回 dfloat 數 1.23440000000000000E+04。

DecimalToDFloat(mylink.mydec)

7. DecimalToString

將給定的十進制數返回為字符串。參數“fix_zero”指定所有零十進制值均視為有效(缺省情況下,全部由零組成的十進制數將視為無效)(可選)。這包括壓縮十進制表示的符號位都為 0 以及都為內容數字的情況。該特性只在“fix_zero”為 true 時才視為有效。

· 輸入:decimal (decimal) [,"fix_zero"]

· 輸出:result (string)

· 示例。如果 mylink.mydec 列包含十進制數 00000004.00,那么以下函數將返回字符串“4”:

DecimalToString(mylink.mydec,"suppress_zero")

如果 mylink.mydec 列包含十進制數 00000004.00,那么以下函數將返回字符串“0000000000000000000000000004.0000000000”。

DecimalToString(mylink.mydec,"fix_zero")

如果 mylink.mydec 列包含十進制數 00012344.00。那么以下函數將返回字符串“12344”。

DecimalToString(mylink.mydec,"suppress_zero")

如果 mylink.mydec 列包含十進制數 00012344.00,那么以下函數將返回字符串“0000000000000000000000012344.0000000000”。

DecimalToString(mylink.mydec,"fix_zero")

如果 mylink.mydec 列包含十進制數 00012344.120,那么以下函數將返回字符串“0000000000000000000000012344.1200000000”。

DecimalToString(mylink.mydec,"fix_zero")

如果 mylink.mydec 列包含十進制數 00012344.120,那么以下函數將返回字符串“12344.12”:

DecimalToString(mylink.mydec,"suppress_zero")

如果 mylink.mydec 列包含十進制數 00012344.120,那么以下函數將返回字符串“0000000000000000000000012344.120000000”。

DecimalToString(mylink.mydec)

如果 mylink.mydec 列包含十進制數 00012344.000,那么以下函數將返回字符串“0000000000000000000000012344.0000000000”。

DecimalToString(mylink.mydec)

8. DecimalToTime

將給定的壓縮十進制數返回為時間。您可以指定格式字符串來指定如何以十進制數形式存儲時間(可選)。缺省格式字符串為“%hh%nn%ss”,因此,時間 14:03:22 將存儲為十進制數 140322。格式字符串只能指定包含數字的格式。例如,不能指定諸如“%hh:%nn:%ss”之類的格式字符串,這是因為壓縮十進制值中不能存儲冒號 (:)。以下標記對於與十進制值之間的轉換有效:

%hh(使用 24 小時制的以兩位數表示的小時數)

%nn(兩位數表示的分鍾數)

%ss(兩位數表示的秒數)

%ss.N(由兩位數表示的秒數加上所允許的小數位數。小數位數從 1 到 6,包括 1 和 6)。

字面值數字 0 到 9 都有效。

如果指定的格式包含微秒(例如,%ss.4),那么將在十進制值中推斷小數點的位置。小數點的位置不必與指定的十進制小數位一致(例如,小數位 = 4)。

· 輸入:time (time) [, format (string)]

· 輸出:result (decimal)

· 示例:如果 mylink.mytimedec 列包含十進制值 200658,那么以下函數將返回時間 20:06:58:

DecimalToTime(mylink.mytimedec)

如果 mylink.mytimedec 列包含十進制值 580620,那么以下函數將返回時間 20:06:58:

DecimalToTime(mylink.mytimedec, "%ss%nn%hh")

9. DecimalToTimestamp

將給定的壓縮十進制數返回為時間戳記。您可以指定格式字符串來指定如何以十進制數形式存儲時間戳記(可選)。缺省格式字符串為“%yyyy%mm%dd%hh%nn%ss”,因此,時間戳記 2009-08-25 14:03:22 將存儲為十進制數 20090825140322。格式字符串只能指定包含數字的格式。例如,不能指定諸如“%yyyy/%mm/%dd%hh:%nn:%ss”之類的格式字符串,這是因為壓縮十進制值中不能存儲斜杠 (/) 和冒號 (:)。以下標記對於與十進制值之間的轉換有效:

%yyyy(四位數表示的年份)

%yy(兩位數表示的年份)

%NNNNyy(截斷的兩位數年份)

%mm(兩位數表示的月份)

%dd(兩位數表示的一月中的第幾天)

%ddd(三位數表示的一年中的第幾天)

%hh(使用 24 小時制的以兩位數表示的小時數)

%nn(兩位數表示的分鍾數)

%ss(兩位數表示的秒數)

%ss.N(由兩位數表示的秒數加上所允許的小數位數。小數位數從 1 到 6,包括 1 和 6)。

字面值數字 0 到 9 都有效。

如果指定的格式包含微秒(例如,%ss.4),那么將在十進制值中推斷小數點的位置。小數點的位置不必與指定的十進制小數位一致(例如,小數位 = 4)。

· 輸入:timestamp (timestamp) [, format (string)]

· 輸出:result (decimal)

· 示例:如果 mylink.mytimestampdec 列包含值 19580818200658,那么以下函數將返回時間戳記 1958–08–18 20:06:58:

DecimalToTimestamp(mylink.mytimestampdec)

如果 mylink.mytimestampdec 列包含十進制值 200658580818,那么以下函數將返回時間戳記 1958–08–18 20:06:58:

DecimalToTimestamp(mylink.mytimestampdec, "%hh%nn%ss%yy%mm%dd")

10. DFloatToDecimal

以十進制表示形式返回給定的 dfloat。參數 rtype 指定取整類型,並設置為以下某個值(可選):

ceil。向正無窮方向對源字段取整。例如,1.4 -> 2,-1.6 -> -1。

floor。向負無窮方向對源字段取整。例如,1.6 -> 1,-1.4 -> -2。

round_inf。通過向正無窮方向對正數值取整並向負無窮方向對負數值取整,向最接近的可表示值對源字段進行取整或截斷。例如,1.4 -> 1,1.5 -> 2,-1.4 -> -1,-1.5 -> -2。

trunc_zero。不論符號如何,廢棄位於目標數據支持的最右側小數位右側的任何小數位。例如,如果目標數據是整數,那么截斷所有小數位。如果目標數據是另一個具有更少小數位的小數,那么按照目標小數的小數位數進行取整或截斷。例如,1.6 -> 1,-1.6 -> -1。

· 輸入:number (dfloat), [rtype (string)]

· 輸出:result (decimal)

· 示例。如果 mylink.myfloat 列包含 dfloat 數 2.534,那么以下函數將返回十進制數 00000002.54。

DFloatToDecimal(mylink.mydec,"ceil")

如果 mylink.myfloat 列包含 dfloat 數 2.534,那么以下函數將返回十進制數 00000002.53。

DFloatToDecimal(mylink.mydec,"floor")

如果 mylink.myfloat 列包含 dfloat 數 2.534,那么以下函數將返回十進制數 00000002.53。

DFloatToDecimal(mylink.mydec,"trunc_zero")

如果 mylink.myfloat 列包含 dfloat 數 2.534,那么以下函數將返回十進制數 00000002.53。

DFloatToDecimal(mylink.mydec,"round_inf")

11. DfloatToStringNoExp

使用指定小數位,以無指數的字符串表示形式返回給定的 dfloat。

· 輸入:number (dfloat), scale (string)

· 輸出:result (string)

· 示例。如果 mylink.myfloat 列包含 dfloat 數 2.534,那么以下函數將返回字符串 00000002.50:

DfloatToStringNoExp(mylink.myfloat,2)

IsValid

返回給定的字符串對於給定類型是否有效。有效類型包括“date”、“decimal”、“dfloat”、“sfloat”、“int8”、“uint8”、“int16”、“uint16”、“int32”、“uint32”、“int64”、“uint64”、“raw”、“string”、“time”、“timestamp”和“ustring”。對於數據類型 date、time 和 timestamp,您可以指定格式字符串(可選)。格式字符串描述輸入數據的格式與 date、time 或 timestamp 的缺省格式不同時,輸入數據所使用的格式。date 的缺省格式為“%yyyy-%mm-%dd”。time 的缺省格式為“%hh:%mm:%ss”。timestamp 的缺省格式為“%yyyy-%mm-%dd %hh:%mm:%ss”。

· 輸入:type (string), teststring (string) [, format (string)]

· 輸出:result (int8)

· 示例。如果 mylink.mystring 列包含字符串“1”,那么以下函數將返回值 1。

IsValid("int8",mylink.mystring)

如果 mylink.mystring 列包含字符串“380096.06”,那么以下函數將返回值 0。

IsValid("int8",mylink.mystring)

12. IsValidDate

返回給定的值是否為有效的 date 類型。

· 輸入:testdate (date)

· 輸出:result (int8)

· 示例。如果 mylink.mydate 列包含日期 2011-09-13,那么以下函數將返回值 1。

IsValidDate(mylink.mydate)

如果 mylink.mydate 列包含字符串“380096.06”,那么以下函數將返回值 0,這是因為轉換后的字符串不是有效的 date 類型。

IsValidDate(StringTodate (mylink.mydate))

IsValidDecimal

返回給定的值是否為有效的 decimal 類型。如果將 allzerosflag 設置為 0,那么全零表示將視為無效。缺省情況下,allzerosflag 設置為 0。

· 輸入:testvalue (decimal) [, allzerosflag (uint8)]

· 輸出:result (int8)

· 示例。如果 mylink.mynum 列包含值 310007.65,那么以下函數將返回值 1。

IsValidDecimal(mylink.mynum)

如果 mylink.mynum 列包含字符串“wake-robin”,那么以下函數將返回值 0,這是因為轉換后的字符串不是有效的 decimal 類型。

IsValidDecimal(StringToDecimal (mylink.mynum))

13. IsValidTime

返回給定的時間是否為有效的 time 類型。

· 輸入:testtime (time)

· 輸出:result (int8)

· 示例。如果 mylink.mytime 列包含時間 23:09:22,那么以下函數將返回值 1:

IsValidTime(mylink.mytime)

如果 mylink.mydate 列包含字符串“IbnKayeed”,那么以下函數將返回值 0,這是因為轉換后的字符串不是有效的 time 類型。

IsValidTime(StringToTime (mylink.mytime))

14. IsValidTimestamp

返回給定的時間戳記是否為有效的 timestamp 類型。

· 輸入:testtimestamp (timestamp)

· 輸出:result (int8)

· 示例。如果 mylink.mytimestamp 列包含時間 2011-09-13 23:09:22,那么以下函數將返回值 1:

IsValidTimestamp(mylink.mytimestamp)

如果 mylink.mytimestamp 列包含字符串“one of two”,那么以下函數將返回值 0,這是因為轉換后的字符串不是有效的 timestamp 類型。

IsValidTimestamp(StringToTimestamp (mylink.mytimestamp))

15. RawNumAt

返回指定 raw 字段中指定索引值的整數值。索引從 0 開始。

· 輸入:rawfield (raw), index (int32)

· 輸出:result (int32)

· 示例。如果 mylink.myraw 列包含從字符串“hello”派生的 raw 值,那么以下函數將返回整數 0x68(字符 h 對應的 ASCII 碼值):

RawNumAt(mylink.myraw, 0)

如果 mylink.myraw 列包含從字符串“hello”派生的 raw 值,那么以下函數將返回 0,這是因為指定的索引超出了范圍:

RawNumAt(mylink.myraw, 12)

16. RawToString

以字符串表示形式返回給定的 raw 值。必須確保 raw 輸入值包含一個字節序列,這些字節在使用輸出字符串的目標字符集中為有效字符。例如,由於前導字節 0xE0 后應有范圍在 [0x80..0xBF] 中的字節,因此 raw 值 { 0xE0 0x41 0x42 } 不是有效的 UTF-8 字符序列。如果將 raw 值 { xE0 x41 x42 } 傳遞給 RawToString 函數,那么在隨后訪問輸出字符串時可能會出錯,就像使用 UTF-8 對其進行編碼一樣。

· 輸入:rawfield (raw)

· 輸出:result (string)

· 示例。如果 mylink.myraw 列包含值 { 0x31 0x31 0x30 0x35 0x32 0x32 0x30 0x39 },那么以下函數將返回字符串“11052209”。

RawNumAt(mylink.myraw)

17. Seq

根據 ASCII 字符生成數字代碼值。您可以指定 allow8bits 參數來轉換 8 位 ASCII 值(可選)。

· 輸入:Seq (char)

· 輸出:result (number)

· 示例。以下示例將字符 A 輸出為 ASCII 碼 65。

Seq("A")

18. SeqAt

返回給定字符串中指定位置上字符的數字代碼點值。索引從 0 開始。如果指定的索引超出范圍,那么該函數將返回 0。

· 輸入:basestring (string),index (int32)

· 輸出:result (int32)

· 示例。如果 mylink.mystring 列包含字符串“horse”,那么以下函數將返回值 0x6F(即,字符 o 對應的 ASCII 碼值)。

SeqAt(mylink.mystring, 1)

19. StringToDate

以給定的格式返回給定字符串表示的日期。如果字符串包含缺省格式 yyyy-mm-dd 的日期,那么不必指定格式字符串。

· 輸入:string (string) [,format (string)]

· 輸出:result (date)

· 示例:如果 mylink.mystring 列包含字符串“1958–08–18”,那么以下函數將返回日期 1958–08–18。

StringToDate(mylink.mystring)

如果 mylink.mystring 列包含字符串“18:08:1958”,那么以下函數將返回日期 1958–08–18

StringToDate(mylink.mystring,"%dd:%mm:%yyyy")

20. StringToDecimal

以十進制表示形式返回給定的字符串。參數 rtype 指定取整類型,並設置為以下某個值(可選):

ceil。向正無窮方向對源字段取整。例如,1.4 -> 2,-1.6 -> -1。

floor。向負無窮方向對源字段取整。例如,1.6 -> 1,-1.4 -> -2。

round_inf。通過向正無窮方向對正數值取整並向負無窮方向對負數值取整,向最接近的可表示值對源字段進行取整或截斷。例如,1.4 -> 1,1.5 -> 2,-1.4 -> -1,-1.5 -> -2。

trunc_zero。不論符號如何,廢棄位於目標數據支持的最右側小數位右側的任何小數位。例如,如果目標數據是整數,那么截斷所有小數位。如果目標數據是另一個具有更少小數位的小數,那么按照目標小數的小數位數進行取整或截斷。例如,1.6 -> 1,-1.6 -> -1。

· 輸入:string (string),[rtype (string)]

· 輸出:result (decimal)

· 示例。如果 mylink.mystring 列包含字符串“19982.22”,並且目標列定義為精度為 7,小數位為 2,那么以下函數將返回十進制數 19983.22。

StringToDecimal(mylink.mystring)

如果 mylink.mystring 列包含字符串“19982.2276”,並且目標列定義為精度為 7,小數位為 2,那么以下函數將返回十進制數 19983.23。

StringToDecimal(mylink.mystring,"ceil")

21. StringToRaw

以 raw 表示形式返回字符串。

· 輸入:string (string)

· 輸出:result (raw)

· 示例。如果 mylink.mystring 列包含字符串“hello”,並且目標列定義為二進制類型,那么以下函數將返回值 { 0x68 0x65 0x6C 0x6C 0x6F }。

StringToRaw(mylink.mystring)

22. StringToTime

返回給定字符串的時間表示。

· 輸入:string (string),[format (string)]

· 輸出:result (time)

· 示例:如果 mylink.mystring 列包含字符串“20:06:58”,那么該函數將返回時間 20:06:58。

StringToTime(mylink.mystring)

如果 mylink.mystring 列包含字符串“20:6:58”,那么該函數將返回時間 20:06:58。

StringToTime(mylink.mystring,"%(h,s):$(n,s):$(s,s)")

23. StringToTimestamp

返回給定字符串的時間表示。

· 輸入:string (string) [format (string)]

· 輸出:result (time)

· 示例:如果 mylink.mystring 列包含字符串“1958–08–08 20:06:58”,那么該函數將返回時間戳記 1958–08–08 20:06:58。

StringToTimestamp(mylink.mystring)

如果 mylink.mystring 列包含字符串“8/ 8/1958 20: 6:58”,那么該函數將返回時間戳記 1958–08–08 20:06:58。

StringToTimestamp(mylink.mystring, "%(d,s)/%(m,s)/%yyyy%(h,s):$(n,s):$(s,s)")

24. StringToUstring

返回給定字符串的 ustring,可以選擇使用指定的映射(否則,將使用項目缺省值)。

· 輸入:string (string),[mapname(string)]

· 輸出:result (ustring)

· 示例:如果 mylink.mystring 列包含字符串“11052009”,那么以下函數將返回 ustring“11052009”

StringToUstring(mylink.mystring)

25. TimestampToDate

返回給定時間戳記的日期。

· 輸入:timestamp (timestamp)

· 輸出:result (date)

· 示例:如果 mylink.mytimestamp 列包含時間戳記 1958–08–18 20:06:58,那么以下函數將返回日期 1958–08–18:

TimestampToDate(mylink.mytimestamp)

26. TimestampToDecimal

將給定的時間戳記返回為壓縮十進制。您可以指定格式字符串來指定如何以十進制數形式存儲時間戳記(可選)。缺省格式字符串為“%yyyy%mm%dd%hh%nn%ss”,因此,時間戳記 2009-08-25 14:03:22 將存儲為十進制數 20090825140322。格式字符串只能指定包含數字的格式。例如,不能指定諸如“%yyyy/%mm/%dd%hh:%nn:%ss”之類的格式字符串,這是因為壓縮十進制值中不能存儲斜杠 (/) 和冒號 (:)。以下標記對於與十進制值之間的轉換有效:

%yyyy(四位數表示的年份)

%yy(兩位數表示的年份)

%NNNNyy(截斷的兩位數年份)

%mm(兩位數表示的月份)

%dd(兩位數表示的一月中的第幾天)

%ddd(三位數表示的一年中的第幾天)

%hh(使用 24 小時制的以兩位數表示的小時數)

%nn(兩位數表示的分鍾數)

%ss(兩位數表示的秒數)

%ss.N(由兩位數表示的秒數加上所允許的小數位數。小數位數從 1 到 6,包括 1 和 6)。

字面值數字 0 到 9 都有效。

如果指定的格式包含微秒(例如,%ss.4),那么將在十進制值中推斷小數點的位置。小數點的位置不必與指定的十進制小數位一致(例如,小數位 = 4)。

· 輸入:timestamp (timestamp) [, format (string)]

· 輸出:result (decimal)

· 示例:如果 mylink.mytimestamp 列包含時間戳記 1958–08–18 20:06:58,那么以下函數將返回十進制值 19580818200658:

TimestampToDecimal(mylink.mytimestamp)

如果 mylink.mytimestamp 列包含時間戳記 1958–08–18 20:06:58,那么以下函數將返回十進制值 200658580818:

TimestampToDecimal(mylink.mytimestamp, "%hh%nn%ss%yy%mm%dd")

27. TimestampToString

返回給定時間戳記的字符串。

· 輸入:timestamp (timestamp) [format (string)]

· 輸出:result (string)

· 示例:如果 mylink.mytimestamp 列包含時間戳記 1958–08–1820:06:58,那么該函數將返回字符串“1958–08–1820:06:58”。

TimestampToString(mylink.mytimestamp)

如果 mylink.mytimestamp 列包含時間戳記 1958–08–1820:06:58,那么該函數將返回字符串“18/08/1958 20:06:58”:

TimestampToString(mylink.mytimestamp, "%dd/%mm/%yyyy %hh:$nn:$ss")

28. TimestampToTime

返回給定時間戳記的字符串表示。

· 輸入:timestamp (timestamp)

· 輸出:result (time)

· 示例:如果 mylink.mytimestamp 列包含時間戳記 1958–08–1820:06:58,那么該函數將返回時間 20:06:58:

TimestampToTime(mylink.mytimestamp)

29. TimeToString

返回給定時間的字符串。

· 輸入:timestamp (timestamp) [format (string)]

· 輸出:result (time)

· 示例:如果 mylink.mytime 列包含時間 20:06:58,那么以下函數將返回字符串“20:06:58”:

TimeToString(mylink.mytime)

如果 mylink.mytime 列包含時間 20:06:58,那么以下函數將返回字符串“58:06:20”:

TimeToString(mylink.mytime, "%ss:$nn:$hh")

30. TimeToDecimal

將給定的時間返回為壓縮十進制。您可以指定格式字符串來指定如何以十進制數形式存儲時間(可選)。缺省格式字符串為“%hh%nn%ss”,因此,時間 14:03:22 將存儲為十進制數 140322。格式字符串只能指定包含數字的格式。例如,不能指定諸如“%hh:%nn:%ss”之類的格式字符串,這是因為壓縮十進制值中不能存儲冒號 (:)。以下標記對於與十進制值之間的轉換有效:

%hh(使用 24 小時制的以兩位數表示的小時數)

%nn(兩位數表示的分鍾數)

%ss(兩位數表示的秒數)

%ss.N(由兩位數表示的秒數加上所允許的小數位數。小數位數從 1 到 6,包括 1 和 6)。

字面值數字 0 到 9 都有效。

如果指定的格式包含微秒(例如,%ss.4),那么將在十進制值中推斷小數點的位置。小數點的位置不必與指定的十進制小數位一致(例如,小數位 = 4)。

· 輸入:time (time) [, format (string)]

· 輸出:result (decimal)

· 示例:如果 mylink.mytime 列包含時間 20:06:58,那么以下函數將返回十進制值 200658:

TimeToDecimal(mylink.mytime)

如果 mylink.mytime 列包含時間 20:06:58,那么以下函數將返回十進制值 580620:

TimeToDecimal(mylink.mytime, "%ss%nn%hh")

31. UstringToString

返回給定 ustring 的字符串,可以選擇使用指定的映射(否則,將使用項目缺省值)。

· 輸入:string (ustring) [, mapname(string)]

· 輸出:result (string)

· 示例:如果 mylink.myustring 列包含 ustring“11052009”,那么以下函數將返回字符串“11052009”:

UstringToString(mylink.myustring)

二、 字符串函數

字符串函數用於操作字符串。

以下函數位於表達式編輯器的“字符串”類別中。方括號表示參數是可選的。以下示例按照 Transformer 階段的“派生”字段中所示來顯示這些函數。

32. AlNum

檢查給定的字符串中是否只包含字母數字字符。

· 輸入:string (string)

· 輸出:true/false (int8)

· 示例。如果 mylink.mystring1 包含字符串“OED_75_9*E”,那么以下函數將返回值 -1 (false)。

AlNum(mylink.mystring1)

如果 mylink.mystring2 包含字符串“12 red roses”,那么以下函數將返回值 1 (true)。

AlNum(mylink.mystring2)

33. Alpha

檢查給定的字符串是否只包含字母字符。

· 輸入:string (string)

· 輸出:true/false (int8)

· 示例。如果 mylink.mystring1 包含字符串“12 red roses”,那么以下函數將返回值 -1 (false)。

Alpha(mylink.mystring1)

如果 mylink.mystring2 包含字符串“twelve red roses”,那么以下函數將返回值 1 (true)。

Alpha(mylink.mystring2)

34. CompactWhiteSpace

返回將所有連續空格減少到單個空格后得到的字符串。

· 輸入:string (string)

· 輸出:result (string)

· 示例。如果 mylink.mystring 包含字符串“too   many    spaces”,那么以下函數將返回字符串“too many spaces”:

CompactWhiteSpace(mylink.mystring)

35. Compare

比較用於排序的兩個字符串。比較可以采用左對齊形式(缺省值),也可以采用右對齊形式。右對齊比較將指定字符串中的數字子串作為數字進行比較。在每個字符串中,數字字符串必須出現相同的字符位置。例如,對字符串 AB100 和 AB99 的右對齊比較結果表明 AB100 大於 AB99,這是因為 100 大於 99。對字符串 AC99 和 AB100 的右對齊比較結果表明 AC99 大於 AB100,這是因為 C 大於 B。

· 輸入:string1 (string),string2 (string),[justification (L or R)]

· 輸出:result (int8),string1 小於 string2 時為 -1,兩者相同時為 0,string1 大於 string2 時返回 1。

· 示例。如果 mylink.mystring1 包含字符串“AB99”並且 mylink.mystring2 包含字符串“AB100”,那么以下函數將返回結果 1。

Compare(mylink.mystring1,mylink.mystring2,L)

如果 mylink.mystring1 包含字符串“AB99”並且 mylink.mystring2 包含字符串“AB100”,那么以下函數將返回結果 -1。

Compare(mylink.mystring1,mylink.mystring2,R)

36. CompareNoCase

比較用於排序的兩個字符串(忽略大小寫)。

· 輸入:string1 (string),string2 (string)

· 輸出:result (int8),string1 小於 string2 時為 -1,兩者相同時為 0,string1 大於 string2 時返回 1。

· 示例。如果 mylink.mystring1 包含字符串“Chocolate Cake”並且 mylink.mystring2 包含字符串“chocolate cake”,那么以下函數將返回結果 1。

ComparNoCase(mylink.mystring1,mylink.mystring2)

37. CompareNum

比較兩個字符串中的前 n 個字符。

· 輸入:string1 (string),string2 (string),length (int16)

· 輸出:result (int8),string1 小於 string2 時為 -1,兩者相同時為 0,string1 大於 string2 時返回 1。

· 示例。如果 mylink.mystring1 包含字符串“Chocolate”並且 mylink.mystring2 包含字符串“Choccy Treat”那么以下函數將返回結果 1。

ComparNum(mylink.mystring1,mylink.mystring2,4)

38. CompareNumNoCase

比較兩個字符串中的前 n 個字符(忽略大小寫)。

· 輸入:string1 (string),string2 (string),length (int16)

· 輸出:result (int8),string1 小於 string2 時為 -1,兩者相同時為 0,string1 大於 string2 時返回 1。

· 示例。如果 mylink.mystring1 包含字符串“chocolate”並且 mylink.mystring2 包含字符串“Choccy Treat”,那么以下函數將返回結果 1。

ComparNumNoCase(mylink.mystring1,mylink.mystring2,4)

39. Convert

轉換 expression 中指定的字符串中的字符。將 fromlist 中指定的字符轉換為 tolist 中指定的字符。

· 輸入:fromlist (string),tolist (string),expression (string)

· 輸出:result (string)

· 示例。如果 mylink.mystring1 包含字符串“NOW IS THE TIME”,那么以下函數將返回字符串“NOW YS XHE XYME”。

Convert("TI","XY",mylink.mystring1)

40. Count

統計子串在字符串中出現的次數。

· 輸入:string (string),substring (string)

· 輸出:result (int32)

· 示例。如果 mylink.mystring1 包含字符串“chocolate drops, chocolate ice cream, chocolate bars”,那么以下函數將返回 3。

Count(mylink.mystring1,"choc")

41. Dcount

統計字符串中定界字段的數目。

· 輸入:string (string),delimiter (string)

· 輸出:result (int32)

· 示例。如果 mylink.mystring1 包含字符串“chocolate drops, chocolate ice cream, chocolate bars”,那么以下函數將返回 3。

Dcount(mylink.mystring1,",")

42. DownCase

將字符串中的所有大寫字母轉換為小寫字母。

· 輸入:string (string)

· 輸出:result (string)

· 示例。如果 mylink.mystring1 包含字符串“CaMel cAsE”,那么以下函數將返回字符串“camel case”。

DownCase(mylink.mystring1)

43. DQuote

在字符串兩邊加上雙引號。

· 輸入:string (string)

· 輸出:result (string)

· 示例。如果 mylink.mystring1 包含字符串 needs quotes,那么以下函數將返回字符串“needs quotes”。

DQuote(mylink.mystring1)

44. Field

返回位於字符串中指定定界符之間的一個或多個子串。參數 occurrence 指定第幾個出現的定界符用作終止符。參數 number 指定返回多少個子串(可選)。

· 輸入:string (string),delimiter (string),occurrence (int32), [number (int32)]

· 輸出:result (string)

· 示例。如果 mylink.mystring1 包含字符串“chocolate drops, chocolate ice cream, chocolate bars, chocolate dippers”,那么以下函數將返回字符串“chocolate ice cream”。

Field(mylink.mystring1,",",2)

如果 mylink.mystring1 包含字符串“chocolate drops, chocolate ice cream, chocolate bars, chocolate dippers”,那么以下函數將返回字符串“chocolate ice cream, chocolate bars”。

Field(mylink.mystring1,",",2,2)

45. Index

查找子串的起始字符位置。參數 occurrence 指定要查找第幾個出現的子串。

· 輸入:string (string) substring (string) occurrence (int32)

· 輸出:result (int32)

· 示例。如果 mylink.mystring1 包含字符串“chocolate drops, chocolate ice cream, chocolate bars, chocolate dippers”,那么以下函數將返回值 18。

Index(mylink.mystring1,"chocolate",2)

46. Left

返回字符串中最左側的 n 個字符。

· 輸入:string (string) number (int32)

· 輸出:result (string)

· 示例。如果 mylink.mystring1 包含字符串“chocolate drops, chocolate ice cream, chocolate bars, chocolate dippers”,那么以下函數將返回字符串“chocolate”。

Left(mylink.mystring1,9)

47. Len

返回字符中字符串的長度。

· 輸入:string (string)

· 輸出:result (int32)

· 示例。如果 mylink.mystring1 包含字符串“chocolate”,那么以下函數將返回值 9。

Len(mylink.mystring1)

48. Num

如果字符串可以轉換為數字,那么返回 1。否則,返回 0。

· 輸入:string (string)

· 輸出:result (int32)

· 示例。如果 mylink.mystring1 包含字符串“22”,那么以下函數將返回值 1。

Num(mylink.mystring1)

如果 mylink.mystring1 包含字符串“twenty two”,那么以下函數將返回值 0。

Num(mylink.mystring1)

49. PadString

返回用指定的填充字符數填充的字符串。

· 輸入:string (string) padstring (string) padlength (int32)

· 輸出:result (string)

· 示例。如果 mylink.mystring1 包含字符串“AB175”,那么以下函數將返回字符串“AB17500000”。

PadString(mylink.mystring1,"0",5)

50. Right

返回字符串中最右側的 n 個字符。

· 輸入:string (string) number (int32)

· 輸出:result (string)

· 示例。如果 mylink.mystring1 包含字符串“chocolate drops, chocolate ice cream, chocolate bars, chocolate dippers”,那么以下函數將返回字符串“dippers”。

Right(mylink.mystring1,7)

51. Soundex

返回一個代碼,該代碼用於根據 SOUNDEX 評估的標准開放式算法來識別發音(大致)相同的一組詞。

· 輸入:string (string)

· 輸出:result (string)

· 示例。如果 mylink.mystring1 包含字符串“Griffin”,那么以下函數將返回代碼“G615”。

Soundex(mylink.mystring1)

如果 mylink.mystring1 包含字符串“Griphin”,那么以下函數也將返回代碼“G615”。

Soundex(mylink.mystring1)

52. Space

返回包含 n 個空格字符的字符串。

· 輸入:length (int32)

· 輸出:result (string)

· 示例。如果 mylink.mylength 包含數字 100,那么以下函數將返回包含 100 個空格字符的字符串。

Space(mylink.mylength)

53. SQuote

將字符串用單引號括起來。

· 輸入:string (string)

· 輸出:result (string)

· 示例。如果 mylink.mystring1 包含字符串 needs quotes,那么以下函數將返回字符串“needs quotes”。

SQuote(mylink.mystring1)

54. Str

將字符串重復指定的次數。

· 輸入:string (string)

· 輸出:result (string)

· 示例。如果 mylink.mystring1 包含字符串需要“choc”的字符串,那么以下函數將返回字符串“chocchocchocchocchoc”。

Str(mylink.mystring1,5)

55. StripWhiteSpace

返回刪除了字符串中所有空格字符后得到的該字符串。

· 輸入:string (string) repeats (int32)

· 輸出:result (string)

· 示例。如果 mylink.mystring 包含字符串“too   many    spaces”,那么以下函數將返回字符串“toomanyspaces”:

StripWhiteSpace(mylink.mystring)

56. Trim

除去所有前導空格、結尾空格和跳格,並將內部出現次數減少為 1。參數 stripchar 指定除空格或跳格之外的字符(可選)。參數 options 指定要執行的 Trim 操作的類型,並包含以下某一個或多個值(可選):

A 除去所有出現的 stripchar

B 除去出現的前導和結尾 stripchar

D 除去前導、結尾和冗余空格字符

E 除去結尾空格字符

F 除去前導空格字符

L 除去所有出現的前導 stripchar

R 除去出現的前導、結尾和冗余 stripchar

T除去所有出現的結尾 stripchar

· 輸入:string (string) [stripchar (string)] [options (string)]

· 輸出:result (string)

· 示例。如果 mylink.mystring 包含字符串“ String with whitespace ”,那么以下函數將返回字符串“String with whitespace”:

Trim(mylink.mystring)

如果 mylink.mystring 包含字符串“..Remove..redundant..dots....”,那么以下函數將返回字符串“Remove.redundant.dots”:

Trim(mylink.mystring,".")

如果 mylink.mystring 包含字符串“Remove..all..dots....”,那么以下函數將返回字符串“Removealldots”:

Trim(mylink.mystring,".","A")

如果 mylink.mystring 包含字符串“Remove..trailing..dots....”,那么以下函數將返回字符串“Remove..trailing..dots”:

Trim(mylink.mystring,".","T")

57. TrimB

除去字符串中所有結尾空格和跳格。

· 輸入:string (string)

· 輸出:result (string)

· 示例。如果 mylink.mystring 包含字符串“too many trailing spaces    ”,那么以下函數將返回字符串“too many trailing spaces”:

TrimB(mylink.mystring)

58. TrimF

除去字符串中所有前導空格和跳格。

· 輸入:string (string)

· 輸出:result (string)

· 示例。如果 mylink.mystring 包含字符串“    too many leading spaces”,那么以下函數將返回字符串“too many leading spaces”:

TrimF(mylink.mystring)

59. TrimLeadingTrailing

除去字符串中所有前導空格、結尾空格和跳格。

· 輸入:string (string)

· 輸出:result (string)

· 示例。如果 mylink.mystring 包含字符串“ too many spaces ”,那么以下函數將返回字符串“too many spaces”:

TrimLeadingTrailing(mylink.mystring)

60. UpCase

將字符串中的所有小寫字母轉換為大寫字母。

· 輸入:string (string)

· 輸出:result (string)

· 示例。如果 mylink.mystring1 包含字符串“CaMel cAsE”,那么以下函數將返回字符串“CAMEL CASE”。

UpCase(mylink.mystring1)

三、 數字函數

數字函數用於抽取十進制數或浮點數中的尾數。表達式編輯器中的“數字”類別還包含類型為 casting 的函數,您可以使用該函數對數據類型為 double、float 或 integer 的數字進行強制類型轉換。

方括號表示參數是可選的。以下示例按照 Transformer 階段的“派生”字段中所示來顯示這些函數。

當您使用數字字段執行數學運算時,類型為 casting 的函數可為您提供幫助。例如,如果在 Parallel Transformer 階段中使用類型為 float 的輸出列(派生自類型為 integer 的輸入列)進行計算,那么無論其類型是否為 float,結果都將派生為 integer。如果希望使用整數操作數進行的計算得到非整數結果,那么可以使用類型為 casting 的函數來將整數操作數強制轉換為非整數操作數。

61. AsDouble

將給定數字視為雙精度數。

· 輸入:number

· 輸出:number (double)

· 示例。在以下表達式中,輸入列 mynumber 包含一個整數,但是函數輸出一個雙精度數。如果 mylink.mynumber 包含值 56,那么以下兩個函數等價,並返回值 1.29629629629629619E+01:

· AsDouble(56/4.32)

AsDouble(mylink.mynumber/4.32)

62. AsFloat

將給定數字視為浮點數。

· 輸入:number

· 輸出:number (float)

· 示例。在以下表達式中,輸入列 mynumber 包含一個整數,但是函數輸出一個浮點數。如果 mylink.mynumber 包含值 56,那么以下兩個函數等價,並返回值 1.29629629629629619E+01:

· AsFloat(56/4.32)

AsFloat(mylink.mynumber/4.32)

63. AsInteger

將給定數字視為整數。

· 輸入:number

· 輸出:number (integer)

· 示例。在以下表達式中,輸入列 mynumber 包含一個雙精度數,但是函數輸出一個整數。如果 mylink.mynumber 包含值 56,那么以下兩個函數等價,並返回值 12:

· AsInteger(56/4.32)

AsInteger(mylink.mynumber/4.32)

64. MantissaFromDecimal

返回給定十進制數的尾數。

· 輸入:number (decimal)

· 輸出:result (dfloat)

· 示例。如果 mylink.number 包含數字 243.7675,那么以下兩個函數等價,並返回值 7675:

· MantissaFromDecimal(243.7675)

MantissaFromDecimal(mylink.mynumber)

65. MantissaFromDFloat

返回給定雙精度浮點數的尾數。

· 輸入:number (dfloat)

· 輸出:result (dfloat)

· 示例。如果 mylink.number 包含數字 1.234412000000000010E +4,那么以下兩個函數返回值 1:

MantissaFromDFloat(mylink.mynumber)

四、 日期和時間函數

您可以使用日期和時間函數對 Transformer 階段中的日期和時間執行各種操作。

在自變量中指定日期、時間或時間戳記的函數使用具有特定格式的字符串:

  • 對於日期,格式為 %yyyy-%mm-%dd
  • 對於時間,格式為 %hh:%nn:%ss。如果擴展為包含微秒,那么格式為 %hh:%nn:%ss.x,其中 x 是為秒指定的小數位數。
  • 對於時間戳記,格式為 %yyyy-%mm-%dd %hh:%nn:%ss。如果擴展為包含微秒,那么格式為 %yyyy-%mm-%dd %hh:%nn:%ss.x,其中 x 是為秒指定的小數位數。

在自變量中包含星期幾的函數使用字符串來指定星期幾。星期幾可指定為三個字母的縮寫,也可指定為完整名稱。例如,字符串“thu”和“thursday”都是有效的。

以下函數位於表達式編輯器的日期和時間類別中。方括號表示參數是可選的。以下示例按照 Transformer 階段的“派生”字段中所示來顯示這些函數。

66. CurrentDate

以日期格式返回作業運行的日期。

· 輸入:-

· 輸出:date

· 示例。您可以使用該函數將包含日期的新列添加到 Transformer 階段輸出的數據:

CurrentDate()

67. CurrentTime

以時間格式返回作業運行的時間。

· 輸入:-

· 輸出:time

· 示例。您可以使用該函數將包含時間的新列添加到 Transformer 階段輸出的數據:

CurrentTime()

68. CurrentTimeMS

以時間格式返回作業運行的時間,包含微秒。

· 輸入:-

· 輸出:time

· 示例。您可以使用該函數將包含時間的新列添加到 Transformer 階段輸出的數據。必須將列元數據中的擴展字段設置為微秒以包含完整的時間:

CurrentTimeMS()

69. CurrentTimestamp

以時間戳記格式返回作業運行的時間戳記(指定日期和時間)。

· 輸入:-

· 輸出:timestamp

· 示例。您可以使用該函數將包含時間戳記的新列添加到 Transformer 階段輸出的數據:

CurrentTimestamp()

70. CurrentTimestampMS

以時間戳記格式返回作業運行的時間戳記(指定日期和時間),時間部分包含微秒。

· 輸入:-

· 輸出:timestamp

· 示例。您可以使用該函數將包含時間戳記的新列添加到 Transformer 階段輸出的數據。必須將列元數據中的擴展字段設置為微秒以包含完整的時間戳記:

CurrentTimestampMS()

71. DateFromDaysSince

通過向基線日期添加一個整數來返回一個日期。該整數可以是負數,這樣會返回比該基線日期更早的日期。

· 輸入:number (int32), [baseline_date (date)]

· 輸出:date

· 示例。如果 mylink.myintcol 包含整數 18250,mylink.mydatecol 包含日期 1958–08–18,那么以下三個函數是等效的,都返回日期 2008–08–05:

· DateFromDaysSince(18250,"1958-08-18")

· DateFromDaysSince(mylink.myintcol,"1958-08-18")

DateFromDaysSince(mylink.myintcol,mylink.mydatecol)

如果 mylink.mynegintcol 包含整數 -1,mylink.mydatecol 包含日期 1958–08–18,那么以下三個函數是等效的,都返回日期 1958–08–17:

DateFromDaysSince(-1,"1958-08-18")

DateFromDaysSince(mylink.mynegintcol,"1958-08-18")

DateFromDaysSince(mylink.mynegintcol,mylink.mydatecol)

72. DateFromComponents

根據由三個單獨的值指定的年月日來返回一個日期。

· 輸入:(int32), months (int32), dayofmonth (int32)

· 輸出:date

· 示例。如果 mylink.yearcol 包含值 2010,mylink.monthcol 包含值 12,mylink.dayofmonthcol 包含值 2,那么以下兩個函數是等效的,都返回日期 2010–12–02。

· DateFromComponents(2010, 12, 2)

DateFromComponents(mylink.yearcol, mylink.monthcol, mylink.dayofmonthcol)

73. DateFromJulianDay

根據指定的儒略日返回一個日期。

· 輸入:julianday (uint32)

· 輸出:date

· 示例。如果 mylink.myjulcol 包含值 2454614,那么以下兩個函數是等效的,都返回日期 2008–05–27。

· DateFromJulianDay(2454614)

DateFromJulianDay(mylink.myjulcol)

74. DateOffsetByComponents

返回指定的日期應用了指定的年偏移量、月偏移量和日偏移量(每個偏移量都以單獨的值指定)之后所得到的日期。每個偏移值都可以是正數、零或負數。

· 輸入:basedate (date), year_offset (int32), month_offset (int32), dayofmonth_offset (int32)

· 輸出:date

· 示例。如果 mylink.basedate 包含 2011-08-18,mylink.yearos 包含值 2,mylink.monthos 包含值 0,mylink.dayofmonthosol 包含值 0,那么以下兩個函數是等效的,都返回日期 2013–08–18。

· DateOffsetByComponents("2011-08-18", 2011, 8, 18)

· DateOffsetByComponents(mylink.basedate, mylink.yearos, mylink.monthos,

mylink.dayofmonthos)

· 如果 mylink.basedate 包含 2011-08-18,mylink.yearos 包含值 -2,mylink.monthos 包含值 0,mylink.dayofmonthosol 包含值 0,那么以下兩個函數是等效的,都返回日期 2009–08–18。

· DateOffsetByComponents("2011-08-18", 2011, 8, 18)

· DateOffsetByComponents(mylink.basedate, mylink.yearos, mylink.monthos,

mylink.dayofmonthos)

75. DaysSinceFromDate

返回源日期到指定日期之間的天數。

· 輸入:source_date, given_date

· 輸出:days_since (int32)

· 示例。如果 mylink.mysourcedate 包含日期 1958–08–18,mylink.mygivendate 包含日期 2008–08–18,那么以下兩個函數是等效的,都返回整數值 18263。

· DaysSinceFromDate(mylink.mysourcedate, mylink.mygivendate)

DaysSinceFromDate("1958-08-18","2008-08-18")

76. DaysInMonth

返回指定的基本日期中月份的天數。

· 輸入:basedate (date)

· 輸出:daysinmonth (int32)

· 示例。如果 mylink.mysourcedate 包含日期 1958–08–18,那么以下兩個函數是等效的,都返回整數值 31。

· DaysInMonth(mylink.mysourcedate)

DaysInMonth("1958-08-18")

77. DaysInYear

返回指定的基本日期中年份的天數。

· 輸入:basedate (date)

· 輸出:daysinyearh (int32)

· 示例。如果 mylink.mysourcedate 包含日期 2012–08–18,那么以下兩個函數是等效的,都返回整數值 366。

· DaysInYear(mylink.mysourcedate)

DaysInYear("2012-08-18")

如果 mylink.mysourcedate 包含日期 2011–08–18,那么以下兩個函數是等效的,都返回整數值 365。

DaysInYear(mylink.mysourcedate)

DaysInYear("2011-08-18")

78. DateOffsetByDays

返回指定的日期應用了指定天數之后所得到的日期。偏移值可以是正數、零或負數。

· 輸入:basedate (date), dayoffset (int32)

· 輸出:date

· 示例。如果 mylink.basedate 包含 2011-08-18,mylink.dayoffset 包含值 2,那么以下兩個函數是等效的,都返回日期 2011–08–20。

· DateOffsetByDays("2011-08-18", 2)

DateOffsetByDays(mylink.basedate, mylink.dayoffset)

· 如果 mylink.basedate 包含 2011-08-18,mylink.dayoffset 包含值 -31,那么以下兩個函數是等效的,都返回日期 2011–07–18。

· DateOffsetByDays("2011-08-18", -31)

DateOffsetByDays(mylink.basedate, mylink.dayoffset)

79. HoursFromTime

返回時間的小時部分。

· 輸入:time

· 輸出:hours (int8)

· 示例。如果 mylink.mytime 包含時間 22:30:00,那么以下兩個函數是等效的,都返回整數值 22。

· HoursFromTime(mylink.mytime)

HoursFromTime("22:30:00")

80. JulianDayFromDate

根據指定的日期返回對應的儒略日。

· 輸入:date

· 輸出:julianday (int32)

· 示例。如果 mylink.mydate 包含日期 2008–05–27,那么以下兩個函數是等效的,都返回值 2454614。

· JulianDayFromDate("2008–05–27")

JulianDayFromDate(mylink.mydate)

81. MicroSecondsFromTime

返回時間的微秒部分。

· 輸入:time

· 輸出:microseconds (int32)

· 示例。如果 mylink.mytime 包含時間 22:30:00.32,那么以下函數返回值 320000:

MicroSecondsFromTime(mylink.mytime)

82. MidnightSecondsFromTime

返回從午夜到指定時間的秒數。

· 輸入:time

· 輸出:seconds (int8)

· 示例。如果 mylink.mytime 包含時間 00:30:52,那么以下兩個函數是等效的,都返回值 1852:

· MidnightSecondsFromTime("00:30:52")

MidnightSecondsFromTime(mylink.mytime)

83. MinutesFromTime

返回時間的分鍾部分。

· 輸入:time

· 輸出:minutes (int8)

· 示例。如果 mylink.mytime 包含時間 22:30:52,那么以下兩個函數是等效的,都返回值 30:

· MinutesFromTime("22:30:52")

MinutesFromTime(mylink.mytime)

84. MonthDayFromDate

返回指定日期的日部分。

· 輸入:date

· 輸出:day (int8)

· 示例。如果 mylink.mydate 包含日期 2008-08-18,那么以下兩個函數是等效的,都返回值 18:

· MonthDayFromDate("2008-08-18")

MonthDayFromDate(mylink.mydate)

85. MonthFromDate

返回指定日期的月份。

· 輸入:date

· 輸出:month_number (int8)

· 示例。如果 mylink.mydate 包含日期 2008-08-18,那么以下兩個函數是等效的,都返回值 8:

· MonthFromDate("2008-08-18")

MonthDayDate(mylink.mydate)

86. NextWeekdayFromDate

返回源日期之后第一個指定的星期幾的日期。星期幾可以用完整名稱指定,例如 thursday;也可以用三個字母縮寫指定,例如 thu。

· 輸入:sourcedate (date), day_of_week (string)

· 輸出:date

· 示例。如果 mylink.mysourcedate 包含日期 2008-08-18,那么以下兩個函數是等效的,都將返回值 2008–08–21:

· NextWeekdayFromDate("2008-08-18", "thursday")

NextWeekdayFromDate(mylink.mysourcedate, "thu")

87. NthWeekdayFromDate

返回從源日期偏移指定星期數后的指定星期幾的日期。星期幾可以用完整名稱指定,例如 thursday;也可以用三個字母縮寫指定,例如 thu。偏移量可以是正數、負數或零。

· 輸入:basedate (date), day_of_week (string), week_offset (int32)

· 輸出:date

· 示例。如果 mylink.mydate 包含日期 2009-08-18,那么以下兩個函數是等效的,都返回值 2009–08–27:

· NthWeekdayFromDate("2009-08-18", "thursday", 1)

NthWeekdayFromDate(mylink.mydate, "thu", 1)

如果 mylink.mydate 包含日期 2009-08-18,那么以下兩個函數是等效的,都返回值 2009–08–06:

NthWeekdayFromDate("2009-08-18", "thursday", -2)

NthWeekdayFromDate(mylink.mydate, "thu", -2)

88. PreviousWeekdayFromDate

返回源日期之前第一個指定的星期幾的日期。星期幾可以用完整名稱指定,例如 thursday;也可以用三個字母縮寫指定,例如 thu。

· 輸入:sourcedate, day_of_week (string)

· 輸出:date

· 示例。如果 mylink.mysourcedate 包含日期 2008-08-18,那么以下兩個函數是等效的,都返回值 2008–08–14:

· PreviousWeekdayFromDate("2008-08-18", "thursday")

PreviousWeekdayFromDate(mylink.mysourcedate, "thu")

89. SecondsFromTime

返回時間的秒部分。

· 輸入:time

· 輸出:seconds (dfloat)

· 示例。如果 mylink.mytime 包含時間 22:30:52,那么以下兩個函數是等效的,都返回值 52:

· SecondsFromTime("22:30:52")

SecondsFromTime(mylink.mytime)

90. SecondsSinceFromTimestamp

返回兩個時間戳記之間的秒數。

· 輸入:timestamp, timestamp_base

· 輸出:seconds (dfloat)

· 示例。如果 mylink.mytimestamp 包含時間戳記 2008–08–18 22:30:52,mylink.mytimestamp_base 包含時間戳記 2008–08–19 22:30:52,那么以下兩個函數是等效的,都返回值 -86400:

· SecondsSinceFromTimestamp("2008–08–18 22:30:52","2008–08–19 22:30:52")

SecondsSinceFromTimestamp(mylink.mytimestamp, mylink.mytimestamp_base)

91. TimeDate

以格式字符串形式返回系統時間和日期。

· 輸入:-

· 輸出:system_time_and_date (string)

· 示例。如果作業在 2008 年 6 月 20 日下午 4:21 運行,那么以下函數將返回字符串“16:21:48 20 Jun 2008”。

TimeDate()

92. TimeFromComponents

按照以四個單獨的值指定的小時、分鍾、秒和微秒組成的時間。

· 輸入:hours (int32), minutes (int32), seconds (int32), microseconds (int32)

· 輸出:time

· 示例。如果 mylink.hourcol 包含值 10,mylink.mincol 包含值 12,mylink.seccol 包含值 2,mylink.mseccol 包含 0,那么以下兩個函數是等效的,都返回時間 10:12:02.0:

· TimeFromComponents(10, 12, 2, 0)

TimeFromComponents(mylink.hourcol, mylink.mincol, mylink.seccol, mylink.mseccol)

93. TimeFromMidnightSeconds

返回自午夜起指定秒數之后的時間。

· 輸入:seconds (dfloat)

· 輸出:time

· 示例。如果 mylink.mymidnightseconds 包含值 240,那么以下兩個函數是等效的,都返回值 00:04:00:

· TimeFromMidnightSeconds("240")

TimeFromMidnightSeconds(mylink.mymidnightseconds)

94. TimeOffsetByComponents

返回指定的時間應用了指定的小時偏移量、分鍾偏移量和秒偏移量(每個偏移量都以單獨的值指定)之后所得到的時間。秒偏移量可以包含小數。

· 輸入:basetime (time), hour_offset (int32), minute_offset (int32), second_offset (dfloat)

· 輸出:time

· 示例。如果 mylink.basetime 包含 14:05:29,mylink.houros 包含值 2,mylink.minos 包含值 0,mylink.secos 包含值 20,那么以下兩個函數是等效的,都返回時間 16:05:49。

· TimeOffsetByComponents("14:05:29", 2, 0, 20)

TimeOffsetByComponents(mylink.basetime, mylink.houros, mylink.minos, mylink.secos)

95. TimeOffsetBySeconds

返回指定的時間應用了指定的秒偏移量之后所得到的時間。秒偏移量可以包含小數。

· 輸入:basetime (time), second_offset (dfloat)

· 輸出:time

· 示例。如果 mylink.basetime 包含 14:05:29.30,mylink.secos 包含值 2.5,那么以下兩個函數是等效的,都返回時間 14:05:31.80:

· TimeOffsetByComponents("14:05:29.30", 2.5)

TimeOffsetByComponents(mylink.basetime, mylink.secos)

96. TimestampFromDateTime

返回指定的日期和時間的時間戳記。

· 輸入:date, time

· 輸出:timestamp

· 示例。如果 mylink.mydate 包含日期 2008–08–18,mylink.mytime 包含時間 22:30:52,那么以下兩個函數是等效的,都返回時間戳記 2008–08–18 22:30:52:

· TimestampFromDateTime("2008–08–18","22:30:52")

TimestampFromDateTime(mylink.mydate,mylink.mytime)

97. TimestampFromSecondsSince

返回基本時間戳記加上指定秒數之后所得到的時間戳記。

· 輸入:seconds (dfloat), [base_timestamp]

· 輸出:timestamp

· 示例。如果 mylink.myseconds 包含值 2563,mylink.timestamp_base 包含時間戳記 2008–08–18 22:30:52,那么以下兩個函數是等效的,都返回時間戳記 2008–08–18 23:13:35:

· TimestampFromSecondsSince("2563","2008–08–18 22:30:52")

TimestampFromSecondsSince(mylink.myseconds,mylink.timestamp_base)

98. TimestampFromTimet

按照指定的 UNIX time_t 值返回時間戳記。

· 輸入:timet (int32)

· 輸出:timestamp

· 示例。如果 mylink.mytimet 包含值 1234567890,那么以下兩個函數是等效的,都返回時間戳記 2009–02–13 23:31:30:

· TimestampFromTimet("1234567890")

TimestampFromTimet(mylink.mytimet)

99. TimestampOffsetByComponents

返回指定的時間戳記應用了指定的年偏移量、月偏移量、日偏移量、小時偏移量、分鍾偏移量和秒偏移量(每個偏移量都以單獨的值指定)之后所得到的時間戳記。秒偏移量可以包含小數。

· 輸入:basetimestamp (timestamp), year_offset (int32), month_offset (int32), dayofmonth_offset (int32), hour_offset (int32), minute_offset (int32), second_offset (dfloat)

· 輸出:timestamp

· 示例。如果 mylink.basetimestamp 包含 2009-08-18 14:05:29,mylink.yearos 包含 0,mylink.monthos 包含值 2,mylink.dayos 包含值 -4,mylink.houros 包含值 2,mylink.minos 包含值 0,mylink.secos 包含值 20,那么以下兩個函數是等效的,都返回時間戳記 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)

100. TimestampOffsetBySeconds

返回指定的時間戳記應用了指定的秒偏移量之后所得到的時間戳記。秒偏移量可以包含小數。

· 輸入:basetimestamp (timestamp), second_offset (dfloat)

· 輸出:timestamp

· 示例。如果 mylink.basetimestamp 包含 2009-08-18 14:05:29,mylink.secos 包含值 32760,那么以下兩個函數是等效的,都返回時間戳記 2009-08-18 23:11:29:

· TimeOffsetBySeconds("2009-08-18 14:05:29", 32760)

· TimeOffsetBySeconds

(mylink.basetimestamp, mylink.secos)

101. TimetFromTimestamp

返回指定的時間戳記的 UNIX time_t 值。

· 輸入:timestamp

· 輸出:timet (int32)

· 示例。如果 mylink.mytimestamp 包含值 2009–02–13 23:31:30,那么以下兩個函數是等效的,都返回值 1234567890:

· TimestampFromTimet("2009–02–13 23:31:30")

TimestampFromTimet(mylink.mytimestamp)

102. WeekdayFromDate

返回指定日期距離所在星期第一天的天數。可以選擇用 Origin_day 指定每周第一天是星期幾,缺省情況下每周第一天是星期日 (Sunday)。

· 輸入:date, [origin_day]

· 輸出:day (int8)

· 示例。如果 mylink.mydate 包含日期 2008-08-18,那么以下兩個函數是等效的,都返回值 1:

· WeekdayFromDate("2008-08-18")

WeekdayFromDate(mylink.mydate)

如果 mylink.mydate 包含日期 2008-08-18,mylink.origin_day 包含 saturday,那么以下兩個函數是等效的,都返回值 2:

WeekdayFromDate("2008-08-18","saturday")

WeekdayFromDate(mylink.mydate,mylink.origin_day)

103. YeardayFromDate

返回指定的日期在該年份中所處的天數。

· 輸入:date

· 輸出:day (int16)

· 示例。如果 mylink.mydate 包含日期 2008-08-18,那么以下兩個函數是等效的,都返回值 231:

· YeardayFromDate("2008-08-18")

YeardayFromDate(mylink.mydate)

104. YearFromDate

返回指定的日期所在年份。

· 輸入:date

· 輸出:year (int16)

· 示例。如果 mylink.mydate 包含日期 2008-08-18,那么以下兩個函數是等效的,都返回值 2008:

· YearFromDate("2008-08-18")

YearFromDate(mylink.mydate)

105. YearweekFromDate

返回指定的日期在該年份中所處的星期數。

· 輸入:date

· 輸出:week (int16)

· 示例。如果 mylink.mydate 包含日期 2008-08-18,那么以下兩個函數是等效的,都返回值 33:

· YearweekFromDate("2008-08-18")

YearweekFromDate(mylink.mydate)

五、 Null 處理函數

您可以在 Transformer 階段中使用 Null 處理函數來處理派生中的 Null 值。

如果在輸出列表達式中使用輸入列,任意輸入列中的 Null 值會導致將一個 Null 值寫入到輸出列中。但是,您可以使用 Null 處理函數來顯式處理 Null 值。

“Null 處理”類別中包含了以下函數。方括號表示參數是可選的。以下示例按照 Transformer 階段的“派生”字段中所示來顯示這些函數。

106. IsNotNull

當表達式無法求出 Null 值時返回 true。

· 輸入:任意值

· 輸出:true/false (int8)

· 示例。如果某輸出列的“派生”字段包含以下代碼,那么 Transformer 階段會檢查名為 mylink.mycolumn 的輸入列是否包含 Null 值。如果輸入列不包含 Null 值,那么輸出列將包含該輸入列的值。如果輸入列包含 Null 值,那么輸出列將包含字符串 NULL。

If IsNotNull(mylink.mycolumn) Then mylink.mycolumn Else "NULL"

107. IsNull

當表達式的求值結果為 Null 值時返回 true。

· 輸入:任意值

· 輸出:true/false (int8)

· 示例。如果某輸出列的“派生”字段包含以下代碼,那么 Transformer 階段會檢查名為 mylink.mycolumn 的輸入列是否包含 Null 值。如果輸入列包含 Null 值,那么輸出列將包含字符串 NULL。如果輸入列不包含 Null 值,那么輸出列將包含該輸入列的值。

If IsNull(mylink.mycolumn) Then "NULL" Else mylink.mycolumn

108. NullToEmpty

輸入列為 NULL 時返回空字符串,否則返回輸入列值。

· 輸入:輸入列

· 輸出:輸入列值或空字符串

· 示例。如果某輸出列的“派生”字段包含以下代碼,那么 Transformer 階段會檢查名為 mylink.mycolumn 的輸入列是否包含 Null 值。如果輸入列包含 Null 值,那么輸出列將包含空字符串。如果輸入列包含 Null 值,那么輸出列將包含該輸入列的值。

NullToEmpty(mylink.mycolumn)

109. NullToZero

輸入列為 NULL 時返回零,否則返回輸入列值。

· 輸入:輸入列

· 輸出:輸入列值或零

· 示例。如果某輸出列的“派生”字段包含以下代碼,那么 Transformer 階段會檢查名為 mylink.mycolumn 的輸入列是否包含 Null 值。如果輸入列包含 Null 值,那么輸出列將包含零。如果輸入列包含 Null 值,那么輸出列將包含該輸入列的值。

NullToZeroy(mylink.mycolumn)

110. NullToValue

輸入列為 NULL 時返回指定值,否則返回輸入列值。

· 輸入:輸入列,value

· 輸出:輸入列值或 value

· 示例。如果某輸出列的“派生”字段包含以下代碼,那么 Transformer 階段會檢查名為 mylink.mycolumn 的輸入列是否包含 Null 值。如果輸入列包含 Null 值,那么輸出列將包含 42。如果輸入列包含 Null 值,那么輸出列將包含該輸入列的值。

NullToValue(mylink.mycolumn,42)

111. SetNull

將 Null 值賦給目標列。

· 輸入:-

· 輸出:-

· 示例。如果輸出列的“派生”字段包含以下代碼,那么 Transformer 階段會將輸出列設置為 NULL:

setnull()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM