共用方式為


對應資料流中的資料轉換運算式使用方式

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用 (部分機器翻譯)!

Azure Data Factory 和 Azure Synapse Pipelines 中均可使用資料流。 本文適用於對應資料流。 如果您不熟悉轉換作業,請參閱簡介文章使用對應資料流轉換資料

下列文章提供對應資料流中 Azure Data Factory 和 Azure Synapse Analytics 所支援所有運算式和函式的使用方式詳細資料。 如需支援的每種函式類型摘要,請參考下列文章:

所有函式的依字母順序排列的清單

以下是對應資料流中,可用所有函式的依字母順序排列的清單。

A

abs

abs(<value1> : number) => number

數字的絕對值。

  • abs(-20) -> 20
  • abs(10) -> 10

acos

acos(<value1> : number) => double

計算反餘弦值。

  • acos(1) -> 0.0

add

add(<value1> : any, <value2> : any) => any

新增一對字串或數字。 將日期新增至許多天。 將持續時間新增至時間戳記。 對某個陣列附加類似類型的另一個陣列。 相當於 + 運算子。

  • add(10, 20) -> 30
  • 10 + 20 -> 30
  • add('ice', 'cream') -> 'icecream'
  • 'ice' + 'cream' + ' cone' -> 'icecream cone'
  • add(toDate('2012-12-12'), 3) -> toDate('2012-12-15')
  • toDate('2012-12-12') + 3 -> toDate('2012-12-15')
  • [10, 20] + [30, 40] -> [10, 20, 30, 40]
  • toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') + (days(1) + hours(2) - seconds(10)) -> toTimestamp('2019-02-04 07:19:18.871', 'yyyy-MM-dd HH:mm:ss.SSS')

addDays

addDays(<date/timestamp> : datetime, <days to add> : integral) => datetime

在日期或時間戳記中增加天數。 相當於日期的 + 運算子。

  • addDays(toDate('2016-08-08'), 1) -> toDate('2016-08-09')

addMonths

addMonths(<date/timestamp> : datetime, <months to add> : integral, [<value3> : string]) => datetime

在日期或時間戳記中增加月數。 您可以選擇性地傳遞時區。

  • addMonths(toDate('2016-08-31'), 1) -> toDate('2016-09-30')
  • addMonths(toTimestamp('2016-09-30 10:10:10'), -1) -> toTimestamp('2016-08-31 10:10:10')

and

and(<value1> : boolean, <value2> : boolean) => boolean

邏輯 AND 運算子。 相當於 &&。

  • and(true, false) -> false
  • true && false -> false

approxDistinctCount

approxDistinctCount(<value1> : any, [ <value2> : double ]) => long

取得資料行相異值的近似彙總計數。 選擇性的第二個參數是控制估計錯誤。

  • approxDistinctCount(ProductID, .05) => long

array

array([<value1> : any], ...) => array

建立項目陣列。 所有項目都應該是相同的類型。 如果未指定任何項目,則預設值為空字串陣列。 相當於 [] 建立運算子。

  • array('Seattle', 'Washington')
  • ['Seattle', 'Washington']
  • ['Seattle', 'Washington'][1]
  • 'Washington'

ascii

ascii(<Input> : string) => number

傳回輸入字元的數值。 如果輸入字串有多個字元,則會傳回第一個字元的數值

  • ascii('A') -> 65
  • ascii('a') -> 97

asin

asin(<value1> : number) => double

計算反正弦值。

  • asin(0) -> 0.0

assertErrorMessages

assertErrorMessages() => map

傳回資料列的所有錯誤訊息對應,其判斷提示識別碼為索引鍵。

範例

  • assertErrorMessages() => ['assert1': 'This row failed on assert1.', 'assert2': 'This row failed on assert2.']. In this example, at(assertErrorMessages(), 'assert1') would return 'This row failed on assert1.'

associate

reassociate(<value1> : map, <value2> : binaryFunction) => map

建立索引鍵/值的對應。 所有索引鍵和值都應該為相同類型。 如果未指定任何項目,則會預設為字串與字串類型的對應。 相當於[ -> ]建立運算子。 索引鍵和值應該能彼此替代。

  • associate('fruit', 'apple', 'vegetable', 'carrot' )=> ['fruit' -> 'apple', 'vegetable' -> 'carrot']

at

at(<value1> : array/map, <value2> : integer/key type) => array

尋找陣列索引的元素。 以 1 起始的索引。 超出索引範圍會產生 Null 值。 在對應指定的索引鍵中尋找值。 如果找不到索引鍵,則會傳回 Null。

  • at(['apples', 'pears'], 1) => 'apples'
  • at(['fruit' -> 'apples', 'vegetable' -> 'carrot'], 'fruit') => 'apples'

atan

atan(<value1> : number) => double

計算反正切值。

  • atan(0) -> 0.0

atan2

atan2(<value1> : number, <value2> : number) => double

傳回平面的正 X 軸與座標指定點之間的角度 (以弧度為單位)。

  • atan2(0, 0) -> 0.0

avg

avg(<value1> : number) => number

取得資料行的平均值。

  • avg(sales)

avgIf

avgIf(<value1> : boolean, <value2> : number) => number

根據條件取得資料行的平均值。

  • avgIf(region == 'West', sales)

B

between

between(<value1> : any, <value2> : any, <value3> : any) => boolean

檢查第一個值是否內含在兩個其他值之間。 可以比較數值、字串和日期時間值

  • between(10, 5, 24)
  • true
  • between(currentDate(), currentDate() + 10, currentDate() + 20)
  • false

bitwiseAnd

bitwiseAnd(<value1> : integral, <value2> : integral) => integral

整數類型的位元 And 運算子。 相當於 & 運算子

  • bitwiseAnd(0xf4, 0xef)
  • 0xe4
  • (0xf4 & 0xef)
  • 0xe4

bitwiseOr

bitwiseOr(<value1> : integral, <value2> : integral) => integral

整數類型的位元 Or 運算子。 相當於 | 運算子

  • bitwiseOr(0xf4, 0xef)
  • 0xff
  • (0xf4 | 0xef)
  • 0xff

bitwiseXor

bitwiseXor(<value1> : any, <value2> : any) => any

整數類型的位元 Or 運算子。 相當於 | 運算子

  • bitwiseXor(0xf4, 0xef)
  • 0x1b
  • (0xf4 ^ 0xef)
  • 0x1b
  • (true ^ false)
  • true
  • (true ^ true)
  • false

blake2b

blake2b(<value1> : integer, <value2> : any, ...) => string

以指定的位元長度為不同基本資料類型的一組資料行計算 Blake2 摘要,值只能是 8 與 512 之間 8 的倍數。 這可以用來計算資料列的指紋

  • blake2b(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
  • 'c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d'

blake2bBinary

blake2bBinary(<value1> : integer, <value2> : any, ...) => binary

以指定的位元長度為不同基本資料類型的一組資料行計算 Blake2 摘要,值只能是 8 與 512 之間 8 的倍數。 這可以用來計算資料列的指紋

  • blake2bBinary(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
  • unHex('c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d')

byItem

byItem(<parent column> : any, <column name> : string) => any

在結構或結構陣列內尋找子項目。 如有多個相符項目,則傳回第一個相符項目。 如果沒有相符項目,則會傳回 Null 值。 傳回值必須是由其中一個類型轉換動作 (? date、? string...) 所轉換的類型。只需透過其名稱來處理設計階段已知的資料行名稱即可。 不支援計算的輸入,但您可使用參數替換。

  • byItem( byName('customer'), 'orderItems') ? (itemName as string, itemQty as integer)
  • byItem( byItem( byName('customer'), 'orderItems'), 'itemName') ? string

byName

byName(<column name> : string, [<stream name> : string]) => any

依名稱選取資料流中的資料行值。 您可以傳遞選擇性資料流名稱作為第二個引數。 如有多個相符項目,則傳回第一個相符項目。 如果沒有相符項目,則會傳回 Null 值。 傳回值必須是由其中一個類型轉換函式 (TO_DATE、TO_STRING ...) 所轉換的類型。只需透過其名稱來處理設計階段已知的資料行名稱即可。 不支援計算的輸入,但您可使用參數替換。

  • toString(byName('parent'))
  • toLong(byName('income'))
  • toBoolean(byName('foster'))
  • toLong(byName($debtCol))
  • toString(byName('Bogus Column'))
  • toString(byName('Bogus Column', 'DeriveStream'))

byNames

byNames(<column names> : array, [<stream name> : string]) => any

在資料流中依名稱選取資料行陣列。 您可以傳遞選擇性資料流名稱作為第二個引數。 如有多個相符項目,則傳回第一個相符項目。 如果資料行沒有相符項目,則整個輸出會是 NULL 值。 所傳回的值需要類型轉換函式 (toDate、toString...)。只需透過其名稱來處理設計階段已知的資料行名稱即可。 不支援計算的輸入,但您可使用參數替換。

  • toString(byNames(['parent', 'child']))
  • byNames(['parent']) ? string
  • toLong(byNames(['income']))
  • byNames(['income']) ? long
  • toBoolean(byNames(['foster']))
  • toLong(byNames($debtCols))
  • toString(byNames(['a Column']))
  • toString(byNames(['a Column'], 'DeriveStream'))
  • byNames(['orderItem']) ? (itemName as string, itemQty as integer)

byOrigin

byOrigin(<column name> : string, [<origin stream name> : string]) => any

依名稱選取原始資料流中的資料行值。 第二個引數是原始資料流名稱。 如有多個相符項目,則傳回第一個相符項目。 如果沒有相符項目,則會傳回 Null 值。 傳回值必須是由其中一個類型轉換函式 (TO_DATE、TO_STRING ...) 所轉換的類型。只需透過其名稱來處理設計階段已知的資料行名稱即可。 不支援計算的輸入,但您可使用參數替換。

  • toString(byOrigin('ancestor', 'ancestorStream'))

byOrigins

byOrigins(<column names> : array, [<origin stream name> : string]) => any

在資料流中依名稱選取資料行陣列。 第二個引數是其源自的資料流。 如有多個相符項目,則傳回第一個相符項目。 如果沒有相符項目,則會傳回 Null 值。 傳回值必須是由其中一個類型轉換函式 (TO_DATE、TO_STRING ...) 所轉換的類型。只需透過其名稱來處理設計階段已知的資料行名稱即可。 不支援計算的輸入,但您可使用參數替換。

  • toString(byOrigins(['ancestor1', 'ancestor2'], 'ancestorStream'))

byPath

byPath(<value1> : string, [<streamName> : string]) => any

依名稱在資料流中尋找階層式路徑。 您可以傳遞選擇性資料流名稱作為第二個引數。 如果找不到這類路徑,則會傳回 Null。 在設計階段已知的資料行名稱/路徑,應該只依據其名稱或點標記法路徑來處理。 不支援計算的輸入,但您可使用參數替換。

  • byPath('grandpa.parent.child') => column

byPosition

byPosition(<position> : integer) => any

依其在資料流中的相對位置 (從 1 開始) 來選取資料行值。 如果位置超出範圍,則會傳回 NULL 值。 傳回值必須是由其中一個類型轉換函式 (TO_DATE、TO_STRING ...) 所轉換的類型。不支援計算的輸入,但您可使用參數替換。

  • toString(byPosition(1))
  • toDecimal(byPosition(2), 10, 2)
  • toBoolean(byName(4))
  • toString(byName($colName))
  • toString(byPosition(1234))

C

case

case(<condition> : boolean, <true_expression> : any, <false_expression> : any, ...) => any

根據替代條件套用一個值或另一個值。 如果輸入偶數個項目,則最後一個條件的另一個值預設為 NULL。

  • case(10 + 20 == 30, 'dumbo', 'gumbo') -> 'dumbo'
  • case(10 + 20 == 25, 'bojjus', 'do' < 'go', 'gunchus') -> 'gunchus'
  • isNull(case(10 + 20 == 25, 'bojjus', 'do' > 'go', 'gunchus')) -> true
  • case(10 + 20 == 25, 'bojjus', 'do' > 'go', 'gunchus', 'dumbo') -> 'dumbo'

cbrt

cbrt(<value1> : number) => double

計算數字的立方根。

  • cbrt(8) -> 2.0

ceil

ceil(<value1> : number) => number

傳回不小於某數字的最小整數。

  • ceil(-0.1) -> 0

char

char(<Input> : number) => string

傳回輸入數字所代表的 ascii 字元。 如果數字大於 256,則結果相當於 char (number % 256)

  • char(65) -> 'A'
  • char(97) -> 'a'

coalesce

coalesce(<value1> : any, ...) => any

從一組輸入傳回第一個非 null 值。 所有輸入應該是相同的類型。

  • coalesce(10, 20) -> 10
  • coalesce(toString(null), toString(null), 'dumbo', 'bo', 'go') -> 'dumbo'

collect

collect(<value1> : any) => array

將彙總群組中運算式的所有值收集到陣列中。 在此過程中,可以收集結構並將其轉換成替代結構。 項目數等於該群組中的資料列數,而且可包含 Null 值。 收集的項目數應該很小。

  • collect(salesPerson)
  • collect(firstName + lastName))
  • collect(@(name = salesPerson, sales = salesAmount) )

collectUnique

collectUnique(<value1> : any) => array

將彙總群組中運算式的所有值收集到唯一陣列中。 在此過程中,可以收集結構並將其轉換成替代結構。 項目數等於該群組中的資料列數,而且可包含 Null 值。 收集的項目數應該很小。

  • collect(salesPerson)
  • collect(firstName + lastName))
  • collect(@(name = salesPerson, sales = salesAmount) )

columnNames

columnNames(<value1>columnNames( : string, i><value1> : boolean) => array

取得資料流的所有輸出資料行名稱。 您可以傳遞選擇性資料流名稱做為第一個引數。 第二個引數也是選用的,預設值為 false。 如果您將第二個引數設定為 true(),Data Factory 只會傳回透過結構描述漂移進行漂移的資料行。

  • columnNames()
  • columnNames('DeriveStream')
  • columnNames('DeriveStream', true())
  • columnNames('', true())

columns

columns([<stream name> : string]) => any

取得資料流的所有輸出資料行值。 您可以傳遞選擇性資料流名稱作為第二個引數。

  • columns()
  • columns('DeriveStream')

compare

compare(<value1> : any, <value2> : any) => integer

比較相同類型的兩個值。 如果 value1 < value2,則會傳回負整數,如果 value1 == value2,則會傳回 0,如果 value1 > value2,則會傳回正值。

  • (compare(12, 24) < 1) -> true
  • (compare('dumbo', 'dum') > 0) -> true

concat

concat(<this> : string, <that> : string, ...) => string

將任意數目的字串串連在一起。 相當於 + 運算子加上字串。

  • concat('dataflow', 'is', 'awesome') -> 'dataflowisawesome'
  • 'dataflow' + 'is' + 'awesome' -> 'dataflowisawesome'
  • isNull('sql' + null) -> true

concatWS

concatWS(<separator> : string, <this> : string, <that> : string, ...) => string

以分隔符號將任意數目的字串串連在一起。 第一個參數為分隔符號。

  • concatWS(' ', 'dataflow', 'is', 'awesome') -> 'dataflow is awesome'
  • isNull(concatWS(null, 'dataflow', 'is', 'awesome')) -> true
  • concatWS(' is ', 'dataflow', 'awesome') -> 'dataflow is awesome'

contains

contains(<value1> : array, <value2> : unaryfunction) => boolean

如果所提供陣列中的任何元素在所提供的述詞中評估為 true,則傳回 true。 Contains 預期述詞函式中某個元素的參考為 #item。

  • contains([1, 2, 3, 4], #item == 3) -> true
  • contains([1, 2, 3, 4], #item > 5) -> false

cos

cos(<value1> : number) => double

計算餘弦值。

  • cos(10) -> -0.8390715290764524

cosh

cosh(<value1> : number) => double

計算某值的雙曲餘弦值。

  • cosh(0) -> 1.0

count

count([<value1> : any]) => long

取得值的彙總計數。 如果指定了一或多個選用資料行,則會忽略計數中的 NULL 值。

  • count(custId)
  • count(custId, custName)
  • count()
  • count(iif(isNull(custId), 1, NULL))

countAll

countAll([<value1> : any]) => long

取得值的彙總計數 (包括 Null)。

  • countAll(custId)
  • countAll()

countDistinct

countDistinct(<value1> : any, [<value2> : any], ...) => long

取得一組資料行的相異值彙總計數。

  • countDistinct(custId, custName)

countAllDistinct

countAllDistinct(<value1> : any, [<value2> : any], ...) => long

取得一組資料行相異值的彙總計數 (包括 Null)。

  • countAllDistinct(custId, custName)

countIf

countIf(<value1> : boolean, [<value2> : any]) => long

根據條件取得值的彙總計數。 如果指定了選擇性資料行,則會忽略計數中的 NULL 值。

  • countIf(state == 'CA' && commission < 10000, name)

covariancePopulation

covariancePopulation(<value1> : number, <value2> : number) => double

取得兩個資料行之間的母體共變數。

  • covariancePopulation(sales, profit)

covariancePopulationIf

covariancePopulationIf(<value1> : boolean, <value2> : number, <value3> : number) => double

根據條件取得兩個資料行的母體共變數。

  • covariancePopulationIf(region == 'West', sales)

covarianceSample

covarianceSample(<value1> : number, <value2> : number) => double

取得兩個資料行的樣本共變數。

  • covarianceSample(sales, profit)

covarianceSampleIf

covarianceSampleIf(<value1> : boolean, <value2> : number, <value3> : number) => double

根據條件取得兩個資料行的樣本共變數。

  • covarianceSampleIf(region == 'West', sales, profit)

crc32

crc32(<value1> : any, ...) => long

以指定的位元長度為不同基本資料類型的一組資料行計算 CRC32 雜湊,值只能是 0(256)、224、256、384、512。 這可以用來計算資料列的指紋。

  • crc32(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 3630253689L

cumeDist

cumeDist() => integer

CumeDist 函式會計算某個值與分割區中所有值的相對位置。 依照分割區的排序,將目前資料列 (含此列) 之前的列數,除以視窗分割區中的總列數,即為結果。 排序中的任何相等值都會評估為相同的位置。

  • cumeDist()

currentDate

currentDate([<value1> : string]) => date

在此作業開始執行時取得目前的日期。 您可以用 'GMT'、'PST'、'UTC'、'America/Cayman' 的格式傳遞選擇性的時區。 系統會將資料處理站資料中心/區域的當地時區作為預設值。 請參閱 Java 的 SimpleDateFormat 類別,以了解可用的格式。 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.

  • currentDate() == toDate('2250-12-31') -> false
  • currentDate('PST') == toDate('2250-12-31') -> false
  • currentDate('America/New_York') == toDate('2250-12-31') -> false

currentTimestamp

currentTimestamp() => timestamp

在作業開始執行時,以當地時區為準取得目前的時間戳記。

  • currentTimestamp() == toTimestamp('2250-12-31 12:12:12') -> false

currentUTC

currentUTC([<value1> : string]) => timestamp

取得 UTC 格式的目前時間戳記。 如果您想要將目前時間轉譯成與您的叢集時區不同的時區,可以用 'GMT'、'PST'、'UTC'、'America/Cayman' 的格式傳遞選擇性時區。 其會預設為目前的時區。 請參閱 Java 的 SimpleDateFormat 類別,以了解可用的格式。 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html. 若要將 UTC 時間轉換成不同的時區,請使用 fromUTC()

  • currentUTC() == toTimestamp('2050-12-12 19:18:12') -> false
  • currentUTC() != toTimestamp('2050-12-12 19:18:12') -> true
  • fromUTC(currentUTC(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true

D

dayOfMonth

dayOfMonth(<value1> : datetime) => integer

取得指定日期是當月第幾天。

  • dayOfMonth(toDate('2018-06-08')) -> 8

dayOfWeek

dayOfWeek(<value1> : datetime) => integer

取得指定日期的星期日期。 1 - 星期日、2 - 星期一...、7 - 星期六。

  • dayOfWeek(toDate('2018-06-08')) -> 6

dayOfYear

dayOfYear(<value1> : datetime) => integer

取得指定日期的年中日期。

  • dayOfYear(toDate('2016-04-09')) -> 100

days

days(<value1> : integer) => long

天數的持續時間 (以毫秒為單位)。

  • days(2) -> 172800000L

decode

decode(<Input> : any, <Charset> : string) => binary

根據指定的字元集將編碼的輸入資料解碼為字串。 第二個 (選擇性) 引數可用來指定要使用哪個字元集 - 'US-ASCII'、'ISO-8859-1'、'UTF-8' (預設值)、'UTF-16BE'、'UTF-16LE'、'UTF-16'

  • decode(array(toByte(97),toByte(98),toByte(99)), 'US-ASCII') -> abc

degrees

degrees(<value1> : number) => double

將弧度轉換為度。

  • degrees(3.141592653589793) -> 180

denseRank

denseRank() => integer

在視窗的 order by 子句中指定的值群組中,計算某個值的順位。 依照分割區的排序,將目前資料列 (含此列) 之前的列數加一,即為結果。 這些值不會在序列中產生間距。 即使資料未排序,也可進行密集排名,並且尋找值的變化。

  • denseRank()

distinct

distinct(<value1> : array) => array

從陣列傳回項目的不同集合。

  • distinct([10, 20, 30, 10]) => [10, 20, 30]

divide

divide(<value1> : any, <value2> : any) => any

將數字配對相除。 相當於 / 運算子。

  • divide(20, 10) -> 2
  • 20 / 10 -> 2

dropLeft

dropLeft(<value1> : string, <value2> : integer) => string

移除字串左邊任意數目的字元。 如果要求的置放超過字串的長度,則會傳回空字串。

  • dropLeft('bojjus', 2) => 'jjus'
  • dropLeft('cake', 10) => ''

dropRight

dropRight(<value1> : string, <value2> : integer) => string

移除字串右邊任意數目的字元。 如果要求的置放超過字串的長度,則會傳回空字串。

  • dropRight('bojjus', 2) => 'bojj'
  • dropRight('cake', 10) => ''

E

encode

encode(<Input> : string, <Charset> : string) => binary

根據字元集將輸入字串資料編碼為二進位檔。 第二個 (選擇性) 引數可用來指定要使用哪個字元集 - 'US-ASCII'、'ISO-8859-1'、'UTF-8' (預設值)、'UTF-16BE'、'UTF-16LE'、'UTF-16'

  • encode('abc', 'US-ASCII') -> array(toByte(97),toByte(98),toByte(99))

endsWith

endsWith(<string> : string, <substring to check> : string) => boolean

檢查字串是否以提供的字串結尾。

  • endsWith('dumbo', 'mbo') -> true

equals

equals(<value1> : any, <value2> : any) => boolean

「等於」比較運算子。 相當於 == 運算子。

  • equals(12, 24) -> false
  • 12 == 24 -> false
  • 'bad' == 'bad' -> true
  • isNull('good' == toString(null)) -> true
  • isNull(null == null) -> true

equalsIgnoreCase

equalsIgnoreCase(<value1> : string, <value2> : string) => boolean

忽略大小寫的「等於」比較運算子。 相當於 <=> 運算子。

  • 'abc'<=>'Abc' -> true
  • equalsIgnoreCase('abc', 'Abc') -> true

escape

escape(<string_to_escape> : string, <format> : string) => string

根據格式逸出字串。 可接受的格式常值是 'json'、'xml'、'ecmascript'、'html'、'java'。


except

except(<value1> : array, <value2> : array) => array

從另一個卸除的重複項傳回一個陣列的差異集合。

  • except([10, 20, 30], [20, 40]) => [10, 30]

expr

expr(<expr> : string) => any

從字串產生運算式。 這與以非常值形式撰寫此運算式相同。 這可用來以字串表示法傳遞參數。

  • expr('price * discount') => any

F

factorial

factorial(<value1> : number) => long

計算數字的階乘。

  • factorial(5) -> 120

false

false() => boolean

一律傳回 false 值。 如果有名為 'false' 的資料行,則使用函式 syntax(false())

  • (10 + 20 > 30) -> false
  • (10 + 20 > 30) -> false()

filter

filter(<value1> : array, <value2> : unaryfunction) => array

從陣列中篩選出不符合所提供述詞的元素。 Filter 預期述詞函式中某個元素的參考為 #item。

  • filter([1, 2, 3, 4], #item > 2) -> [3, 4]
  • filter(['a', 'b', 'c', 'd'], #item == 'a' || #item == 'b') -> ['a', 'b']

find

find(<value1> : array, <value2> : unaryfunction) => any

從符合條件的陣列中尋找第一個項目。 它會採用篩選函式,您可以在其中以 #item 處理陣列中的項目。 如需深度巢狀對應,您可以使用 #item_n(#item_1, #item_2...) 標記法來參考上層對應。

  • find([10, 20, 30], #item > 10) -> 20
  • find(['azure', 'data', 'factory'], length(#item) > 4) -> 'azure'
  • find([ @( name = 'Daniel', types = [ @(mood = 'jovial', behavior = 'terrific'), @(mood = 'grumpy', behavior = 'bad') ] ), @( name = 'Mark', types = [ @(mood = 'happy', behavior = 'awesome'), @(mood = 'calm', behavior = 'reclusive') ] ) ], contains(#item.types, #item.mood=='happy') /*Filter out the happy kid*/ )
  • @( name = 'Mark', types = [ @(mood = 'happy', behavior = 'awesome'), @(mood = 'calm', behavior = 'reclusive') ] )

first

first(<value1> : any, [<value2> : boolean]) => any

取得資料行群組的第一個值。 如果省略第二個參數 ignoreNulls,則 Data Factory 會假設為 false。

  • first(sales)
  • first(sales, false)

flatten

flatten(<array> : array, <value2> : array ..., <value2> : boolean) => array

將一或多個陣列壓平合併成單一陣列。 會原封不動傳回不可部分完成項目的陣列。 最後一個引數是選用的,預設為 false,以遞迴方式壓平合併超過一層深度。

  • flatten([['bojjus', 'girl'], ['gunchus', 'boy']]) => ['bojjus', 'girl', 'gunchus', 'boy']
  • flatten([[['bojjus', 'gunchus']]] , true) => ['bojjus', 'gunchus']

floor

floor(<value1> : number) => number

傳回不大於某數字的最大整數。

  • floor(-0.1) -> -1

fromBase64

fromBase64(<value1> : string, <encoding type> : string) => string

解碼指定的 base64 編碼字串。 您可以選擇性地傳遞編碼類型。

  • fromBase64('Z3VuY2h1cw==') -> 'gunchus'
  • fromBase64('SGVsbG8gV29ybGQ=', 'Windows-1252') -> 'Hello World'

fromUTC

fromUTC(<value1> : timestamp, [<value2> : string]) => timestamp

從 UTC 轉換成時間戳記。 您可以用 'GMT'、'PST'、'UTC'、'America/Cayman' 的形式選擇性傳遞時區。 其會預設為目前的時區。 請參閱 Java 的 SimpleDateFormat 類別,以了解可用的格式。 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.

  • fromUTC(currentTimestamp()) == toTimestamp('2050-12-12 19:18:12') -> false
  • fromUTC(currentTimestamp(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true

G

greater

greater(<value1> : any, <value2> : any) => boolean

「大於」比較運算子。 相當於 > 運算子。

  • greater(12, 24) -> false
  • ('dumbo' > 'dum') -> true
  • (toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS') > toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> true

greaterOrEqual

greaterOrEqual(<value1> : any, <value2> : any) => boolean

「大於或等於」比較運算子。 相當於 >= 運算子。

  • greaterOrEqual(12, 12) -> true
  • ('dumbo' >= 'dum') -> true

greatest

greatest(<value1> : any, ...) => any

傳回值清單中的最大值作為輸入 (跳過 Null 值)。 如果所有輸入皆為 Null,則傳回 Null。

  • greatest(10, 30, 15, 20) -> 30
  • greatest(10, toInteger(null), 20) -> 20
  • greatest(toDate('2010-12-12'), toDate('2011-12-12'), toDate('2000-12-12')) -> toDate('2011-12-12')
  • greatest(toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS'), toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')) -> toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')

H

hasColumn

hasColumn(<column name> : string, [<stream name> : string]) => boolean

依名稱檢查資料流中的資料行值。 您可以傳遞選擇性資料流名稱作為第二個引數。 只需透過其名稱來處理設計階段已知的資料行名稱即可。 不支援計算的輸入,但您可使用參數替換。

  • hasColumn('parent')

hasError

hasError([<value1> : string]) => boolean

檢查具有所提供識別碼的資產提示是否標記為錯誤。

範例

  • hasError('assert1')
  • hasError('assert2')

hasPath

hasPath(<value1> : string, [<streamName> : string]) => boolean

檢查資料流中是否有特定階層式路徑存在。 您可以傳遞選擇性資料流名稱作為第二個引數。 在設計階段已知的資料行名稱/路徑,應該只依據其名稱或點標記法路徑來處理。 不支援計算的輸入,但您可使用參數替換。

  • hasPath('grandpa.parent.child') => boolean

hex

hex(<value1>: binary) => string

傳回二進位值的十六進位字串表示法

  • hex(toBinary([toByte(0x1f), toByte(0xad), toByte(0xbe)])) -> '1fadbe'

hour

hour(<value1> : timestamp, [<value2> : string]) => integer

取得時間戳記的小時值。 您可以用 'GMT'、'PST'、'UTC'、'America/Cayman' 的格式傳遞選擇性的時區。 當地時區會作為預設值。 請參閱 Java 的 SimpleDateFormat 類別,以了解可用的格式。 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.

  • hour(toTimestamp('2009-07-30 12:58:59')) -> 12
  • hour(toTimestamp('2009-07-30 12:58:59'), 'PST') -> 12

hours

hours(<value1> : integer) => long

時數的持續時間 (以毫秒為單位)。

  • hours(2) -> 7200000L

I

iif

iif(<condition> : boolean, <true_expression> : any, [<false_expression> : any]) => any

根據條件套用一個值或另一個值。 如果未指定其他值,則會將值視為 NULL。 這兩個值必須相容 (數字、字串...)。

  • iif(10 + 20 == 30, 'dumbo', 'gumbo') -> 'dumbo'
  • iif(10 > 30, 'dumbo', 'gumbo') -> 'gumbo'
  • iif(month(toDate('2018-12-01')) == 12, 345.12, 102.67) -> 345.12

iifNull

iifNull(<value1> : any, [<value2> : any], ...) => any

假設有兩個或多個輸入,則會傳回第一個非 Null 項目。 此函式相當於 coalesce。

  • iifNull(10, 20) -> 10
  • iifNull(null, 20, 40) -> 20
  • iifNull('azure', 'data', 'factory') -> 'azure'
  • iifNull(null, 'data', 'factory') -> 'data'

in

in(<array of items> : array, <item to find> : any) => boolean

檢查陣列中是否有某個項目。

  • in([10, 20, 30], 10) -> true
  • in(['good', 'kid'], 'bad') -> false

initCap

initCap(<value1> : string) => string

將每個單字的第一個字母轉換成大寫。 多個單字會以空格分隔。

  • initCap('cool iceCREAM') -> 'Cool Icecream'

instr

instr(<string> : string, <substring to find> : string) => integer

尋找子字串在字串內的位置 (從 1 開始)。 如果找不到,則傳回 0。

  • instr('dumbo', 'mbo') -> 3
  • instr('microsoft', 'o') -> 5
  • instr('good', 'bad') -> 0

intersect

intersect(<value1> : array, <value2> : array) => array

傳回兩個陣列中不同項目的交集。

  • intersect([10, 20, 30], [20, 40]) => [20]

isBitSet

isBitSet (<value1> : array, <value2>:integer ) => boolean

檢查此 bitset 中是否已設定位元位置

  • isBitSet(toBitSet([10, 32, 98]), 10) => true

isBoolean

isBoolean(<value1>: string) => boolean

根據 toBoolean() 規則,檢查字串值是否為布林值

  • isBoolean('true') -> true
  • isBoolean('no') -> true
  • isBoolean('microsoft') -> false

isByte

isByte(<value1> : string) => boolean

根據 toByte() 規則,檢查字串值是否為已知選用格式的值

  • isByte('123') -> true
  • isByte('chocolate') -> false

isDate

isDate (<value1> : string, [<format>: string]) => boolean

使用選擇性輸入日期格式,檢查輸入日期字串是否為日期。 如需可用的格式,請參閱 Java 的 SimpleDateFormat。 如果省略輸入日期格式,則預設格式為 yyyy-[M]M-[d]d。 接受的格式為 [ yyyy, yyyy-[M]M, yyyy-[M]M-[d]d, yyyy-[M]M-[d]dT* ]

  • isDate('2012-8-18') -> true
  • isDate('12/18--234234' -> 'MM/dd/yyyy') -> false

isDecimal

isDecimal (<value1> : string) => boolean

根據 toDecimal() 規則,檢查字串值是否為已知選用格式的小數值

  • isDecimal('123.45') -> true
  • isDecimal('12/12/2000') -> false

isDelete

isDelete([<value1> : integer]) => boolean

檢查資料列是否有刪除標示。 對於取用多個輸入資料流的轉換,您可傳遞資料流 (從 1 開始) 的索引。 資料流索引應為 1 或 2,且預設值為 1。

  • isDelete()
  • isDelete(1)

isDistinct

isDistinct(<value1> : any , <value1> : any) => boolean

尋找資料行或一組資料行是否相異。 它不會將 Null 視為相異值

  • isDistinct(custId, custName) => boolean

isDouble

isDouble (<value1> : string, [<format>: string]) => boolean

根據 toDouble() 規則,檢查字串值是否為已知選用格式的雙精確度值

  • isDouble('123') -> true
  • isDouble('$123.45' -> '$###.00') -> true
  • isDouble('icecream') -> false

isError

isError([<value1> : integer]) => boolean

檢查資料列是否標示為錯誤。 對於取用多個輸入資料流的轉換,您可傳遞資料流 (從 1 開始) 的索引。 資料流索引應為 1 或 2,且預設值為 1。

  • isError()
  • isError(1)

isFloat

isFloat (<value1> : string, [<format>: string]) => boolean

根據 toFloat() 規則,檢查字串值是否為已知選用格式的浮點值

  • isFloat('123') -> true
  • isFloat('$123.45' -> '$###.00') -> true
  • isFloat('icecream') -> false

isIgnore

isIgnore([<value1> : integer]) => boolean

檢查資料列是否標示為要忽略。 對於取用多個輸入資料流的轉換,您可傳遞資料流 (從 1 開始) 的索引。 資料流索引應為 1 或 2,且預設值為 1。

  • isIgnore()
  • isIgnore(1)

isInsert

isInsert([<value1> : integer]) => boolean

檢查資料列是否有插入標示。 對於取用多個輸入資料流的轉換,您可傳遞資料流 (從 1 開始) 的索引。 資料流索引應為 1 或 2,且預設值為 1。

  • isInsert()
  • isInsert(1)

isInteger

isInteger (<value1> : string, [<format>: string]) => boolean

根據 toInteger() 規則,檢查字串值是否為已知選用格式的整數值

  • isInteger('123') -> true
  • isInteger('$123' -> '$###') -> true
  • isInteger('microsoft') -> false

isLong

isLong (<value1> : string, [<format>: string]) => boolean

根據 toLong() 規則,檢查字串值是否為已知選用格式的長數值

  • isLong('123') -> true
  • isLong('$123' -> '$###') -> true
  • isLong('gunchus') -> false

isMatch

isMatch([<value1> : integer]) => boolean

檢查在查閱時是否比對資料列。 對於取用多個輸入資料流的轉換,您可傳遞資料流 (從 1 開始) 的索引。 資料流索引應為 1 或 2,且預設值為 1。

  • isMatch()
  • isMatch(1)

isNan

isNan (<value1> : integral) => boolean

檢查這是否為數字。

  • isNan(10.2) => false

isNull

isNull(<value1> : any) => boolean

檢查值是否為 NULL。

  • isNull(NULL()) -> true
  • isNull('') -> false

isShort

isShort (<value1> : string, [<format>: string]) => boolean

根據 toShort() 規則,檢查字串值是否為已知選用格式的短數值

  • isShort('123') -> true
  • isShort('$123' -> '$###') -> true
  • isShort('microsoft') -> false

isTimestamp

isTimestamp (<value1> : string, [<format>: string]) => boolean

使用選用輸入時間戳記格式,檢查輸入日期字串是否為時間戳記。 如需可用的格式,請參閱 Java 的 SimpleDateFormat。 如果省略時間戳記,則會使用預設模式 yyyy-[M]M-[d]d hh:mm:ss[.f...]。 您可以用 'GMT'、'PST'、'UTC'、'America/Cayman' 的格式傳遞選擇性的時區。 時間戳記支援的精確度最多到毫秒,值為 999。請參閱 Java 的 SimpleDateFormat,以了解可用格式。

  • isTimestamp('2016-12-31 00:12:00') -> true
  • isTimestamp('2016-12-31T00:12:00' -> 'yyyy-MM-dd\\'T\\'HH:mm:ss' -> 'PST') -> true
  • isTimestamp('2012-8222.18') -> false

isUpdate

isUpdate([<value1> : integer]) => boolean

檢查資料列是否有更新標示。 對於取用多個輸入資料流的轉換,您可傳遞資料流 (從 1 開始) 的索引。 資料流索引應為 1 或 2,且預設值為 1。

  • isUpdate()
  • isUpdate(1)

isUpsert

isUpsert([<value1> : integer]) => boolean

檢查資料列是否有插入標示。 對於取用多個輸入資料流的轉換,您可傳遞資料流 (從 1 開始) 的索引。 資料流索引應為 1 或 2,且預設值為 1。

  • isUpsert()
  • isUpsert(1)

J

jaroWinkler

jaroWinkler(<value1> : string, <value2> : string) => double

取得兩個字串之間的 JaroWinkler 距離。

  • jaroWinkler('frog', 'frog') => 1.0

K

keyValues

keyValues(<value1> : array, <value2> : array) => map

建立索引鍵/值的對應。 第一個參數是索引鍵的陣列,第二個則是值的陣列。 這兩個陣列的長度應該相等。

  • keyValues(['bojjus', 'appa'], ['gunchus', 'ammi']) => ['bojjus' -> 'gunchus', 'appa' -> 'ammi']

kurtosis

kurtosis(<value1> : number) => double

取得資料行的峰態。

  • kurtosis(sales)

kurtosisIf

kurtosisIf(<value1> : boolean, <value2> : number) => double

根據準則,取得資料行的峰態。

  • kurtosisIf(region == 'West', sales)

L

lag

lag(<value> : any, [<number of rows to look before> : number], [<default value> : any]) => any

取得第一個參數對目前資料列之前的 n 個資料列評估的值。 第二個參數是要回溯查看的資料列數目,預設值為 1。 如果沒有那麼多資料列,則會傳回 Null 值,除非已指定預設值。

  • lag(amount, 2)
  • lag(amount, 2000, 100)

last

last(<value1> : any, [<value2> : boolean]) => any

取得資料行群組的最後一個值。 如果省略第二個參數 ignoreNulls,則假設為 false。

  • last(sales)
  • last(sales, false)

lastDayOfMonth

lastDayOfMonth(<value1> : datetime) => date

取得指定日期的最後一個月中日期。

  • lastDayOfMonth(toDate('2009-01-12')) -> toDate('2009-01-31')

lead

lead(<value> : any, [<number of rows to look after> : number], [<default value> : any]) => any

取得第一個參數對目前資料列之後的 n 個資料列評估的值。 第二個參數是要正向查看的資料列數目,預設值為 1。 如果沒有那麼多資料列,則會傳回 Null 值,除非已指定預設值。

  • lead(amount, 2)
  • lead(amount, 2000, 100)

least

least(<value1> : any, ...) => any

「小於或等於」比較運算子。 相當於 <= 運算子。

  • least(10, 30, 15, 20) -> 10
  • least(toDate('2010-12-12'), toDate('2011-12-12'), toDate('2000-12-12')) -> toDate('2000-12-12')

left

left(<string to subset> : string, <number of characters> : integral) => string

從索引 1 處開始擷取含特定字元數的子字串。 相當於 SUBSTRING(str, 1, n)。

  • left('bojjus', 2) -> 'bo'
  • left('bojjus', 20) -> 'bojjus'

length

length(<value1> : string) => integer

傳回字串的長度。

  • length('dumbo') -> 5

lesser

lesser(<value1> : any, <value2> : any) => boolean

「小於」比較運算子。 相當於 < 運算子。

  • lesser(12, 24) -> true
  • ('abcd' < 'abc') -> false
  • (toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') < toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')) -> true

lesserOrEqual

lesserOrEqual(<value1> : any, <value2> : any) => boolean

「小於或等於」比較運算子。 相當於 <= 運算子。

  • lesserOrEqual(12, 12) -> true
  • ('dumbo' <= 'dum') -> false

levenshtein

levenshtein(<from string> : string, <to string> : string) => integer

取得兩個字串之間的 levenshtein 距離。

  • levenshtein('boys', 'girls') -> 4

like

like(<string> : string, <pattern match> : string) => boolean

此模式是字面上相符的字串。 下列特殊符號則屬例外: _ 符合輸入中的任何一個字元 (類似於posix 規則運算式中的 .)。% 符合輸入中的零或多個字元 (類似於 posix 規則運算式中的 .*)。 逸出字元為 ''。 如果特殊符號或另一個逸出字元前面有逸出字元,就會逐字比對下列字元。 逸出任何其他字元的動作是無效的。

  • like('icecream', 'ice%') -> true

locate

locate(<substring to find> : string, <string> : string, [<from index - 1-based> : integral]) => integer

尋找子字串在字串內從特定位置起算的位置 (從 1 開始)。 如果省略位置,則視為字串的開頭。 如果找不到,則傳回 0。

  • locate('mbo', 'dumbo') -> 3
  • locate('o', 'microsoft', 6) -> 7
  • locate('bad', 'good') -> 0

log

log(<value1> : number, [<value2> : number]) => double

計算對數值。 可以提供選擇性的底數,否則使用歐拉數。

  • log(100, 10) -> 2

log10

log10(<value1> : number) => double

計算以 10 為底數的對數值。

  • log10(100) -> 2

lookup

lookup(key, key2, ...) => complex[]

使用符合快取接收索引鍵的指定索引鍵,從快取接收查詢第一個資料列。

  • cacheSink#lookup(movieId)

lower

lower(<value1> : string) => string

將字串變成小寫。

  • lower('GunChus') -> 'gunchus'

lpad

lpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string

從左側為字串填補提供的填補內容,直到達到特定長度。 如果字串大於或等於該長度,則會修剪為該長度。

  • lpad('dumbo', 10, '-') -> '-----dumbo'
  • lpad('dumbo', 4, '-') -> 'dumb'

ltrim

ltrim(<string to trim> : string, [<trim characters> : string]) => string

從左側修剪開頭字元的字串。 若未指定第二個參數,則會修剪空白字元。 否則會修剪第二個參數中指定的任何字元。

  • ltrim(' dumbo ') -> 'dumbo '
  • ltrim('!--!du!mbo!', '-!') -> 'du!mbo!'

map

map(<value1> : array, <value2> : unaryfunction) => any

使用所提供的運算式,將陣列的每個元素對應至新的元素。 Map 預期運算式函式中某個元素的參考為 #item。

  • map([1, 2, 3, 4], #item + 2) -> [3, 4, 5, 6]
  • map(['a', 'b', 'c', 'd'], #item + '_processed') -> ['a_processed', 'b_processed', 'c_processed', 'd_processed']

mapAssociation

mapAssociation(<value1> : map, <value2> : binaryFunction) => array

將索引鍵與新值建立關聯,藉以轉換對應。 傳回陣列。 它會採用對應函式,您可以在其中以 #key 處理項目,並以 #key 處理目前的值。

  • mapAssociation(['bojjus' -> 'gunchus', 'appa' -> 'ammi'], @(key = #key, value = #value)) => [@(key = 'bojjus', value = 'gunchus'), @(key = 'appa', value = 'ammi')]

mapIf

mapIf (<value1> : array, <value2> : binaryfunction, <value3>: binaryFunction) => any

有條件地將陣列對應至長度相同或較短的另一個陣列。 這些值可以是任何資料類型,包括 structTypes 在內。 它會採用對應函式,您可以在其中以 #item 處理陣列中的項目,並以 #index 處理目前索引。 如需深度巢狀對應,您可以使用 #item_[n](#item_1, #index_1...) 標記法來參考上層對應。

  • mapIf([10, 20, 30], #item > 10, #item + 5) -> [25, 35]
  • mapIf(['icecream', 'cake', 'soda'], length(#item) > 4, upper(#item)) -> ['ICECREAM', 'CAKE']

mapIndex

mapIndex(<value1> : array, <value2> : binaryfunction) => any

使用所提供的運算式,將陣列的每個元素對應至新的元素。 Map 預期運算式函式中某個元素的參考為 #item,而元素索引的參考為 #index。

  • mapIndex([1, 2, 3, 4], #item + 2 + #index) -> [4, 6, 8, 10]

mapLoop

mapLoop(<value1> : integer, <value2> : unaryfunction) => any

透過從 1 到長度的迴圈,建立該長度的陣列。 它會採用對應函式,您可以在其中以 #index 稱呼陣列中的索引。 如需深度巢狀對應,您可以使用 #index_n(#index_1, #index_2...) 標記法來參考上層對應。

  • mapLoop(3, #index * 10) -> [10, 20, 30]

max

max(<value1> : any) => any

取得資料行的最大值。

  • max(sales)

maxIf

maxIf(<value1> : boolean, <value2> : any) => any

根據準則,取得資料行的最大值。

  • maxIf(region == 'West', sales)

md5

md5(<value1> : any, ...) => string

為不同基本資料類型的一組資料行計算 MD5 摘要,並傳回 32 個字元的十六進位字串。 這可以用來計算資料列的指紋。

  • md5(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '4ce8a880bd621a1ffad0bca905e1bc5a'

mean

mean(<value1> : number) => number

取得資料行的平均值。 相當於 AVG。

  • mean(sales)

meanIf

meanIf(<value1> : boolean, <value2> : number) => number

根據條件取得資料行的平均值。 相當於 avgIf。

  • meanIf(region == 'West', sales)

millisecond

millisecond(<value1> : timestamp, [<value2> : string]) => integer

取得日期的毫秒值。 您可以用 'GMT'、'PST'、'UTC'、'America/Cayman' 的格式傳遞選擇性的時區。 當地時區會作為預設值。 請參閱 Java 的 SimpleDateFormat 類別,以了解可用的格式。 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.

  • millisecond(toTimestamp('2009-07-30 12:58:59.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> 871

milliseconds

milliseconds(<value1> : integer) => long

毫秒數的持續時間 (以毫秒為單位)。

  • milliseconds(2) -> 2L

min

min(<value1> : any) => any

取得資料行的最小值。

  • min(sales)

minIf

minIf(<value1> : boolean, <value2> : any) => any

根據準則,取得資料行的最小值。

  • minIf(region == 'West', sales)

minus

minus(<value1> : any, <value2> : any) => any

減去數字。 從日期中減去天數。 從時間戳記減去持續時間。 減去兩個時間戳記來取得差異 (以毫秒為單位)。 相當於 - 運算子。

  • minus(20, 10) -> 10
  • 20 - 10 -> 10
  • minus(toDate('2012-12-15'), 3) -> toDate('2012-12-12')
  • toDate('2012-12-15') - 3 -> toDate('2012-12-12')
  • toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') + (days(1) + hours(2) - seconds(10)) -> toTimestamp('2019-02-04 07:19:18.871', 'yyyy-MM-dd HH:mm:ss.SSS')
  • toTimestamp('2019-02-03 05:21:34.851', 'yyyy-MM-dd HH:mm:ss.SSS') - toTimestamp('2019-02-03 05:21:36.923', 'yyyy-MM-dd HH:mm:ss.SSS') -> -2072

minute

minute(<value1> : timestamp, [<value2> : string]) => integer

取得時間戳記的分鐘值。 您可以用 'GMT'、'PST'、'UTC'、'America/Cayman' 的格式傳遞選擇性的時區。 當地時區會作為預設值。 請參閱 Java 的 SimpleDateFormat 類別,以了解可用的格式。 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.

  • minute(toTimestamp('2009-07-30 12:58:59')) -> 58
  • minute(toTimestamp('2009-07-30 12:58:59'), 'PST') -> 58

minutes

minutes(<value1> : integer) => long

分鐘數的持續時間 (以毫秒為單位)。

  • minutes(2) -> 120000L

mlookup

mlookup(key, key2, ...) => complex[]

使用符合快取接收索引鍵的指定索引鍵,從快取接收查詢所有相符的資料列。

  • cacheSink#mlookup(movieId)

mod

mod(<value1> : any, <value2> : any) => any

數字配對的模數。 相當於 % 運算子。

  • mod(20, 8) -> 4
  • 20 % 8 -> 4

month

month(<value1> : datetime) => integer

取得日期或時間戳記的月份值。

  • month(toDate('2012-8-8')) -> 8

monthsBetween

monthsBetween(<from date/timestamp> : datetime, <to date/timestamp> : datetime, [<roundoff> : boolean], [<time zone> : string]) => double

取得兩個日期之間的月數。 您可以四捨五入計算。 您可以用 'GMT'、'PST'、'UTC'、'America/Cayman' 的格式傳遞選擇性的時區。 當地時區會作為預設值。 請參閱 Java 的 SimpleDateFormat 類別,以了解可用的格式。 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.

  • monthsBetween(toTimestamp('1997-02-28 10:30:00'), toDate('1996-10-30')) -> 3.94959677

multiply

multiply(<value1> : any, <value2> : any) => any

將數字配對相乘。 相當於 * 運算子。

  • multiply(20, 10) -> 200
  • 20 * 10 -> 200

negate

negate(<value1> : number) => number

將數字轉換為負數。 將正數轉換為負數,或反向轉換。

  • negate(13) -> -13

nextSequence

nextSequence() => long

傳回下一個唯一序列。 數字在分割區內才會連續,且具有 partitionId 前置詞。

  • nextSequence() == 12313112 -> false

normalize

normalize(<String to normalize> : string) => string

將字串值正規化,以區分重音的 unicode 字元。

  • regexReplace(normalize('bo²s'), `\p{M}`, '') -> 'boys'

not

not(<value1> : boolean) => boolean

邏輯負運算子。

  • not(true) -> false
  • not(10 == 20) -> true

notEquals

notEquals(<value1> : any, <value2> : any) => boolean

「不等於」比較運算子。 相當於 != 運算子。

  • 12 != 24 -> true
  • 'bojjus' != 'bo' + 'jjus' -> false

nTile

nTile([<value1> : integer]) => integer

NTile 函式會將每個視窗分割區中的資料列分成 n 個貯體,範圍從 1 到 n。 貯體值的最大差異為 1。 如果分割區中的資料列數目無法平均分成貯體數,其餘值將會逐一均分給各個貯體,從第一個貯體開始。 在計算 tertiles、四分位數、十分位數和其他常見的摘要統計資料時,NTile 函式很有用。 此函數會在初始化期間計算兩個變數:一般貯體的大小將會新增一個額外的資料列。 這兩個變數都是以目前分割區的大小為基礎。 在計算過程中,此函式會追蹤目前的資料列數目、目前的貯體數目,和貯體將有所變更的資料列號碼 (bucketThreshold)。 當目前的資料列數目達到貯體閾值時,貯體值將會加一,而閾值會依貯體大小增加 (如果目前的貯體已填補,則額外再加一)。

  • nTile()
  • nTile(numOfBuckets)

null

null() => null

傳回 NULL 值。 如果有名為「null」的資料行,則使用函數 syntax(null())。 任何使用此函數的作業都將導致 NULL。

  • isNull('dumbo' + null) -> true
  • isNull(10 * null) -> true
  • isNull('') -> false
  • isNull(10 + 20) -> false
  • isNull(10/0) -> true

O

or

or(<value1> : boolean, <value2> : boolean) => boolean

邏輯 OR 運算子。 相當於 ||。

  • or(true, false) -> true
  • true || false -> true

originColumns

originColumns(<streamName> : string) => any

取得建立資料行之來源資料流的所有輸出資料行。 必須以另一個函式括住。

  • array(toString(originColumns('source1')))

output

output() => any

傳回快取接收結果的第一個資料列

  • cacheSink#output()

outputs

output() => any

傳回快取接收結果的整個輸出資料列集

  • cacheSink#outputs()

P

partitionId

partitionId() => integer

傳回輸入資料列所在的目前分割區識別碼。

  • partitionId()

pMod

pMod(<value1> : any, <value2> : any) => any

數字配對的正模數。

  • pmod(-20, 8) -> 4

power

power(<value1> : number, <value2> : number) => double

以一數為底數、另一數為乘冪求值。

  • power(10, 2) -> 100

R

radians

radians(<value1> : number) => double

將度數轉換為弧度

  • radians(180) => 3.141592653589793

random

random(<value1> : integral) => long

傳回資料分割內已知選用種子的亂數。 種子應該是固定值,並搭配使用 partitionId 以產生隨機值

  • random(1) == 1 -> false

rank

rank() => integer

在視窗的 order by 子句中指定的值群組中,計算某個值的順位。 依照分割區的排序,將目前資料列 (含此列) 之前的列數加一,即為結果。 這些值會在序列中產生間距。 即使資料未排序,也可進行密集排名,並且尋找值的變化。

  • rank()

reassociate

reassociate(<value1> : map, <value2> : binaryFunction) => map

將索引鍵與新值建立關聯,藉以轉換對應。 它會採用對應函式,您可以在其中以 #key 處理項目,並以 #key 處理目前的值。

  • reassociate(['fruit' -> 'apple', 'vegetable' -> 'tomato'], substring(#key, 1, 1) + substring(#value, 1, 1)) => ['fruit' -> 'fa', 'vegetable' -> 'vt']

reduce

reduce(<value1> : array, <value2> : any, <value3> : binaryfunction, <value4> : unaryfunction) => any

累加陣列中的元素。 Reduce 預期第一個運算式函式中的累加器和一個元素的參考為 #acc 和 #item,而且其預期所產生的值為要在第二個運算式函式中使用的 #result。

  • toString(reduce(['1', '2', '3', '4'], '0', #acc + #item, #result)) -> '01234'

regexExtract

regexExtract(<string> : string, <regex to find> : string, [<match group 1-based index> : integral]) => string

擷取指定規則運算式模式的相符子字串。 最後一個參數會識別比對群組,如果省略則預設為 1。 使用 <regex> (反引號) 比對字串 (不逸出)。 索引 0 會傳回所有相符項目。 如果沒有相符的群組,索引 1 以上將不會傳回任何結果。

  • regexExtract('Cost is between 600 and 800 dollars', '(\\d+) and (\\d+)', 2) -> '800'
  • regexExtract('Cost is between 600 and 800 dollars', `(\d+) and (\d+)`, 2) -> '800'

regexMatch

regexMatch(<string> : string, <regex to match> : string) => boolean

檢查字串是否符合指定的規則運算式模式。 使用 <regex> (反引號) 比對字串 (不逸出)。

  • regexMatch('200.50', '(\\d+).(\\d+)') -> true
  • regexMatch('200.50', `(\d+).(\d+)`) -> true

regexReplace

regexReplace(<string> : string, <regex to find> : string, <substring to replace> : string) => string

將指定字串中出現的某個規則運算式模式全部取代為另一個 substring。使用 <regex> (反引號) 比對字串 (不逸出)。

  • regexReplace('100 and 200', '(\\d+)', 'bojjus') -> 'bojjus and bojjus'
  • regexReplace('100 and 200', `(\d+)`, 'gunchus') -> 'gunchus and gunchus'

regexSplit

regexSplit(<string to split> : string, <regex expression> : string) => array

根據分隔符號和規則運算式分割字串,並傳回字串陣列。

  • regexSplit('bojjusAgunchusBdumbo', `[CAB]`) -> ['bojjus', 'gunchus', 'dumbo']
  • regexSplit('bojjusAgunchusBdumboC', `[CAB]`) -> ['bojjus', 'gunchus', 'dumbo', '']
  • (regexSplit('bojjusAgunchusBdumboC', `[CAB]`)[1]) -> 'bojjus'
  • isNull(regexSplit('bojjusAgunchusBdumboC', `[CAB]`)[20]) -> true

replace

replace(<string> : string, <substring to find> : string, [<substring to replace> : string]) => string

將指定字串中出現的某個子字串全部取代為另一個子字串。 如果省略最後一個參數,則預設為空字串。

  • replace('doggie dog', 'dog', 'cat') -> 'catgie cat'
  • replace('doggie dog', 'dog', '') -> 'gie '
  • replace('doggie dog', 'dog') -> 'gie '

reverse

reverse(<value1> : string) => string

反轉字串。

  • reverse('gunchus') -> 'suhcnug'

right(<string to subset> : string, <number of characters> : integral) => string

從右側擷取含特定字元數的子字串。 相當於 SUBSTRING(str, LENGTH(str) - n, n)。

  • right('bojjus', 2) -> 'us'
  • right('bojjus', 20) -> 'bojjus'

rlike

rlike(<string> : string, <pattern match> : string) => boolean

檢查字串是否符合指定的規則運算式模式。

  • rlike('200.50', `(\d+).(\d+)`) -> true
  • rlike('bogus', `M[0-9]+.*`) -> false

round

round(<number> : number, [<scale to round> : number], [<rounding option> : integral]) => double

以指定的選擇性小數位數和選擇性的捨入模式將數字捨入進位。 如果省略小數位數,則預設為 0。 如果省略捨入模式,則預設為 ROUND_HALF_UP(5)。 四捨五入的值包括

  1. ROUND_UP - 四捨五入模式,以從零四捨五入。
  2. ROUND_DOWN - 四捨五入模式,以四捨五入為零。
  3. ROUND_CEILING - 四捨五入模式,以四捨五入為無限大的正數。 [如果輸入為正數,則相當於 ROUND_UP。 如果為負數,則相當於 ROUND_DOWN。 例如 = -1.1 在使用 ROUND_CEILING 時是 -1.0,使用 ROUND_UP 時是 -2]
  4. ROUND_FLOOR - 四捨五入模式,以四捨五入為無限大的負數。 [如果輸入為正數,則相當於 ROUND_DOWN。 如果為負數,則相當於 ROUND_UP]
  5. ROUND_HALF_UP - 四捨五入模式,除非兩個鄰近項目相等,否則會四捨五入為「最接近的鄰近項目」,在此情況下為 ROUND_UP。 [資料流程的最常見值 + 預設值]。
  6. ROUND_HALF_DOWN - 四捨五入模式,除非兩個鄰近項目相等,否則會四捨五入為「最接近的鄰近項目」,在此情況下為 ROUND_DOWN。
  7. ROUND_HALF_EVEN - 四捨五入模式,除非兩個鄰近項目相等,否則會四捨五入為「最接近的鄰近項目」,在此情況下,會四捨五入為偶數鄰近項目。
  8. ROUND_UNNECESSARY - 四捨五入模式,以判斷四捨五入運算具有確切的結果,因此不需要四捨五入。
  • round(100.123) -> 100.0
  • round(2.5, 0) -> 3.0
  • round(5.3999999999999995, 2, 7) -> 5.40

rowNumber

rowNumber() => integer

為視窗中的資料列指派循序的資料列編號,從 1 開始。

  • rowNumber()

rpad

rpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string

從右側為字串填補提供的填補內容,直到達到特定長度。 如果字串大於或等於該長度,則會修剪為該長度。

  • rpad('dumbo', 10, '-') -> 'dumbo-----'
  • rpad('dumbo', 4, '-') -> 'dumb'
  • rpad('dumbo', 8, '<>') -> 'dumbo<><'

rtrim

rtrim(<string to trim> : string, [<trim characters> : string]) => string

從右側修剪後置字元的字串。 若未指定第二個參數,則會修剪空白字元。 否則會修剪第二個參數中指定的任何字元。

  • rtrim(' dumbo ') -> ' dumbo'
  • rtrim('!--!du!mbo!', '-!') -> '!--!du!mbo'

S

second

second(<value1> : timestamp, [<value2> : string]) => integer

取得日期的秒值。 您可以用 'GMT'、'PST'、'UTC'、'America/Cayman' 的格式傳遞選擇性的時區。 當地時區會作為預設值。 請參閱 Java 的 SimpleDateFormat 類別,以了解可用的格式。 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.

  • second(toTimestamp('2009-07-30 12:58:59')) -> 59

seconds

seconds(<value1> : integer) => long

秒數的持續時間 (以毫秒為單位)。

  • seconds(2) -> 2000L

setBitSet

setBitSet (<value1>: array, <value2>:array) => array

設定此 bitset 中的位元位置

  • setBitSet(toBitSet([10, 32]), [98]) => [4294968320L, 17179869184L]

sha1

sha1(<value1> : any, ...) => string

為不同基本資料類型的一組資料行計算 SHA-1 摘要,並傳回 40 個字元的十六進位字串。 這可以用來計算資料列的指紋。

  • sha1(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '46d3b478e8ec4e1f3b453ac3d8e59d5854e282bb'

sha2

sha2(<value1> : integer, <value2> : any, ...) => string

以指定的位元長度為不同基本資料類型的一組資料行計算 SHA-2 摘要,值只能是 0(256)、224、256、384、512。 這可以用來計算資料列的指紋。

  • sha2(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 'afe8a553b1761c67d76f8c31ceef7f71b66a1ee6f4e6d3b5478bf68b47d06bd3'

sin

sin(<value1> : number) => double

計算正弦值。

  • sin(2) -> 0.9092974268256817

sinh

sinh(<value1> : number) => double

計算雙曲正弦值。

  • sinh(0) -> 0.0

size

size(<value1> : any) => integer

尋找陣列或對應類型的大小

  • size(['element1', 'element2']) -> 2
  • size([1,2,3]) -> 3

skewness

skewness(<value1> : number) => double

取得資料行的偏態。

  • skewness(sales)

skewnessIf

skewnessIf(<value1> : boolean, <value2> : number) => double

根據條件取得資料行的偏態。

  • skewnessIf(region == 'West', sales)

slice

slice(<array to slice> : array, <from 1-based index> : integral, [<number of items> : integral]) => array

從某個位置擷取陣列的子集。 位置從 1 開始。 如果省略長度,則預設為字串的結尾處。

  • slice([10, 20, 30, 40], 1, 2) -> [10, 20]
  • slice([10, 20, 30, 40], 2) -> [20, 30, 40]
  • slice([10, 20, 30, 40], 2)[1] -> 20
  • isNull(slice([10, 20, 30, 40], 2)[0]) -> true
  • isNull(slice([10, 20, 30, 40], 2)[20]) -> true
  • slice(['a', 'b', 'c', 'd'], 8) -> []

sort

sort(<value1> : array, <value2> : binaryfunction) => array

使用所提供的述詞函式來排序陣列。 Sort 需要運算式函式中兩個連續元素的參考為 #item1 和 #item2。

  • sort([4, 8, 2, 3], compare(#item1, #item2)) -> [2, 3, 4, 8]
  • sort(['a3', 'b2', 'c1'], iif(right(#item1, 1) >= right(#item2, 1), 1, -1)) -> ['c1', 'b2', 'a3']

soundex

soundex(<value1> : string) => string

取得字串的 soundex 代碼。

  • soundex('genius') -> 'G520'

split

split(<string to split> : string, <split characters> : string) => array

根據分隔符號分割字串,並傳回字串陣列。

  • split('bojjus,guchus,dumbo', ',') -> ['bojjus', 'guchus', 'dumbo']
  • split('bojjus,guchus,dumbo', '|') -> ['bojjus,guchus,dumbo']
  • split('bojjus, guchus, dumbo', ', ') -> ['bojjus', 'guchus', 'dumbo']
  • split('bojjus, guchus, dumbo', ', ')[1] -> 'bojjus'
  • isNull(split('bojjus, guchus, dumbo', ', ')[0]) -> true
  • isNull(split('bojjus, guchus, dumbo', ', ')[20]) -> true
  • split('bojjusguchusdumbo', ',') -> ['bojjusguchusdumbo']

sqrt

sqrt(<value1> : number) => double

計算數字的平方根。

  • sqrt(9) -> 3

startsWith

startsWith(<string> : string, <substring to check> : string) => boolean

檢查字串是否以提供的字串開頭。

  • startsWith('dumbo', 'du') -> true

stddev

stddev(<value1> : number) => double

取得資料行的標準差。

  • stdDev(sales)

stddevIf

stddevIf(<value1> : boolean, <value2> : number) => double

根據準則,取得資料行的標準差。

  • stddevIf(region == 'West', sales)

stddevPopulation

stddevPopulation(<value1> : number) => double

取得資料行的母體標準差。

  • stddevPopulation(sales)

stddevPopulationIf

stddevPopulationIf(<value1> : boolean, <value2> : number) => double

根據條件取得資料行的母體標準差。

  • stddevPopulationIf(region == 'West', sales)

stddevSample

stddevSample(<value1> : number) => double

取得資料行的樣本標準差。

  • stddevSample(sales)

stddevSampleIf

stddevSampleIf(<value1> : boolean, <value2> : number) => double

根據準則,取得資料行的樣本標準差。

  • stddevSampleIf(region == 'West', sales)

subDays

subDays(<date/timestamp> : datetime, <days to subtract> : integral) => datetime

從日期或時間戳記中減去天數。 相當於日期的 - 運算子。

  • subDays(toDate('2016-08-08'), 1) -> toDate('2016-08-07')

subMonths

subMonths(<date/timestamp> : datetime, <months to subtract> : integral) => datetime

從日期或時間戳記中減去月數。

  • subMonths(toDate('2016-09-30'), 1) -> toDate('2016-08-31')

substring

substring(<string to subset> : string, <from 1-based index> : integral, [<number of characters> : integral]) => string

從某個位置擷取特定長度的子字串。 位置從 1 開始。 如果省略長度,則預設為字串的結尾處。

  • substring('Cat in the hat', 5, 2) -> 'in'
  • substring('Cat in the hat', 5, 100) -> 'in the hat'
  • substring('Cat in the hat', 5) -> 'in the hat'
  • substring('Cat in the hat', 100, 100) -> ''

substringIndex

substringIndex(<string to subset><delimiter>substringIndex( : string, : string, <count of delimiter occurences> : integral]) => string

在分隔符號的 count 出現之前擷取子字串。 如果 count 為正數,則會傳回最後一個分隔符號左邊的所有內容 (從左計數)。 如果 count 為負數,則會傳回最後一個分隔符號右邊的所有內容 (從右計數)。

  • substringIndex('111-222-333', '-', 1) -> '111'
  • substringIndex('111-222-333', '-', 2) -> '111-222'
  • substringIndex('111-222-333', '-', -1) -> '333'
  • substringIndex('111-222-333', '-', -2) -> '222-333'

sum

sum(<value1> : number) => number

取得數值資料行的彙總總和。

  • sum(col)

sumDistinct

sumDistinct(<value1> : number) => number

取得數值資料行的相異值彙總總和。

  • sumDistinct(col)

sumDistinctIf

sumDistinctIf(<value1> : boolean, <value2> : number) => number

根據條件取得數值資料行的彙總總和。 條件可依據任何資料行。

  • sumDistinctIf(state == 'CA' && commission < 10000, sales)
  • sumDistinctIf(true, sales)

sumIf

sumIf(<value1> : boolean, <value2> : number) => number

根據條件取得數值資料行的彙總總和。 條件可依據任何資料行。

  • sumIf(state == 'CA' && commission < 10000, sales)
  • sumIf(true, sales)

T

tan

tan(<value1> : number) => double

計算正切值。

  • tan(0) -> 0.0

tanh

tanh(<value1> : number) => double

計算雙曲正切值。

  • tanh(0) -> 0.0

toBase64

toBase64(<value1> : string, <encoding type> : string]) => string

以 base64 編碼指定的字串。 您可以選擇性地傳遞編碼類型

  • toBase64('bojjus') -> 'Ym9qanVz'
  • toBase64('± 25000, € 5.000,- |', 'Windows-1252') -> 'sSAyNTAwMCwggCA1LjAwMCwtIHw='

toBinary

toBinary(<value1> : any) => binary

將任何數值/日期/時間戳記/字串轉換為二進位表示法。

  • toBinary(3) -> [0x11]

toBoolean

toBoolean(<value1> : string) => boolean

將 ('t', 'true', 'y', 'yes', '1') 值轉換為 true,並將 ('f', 'false', 'n', 'no', '0') 值轉換為 false,而任何其他值皆為 NULL。

  • toBoolean('true') -> true
  • toBoolean('n') -> false
  • isNull(toBoolean('truthy')) -> true

toByte

toByte(<value> : any, [<format> : string], [<locale> : string]) => byte

將任何數值或字串轉換為位元組值。 可使用選擇性的 Java 十進位格式進行轉換。

  • toByte(123)
  • 123
  • toByte(0xFF)
  • -1
  • toByte('123')
  • 123

toDate

toDate(<string> : any, [<date format> : string]) => date

使用選擇性輸入日期格式,將輸入日期字串轉換為日期。 請參閱 Java 的 SimpleDateFormat 類別,以了解可用的格式。 如果省略輸入日期格式,則預設格式為 yyyy-[M]M-[d]d。 接受的格式為:[ yyyy, yyyy-[M]M, yyyy-[M]M-[d]d, yyyy-[M]M-[d]dT* ]。

  • toDate('2012-8-18') -> toDate('2012-08-18')
  • toDate('12/18/2012', 'MM/dd/yyyy') -> toDate('2012-12-18')

toDecimal

toDecimal(<value> : any, [<precision> : integral], [<scale> : integral], [<format> : string], [<locale> : string]) => decimal(10,0)

將任何數值或字串轉換為小數值。 如果未指定精確度和小數位數,則會預設為 (10,2)。 可使用選擇性的 Java 十進位格式進行轉換。 採用 BCP47 語言形式的選擇性地區設定格式,例如 en-US、de、zh-CN。

  • toDecimal(123.45) -> 123.45
  • toDecimal('123.45', 8, 4) -> 123.4500
  • toDecimal('$123.45', 8, 4,'$###.00') -> 123.4500
  • toDecimal('Ç123,45', 10, 2, 'Ç###,##', 'de') -> 123.45

toDouble

toDouble(<value> : any, [<format> : string], [<locale> : string]) => double

將任何數值或字串轉換為雙精準數值。 可使用選擇性的 Java 十進位格式進行轉換。 採用 BCP47 語言形式的選擇性地區設定格式,例如 en-US、de、zh-CN。

  • toDouble(123.45) -> 123.45
  • toDouble('123.45') -> 123.45
  • toDouble('$123.45', '$###.00') -> 123.45
  • toDouble('Ç123,45', 'Ç###,##', 'de') -> 123.45

toFloat

toFloat(<value> : any, [<format> : string], [<locale> : string]) => float

將任何數值或字串轉換為浮點值。 可使用選擇性的 Java 十進位格式進行轉換。 截斷任何 double。

  • toFloat(123.45) -> 123.45f
  • toFloat('123.45') -> 123.45f
  • toFloat('$123.45', '$###.00') -> 123.45f

toInteger

toInteger(<value> : any, [<format> : string], [<locale> : string]) => integer

將任何數值或字串轉換為整數值。 可使用選擇性的 Java 十進位格式進行轉換。 截斷任何長數值、浮點數、雙精確度。

  • toInteger(123) -> 123
  • toInteger('123') -> 123
  • toInteger('$123', '$###') -> 123

toLong

toLong(<value> : any, [<format> : string], [<locale> : string]) => long

將任何數值或字串轉換為長值。 可使用選擇性的 Java 十進位格式進行轉換。 截斷任何浮點數、雙精度浮點數。

  • toLong(123) -> 123
  • toLong('123') -> 123
  • toLong('$123', '$###') -> 123

topN

topN(<column/expression> : any, <count> : long, <n> : integer) => array

根據 count 引數取得這個資料行的前 N 個值。

  • topN(custId, count, 5)
  • topN(productId, num_sales, 10)

toShort

toShort(<value> : any, [<format> : string], [<locale> : string]) => short

將任何數值或字串轉換為短值。 可使用選擇性的 Java 十進位格式進行轉換。 截斷任何整數、長數值、浮點數、雙精確度。

  • toShort(123) -> 123
  • toShort('123') -> 123
  • toShort('$123', '$###') -> 123

toString

toString(<value> : any, [<number format/date format> : string], [<date locale> : string]) => string

將基本資料類型轉換為字串。 針對數字和日期,可以指定格式。 若未指定,則會選擇系統預設值。對於數字會使用 Java 十進位格式。 如需所有可能的日期格式,請參閱 Java SimpleDateFormat。預設格式為 yyyy-mm-dd。 對於日期或時間戳記,可以選擇性地指定地區設定。

  • toString(10) -> '10'
  • toString('engineer') -> 'engineer'
  • toString(123456.789, '##,###.##') -> '123,456.79'
  • toString(123.78, '000000.000') -> '000123.780'
  • toString(12345, '##0.#####E0') -> '12.345E3'
  • toString(toDate('2018-12-31')) -> '2018-12-31'
  • isNull(toString(toDate('2018-12-31', 'MM/dd/yy'))) -> true
  • toString(4 == 20) -> 'false'
  • toString(toDate('12/31/18', 'MM/dd/yy', 'es-ES'), 'MM/dd/yy', 'de-DE')

toTimestamp

toTimestamp(<string> : any, [<timestamp format> : string], [<time zone> : string]) => timestamp

以指定的選擇性時間戳記格式將字串轉換為時間戳記。 如果省略時間戳記,則會使用預設模式 yyyy-[M]M-[d]d hh:mm:ss[.f...]。 您可以用 'GMT'、'PST'、'UTC'、'America/Cayman' 的格式傳遞選擇性的時區。 時間戳記支援的精確度高達毫秒,值為 999。 請參閱 Java 的 SimpleDateFormat 類別,以了解可用的格式。 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.

  • toTimestamp('2016-12-31 00:12:00') -> toTimestamp('2016-12-31 00:12:00')
  • toTimestamp('2016-12-31T00:12:00', 'yyyy-MM-dd\'T\'HH:mm:ss', 'PST') -> toTimestamp('2016-12-31 00:12:00')
  • toTimestamp('12/31/2016T00:12:00', 'MM/dd/yyyy\'T\'HH:mm:ss') -> toTimestamp('2016-12-31 00:12:00')
  • millisecond(toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> 871

toUTC

toUTC(<value1> : timestamp, [<value2> : string]) => timestamp

將時間戳記轉換為 UTC。 您可以用 'GMT'、'PST'、'UTC'、'America/Cayman' 的格式傳遞選擇性的時區。 其預設值為目前的時區。 請參閱 Java 的 SimpleDateFormat 類別,以了解可用的格式。 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.

  • toUTC(currentTimestamp()) == toTimestamp('2050-12-12 19:18:12') -> false
  • toUTC(currentTimestamp(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true

translate

translate(<string to translate> : string, <lookup characters> : string, <replace characters> : string) => string

將字串中的一組字元取代為另一組字元。 字元的取代是 1 對 1。

  • translate('(bojjus)', '()', '[]') -> '[bojjus]'
  • translate('(gunchus)', '()', '[') -> '[gunchus'

trim

trim(<string to trim> : string, [<trim characters> : string]) => string

修剪開頭和結尾字元的字串。 若未指定第二個參數,則會修剪空白字元。 否則會修剪第二個參數中指定的任何字元。

  • trim(' dumbo ') -> 'dumbo'
  • trim('!--!du!mbo!', '-!') -> 'dumbo'

true

true() => boolean

一律傳回 true 值。 如果有名為 'true' 的資料行,則使用函式 syntax(true())

  • (10 + 20 == 30) -> true
  • (10 + 20 == 30) -> true()

typeMatch

typeMatch(<type> : string, <base type> : string) => boolean

比對資料行的類型。 只能用於模式運算式中。 Number 會比對出短數值、整數、長數值、雙精確度、浮點數或小數,integral 會比對出短數值、整數、長數值,fractional 會比對出雙精準數、浮點數、小數,而 datetime 會比對出日期或時間戳記類型。

  • typeMatch(type, 'number')
  • typeMatch('date', 'datetime')

U

unescape

unescape(<string_to_escape> : string, <format> : string) => string

根據格式取消逸出字串。 可接受的格式常值是 'json'、'xml'、'ecmascript'、'html'、'java'。

  • unescape('{\\\\\"value\\\\\": 10}', 'json')
  • '{\\\"value\\\": 10}'

unfold

unfold (<value1>: array) => any

將陣列展開成一組資料列,並重複每個資料列中其餘資料行的值。

  • unfold(addresses) => any
  • unfold( @(name = salesPerson, sales = salesAmount) ) => any

unhex

unhex(<value1>: string) => binary

取消其字串表示法的二進位值。 這可以與 sha2、md5 搭配使用,以從字串轉換成二進位表示法

  • unhex('1fadbe') -> toBinary([toByte(0x1f), toByte(0xad), toByte(0xbe)])
  • unhex(md5(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))) -> toBinary([toByte(0x4c),toByte(0xe8),toByte(0xa8),toByte(0x80),toByte(0xbd),toByte(0x62),toByte(0x1a),toByte(0x1f),toByte(0xfa),toByte(0xd0),toByte(0xbc),toByte(0xa9),toByte(0x05),toByte(0xe1),toByte(0xbc),toByte(0x5a)])

union

union(<value1>: array, <value2> : array) => array

傳回 2 個陣列中不同項目的聯集集合。

  • union([10, 20, 30], [20, 40]) => [10, 20, 30, 40]

upper

upper(<value1> : string) => string

將字串變成大寫。

  • upper('bojjus') -> 'BOJJUS'

uuid

uuid() => string

傳回產生的 UUID。

  • uuid()

V

variance

variance(<value1> : number) => double

取得資料行的變異數。

  • variance(sales)

varianceIf

varianceIf(<value1> : boolean, <value2> : number) => double

根據條件取得資料行的變異數。

  • varianceIf(region == 'West', sales)

variancePopulation

variancePopulation(<value1> : number) => double

取得資料行的母體變異數。

  • variancePopulation(sales)

variancePopulationIf

variancePopulationIf(<value1> : boolean, <value2> : number) => double

根據條件取得資料行的母體變異數。

  • variancePopulationIf(region == 'West', sales)

varianceSample

varianceSample(<value1> : number) => double

取得資料行的無偏變異數。

  • varianceSample(sales)

varianceSampleIf

varianceSampleIf(<value1> : boolean, <value2> : number) => double

根據條件取得資料行的無偏變異數。

  • varianceSampleIf(region == 'West', sales)

星期三

weekOfYear

weekOfYear(<value1> : datetime) => integer

取得指定日期的年中周次。

  • weekOfYear(toDate('2008-02-20')) -> 8

weeks

weeks(<value1> : integer) => long

週數的持續時間 (以毫秒為單位)。

  • weeks(2) -> 1209600000L

X

xor

xor(<value1> : boolean, <value2> : boolean) => boolean

邏輯 XOR 運算子。 相當於 ^ 運算子。

  • xor(true, false) -> true
  • xor(true, true) -> false
  • true ^ false -> true

Y

year

year(<value1> : datetime) => integer

取得日期的年份值。

  • year(toDate('2012-8-8')) -> 2012