次の方法で共有


マッピング データ フローでのデータ変換式の使用

適用対象: Azure Data Factory Azure Synapse Analytics

Tip

Microsoft Fabric の Data Factory (企業向けのオールインワン分析ソリューション) を試してみてください。 Microsoft Fabric では、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法については、こちらを参照してください。

データ フローは、Azure Data Factory パイプラインと Azure Synapse Analytics パイプラインの両方で使用できます。 この記事は、マッピング データ フローに適用されます。 変換を初めて使用する場合は、入門記事「 マッピング データ フローを使用したデータの変換」を参照してください。

この記事では、マッピング データ フローでの 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

列の個別の値のおおよその集計数を取得します。 省略可能な 2 番目のパラメーターは、推定誤差を制御するためのものです。

  • 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

キーとしてアサート ID を含む行のすべてのエラー メッセージのマップを返します。

Examples

  • 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

最初の値が他の 2 つの値の範囲内にあるかどうかを確認します。 数値、文字列、および datetime 値を比較できます。

  • 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

ストリームでの名前で列の値を選択します。 省略可能なストリーム名を 2 番目の引数として渡すことができます。 複数の一致がある場合は、最初の一致が返されます。 一致がない場合は、 NULL 値が返されます。 戻り値は、型変換関数 ( TO_DATETO_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

ストリーム内の名前を指定して列の配列を選択します。 省略可能なストリーム名を 2 番目の引数として渡すことができます。 複数の一致がある場合は、最初の一致が返されます。 列に一致する値がない場合、出力全体は NULL 値になります。 戻り値には、型変換関数 ( toDatetoStringなど) が必要です。 デザイン時に名前によって認識される列名をアドレス指定します。 計算された入力はサポートされていませんが、パラメーターの置換を使用できます。

  • 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

元のストリームでの名前で列の値を選択します。 2 番目の引数は元のストリームの名前です。 複数の一致がある場合は、最初の一致が返されます。 一致がない場合は、 NULL 値が返されます。 戻り値は、型変換関数 ( TO_DATETO_STRINGなど) によって型変換される必要があります。 デザイン時に名前によって認識される列名をアドレス指定します。 計算された入力はサポートされていませんが、パラメーターの置換を使用できます。

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

byOrigins

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

ストリーム内の名前を指定して列の配列を選択します。 2 番目の引数は、発生元のストリームです。 複数の一致がある場合は、最初の一致が返されます。 一致がない場合は、 NULL 値が返されます。 戻り値は、型変換関数 ( TO_DATETO_STRINGなど) によって型変換される必要があります。 デザイン時に名前によって認識される列名をアドレス指定します。 計算された入力はサポートされていませんが、パラメーターの置換を使用できます。

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

byPath

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

ストリームでの名前で階層パスを見つけます。 省略可能なストリーム名を 2 番目の引数として渡すことができます。 このようなパスが見つからない場合は、 NULLを返します。 デザイン時に既知の列名/パスは、名前またはドット表記のパスを使用してのみ対処する必要があります。 計算された入力はサポートされていませんが、パラメーターの置換を使用できます。

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

byPosition

byPosition(<position> : integer) => any

ストリーム内の相対位置 (1 から始まる) で列の値を選択します。 位置が範囲外の場合は、 NULL 値を返します。 戻り値は、型変換関数 ( TO_DATETO_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

交互の条件に基づいて、 case 関数は一方の値を適用します。 入力の数が偶数の場合、もう一方の入力は既定で最後の条件の 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 (数値 % 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( <値 1>columnNames( : string, i><value1> : boolean) => array

ストリームのすべての出力列の名前を取得します。 省略可能なストリーム名を最初の引数として渡すことができます。 2 番目の引数も省略可能で、既定値は false です。 2 番目の引数を true() に設定すると、Data Factory はスキーマ ドリフトによってドリフトされた列のみを返します。

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

columns

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

ストリームのすべての出力列の値を取得します。 省略可能なストリーム名を 2 番目の引数として渡すことができます。

  • columns()
  • columns('DeriveStream')

compare

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

同じ型の 2 つの値を比較します。 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関数は、述語関数内の 1 つの要素への参照を#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

値の集計カウントを取得します。 1 つ以上の省略可能な列が指定されている場合、カウント内の 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

2 つの列の間の母共分散を取得します。

  • covariancePopulation(sales, profit)

covariancePopulationIf

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

抽出条件に基づいて、2 つの列の間の母共分散を取得します。

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

covarianceSample

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

2 つの列の標本共分散を取得します。

  • covarianceSample(sales, profit)

covarianceSampleIf

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

条件に基づいて、2 つの列のサンプル共分散を取得します。

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

crc32

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

0(256224256384、および 512 のビット長に限る条件で、さまざまなプリミティブデータ型の列セットの CRC32 ハッシュを計算します。 これを使用して、行の指紋を計算できます。

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

cumeDist

cumeDist() => integer

cumeDist関数は、パーティション内のすべての値に対する値の位置を計算します。 結果は、パーティションの順序内で現在行以前の行数を、ウィンドウ パーティション内の合計行数で除算した値です。 順序付けでの同順位の値は、すべて同じ位置に評価されます。

  • cumeDist()

currentDate

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

このジョブの実行を開始する現在の日付を取得します。 オプションのタイム ゾーンは、 GMTPSTUTC、または America/Caymanの形式で渡すことができます。 データ ファクトリのデータ センター/リージョンのローカル タイム ゾーンが既定として使用されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。

  • 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 として取得します。 現在の時刻をクラスターのタイム ゾーンとは異なるタイム ゾーンで解釈する場合は、オプションのタイム ゾーンを GMTPSTUTC、または America/Caymanの形式で渡すことができます。 既定では、現在のタイム ゾーンに設定されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。 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

エンコードされた入力データを、指定された文字セットに基づいて文字列にデコードします。 2 番目の (省略可能) 引数を使用して、使用する文字セットを指定できます。 たとえば、 US-ASCIIISO-8859-1UTF-8 (既定)、 UTF-16BEUTF-16LEUTF-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 句で指定した値のグループ内の値の順位を計算します。 結果は、パーティション順位内の現在行以前の行数に 1 を加算した値です。 値によってシーケンス内にギャップが生じることはありません。 denseRank関数は、データが並べ替えられていない場合や、値の変更を探す場合でも機能します。

  • 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

文字セットに基づいて、入力文字列データをバイナリにエンコードします。 2 番目の (省略可能) 引数を使用して、使用する文字セットを指定できます。 たとえば、 US-ASCIIISO-8859-1UTF-8 (既定)、 UTF-16BEUTF-16LEUTF-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

形式に従って、文字列をエスケープします。 許容される形式のリテラル値は、 jsonxmlecmascripthtml、および javaです。


except

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

重複をドロップした 1 つの配列の差分セットを返します。

  • 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 値を返します。 列に syntax(false()) という名前が付けられている場合は、関数falseを使用します。

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

filter

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

指定された述語を満たさない要素を配列から除外します。 フィルターは、述語関数内の 1 つの要素への参照を #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

列グループの最初の値を取得します。 2 番目のパラメーター ignoreNulls を省略すると、Data Factory は false と見なします。

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

flatten

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

複数の配列を 1 つの配列にフラット化します。 アトミック項目の配列は、変更されずに返されます。 最後の引数は省略可能で、既定値は false です。1 レベルを超える深さは再帰的にフラット化されます。

  • 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 からタイム スタンプに変換します。 必要に応じて、 GMTPSTUTC、または America/Caymanの形式でタイム ゾーンを渡すことができます。 既定では、現在のタイム ゾーンに設定されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。

  • 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

ストリームでの名前で列の値をチェックします。 省略可能なストリーム名を 2 番目の引数として渡すことができます。 デザイン時に名前によって認識される列名をアドレス指定します。 計算された入力はサポートされていませんが、パラメーターの置換を使用できます。

  • hasColumn('parent')

hasError

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

指定された ID を持つ資産がエラーとしてマークされているかどうかを確認します。

Examples

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

hasPath

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

ストリームでの名前で特定の階層パスが存在するかどうかを確認します。 省略可能なストリーム名を 2 番目の引数として渡すことができます。 デザイン時に既知の列名/パスは、名前またはドット表記のパスを使用してのみ対処する必要があります。 計算された入力はサポートされていませんが、パラメーターの置換を使用できます。

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

hex

hex(<value1>: binary) => string

バイナリ値の 16 進数文字列表記を返します

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

hour

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

タイム スタンプの時間値を取得します。 オプションのタイム ゾーンは、 GMTPSTUTC、または America/Caymanの形式で渡すことができます。 ローカル タイム ゾーンが既定として使用されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。

  • 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

条件に基づいて 1 つまたは複数の値を適用します。 もう一方が指定されていない場合、値は 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

2 つ以上の入力を指定した場合、最初の 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

2 つの配列から個別の項目の交差セットを返します。

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

isBitSet

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

このビットセットにビット位置が設定されているかどうかを確認します。

  • 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()の規則に従って、省略可能な形式が指定されている場合に、文字列値が 10 進値であるかどうかを確認します。

  • 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()の規則に従って、省略可能な形式が指定されている場合に、文字列値が double 値であるかどうかを確認します。

  • 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()の規則に従って、省略可能な形式が指定されている場合に、文字列値が float 値であるかどうかを確認します。

  • 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...] が使用されます。 オプションのタイム ゾーンは、 GMTPSTUTC、または America/Caymanの形式で渡すことができます。 timestamp関数は、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

2 つの文字列の間の JaroWinkler 距離を取得します。

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

K

keyValues

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

キーと値のマップを作成します。 最初のパラメーターはキーの配列で、2 番目のパラメーターは値の配列です。 両方の配列の長さは等しい必要があります。

  • 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 評価された最初のパラメーターの値を取得します。 2 番目のパラメーターは、参照する行の数であり、既定値は 1。 行数が少ない場合は、既定値が指定されていない限り、null の値が返されます。

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

last

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

列グループの最後の値を取得します。 2 番目のパラメーター 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行後に評価される最初のパラメーターの値を取得します。 2 番目のパラメーターは、先読みする行の数であり、既定値は 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

2 つの文字列の間のレーベンシュタイン距離を取得します。

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

like

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

厳密に一致する文字列パターンを使用します。 例外は、次の特殊な記号です。 _ は、入力内の任意の 1 文字に一致します (.*正規表現のposixと同様)。 % は、入力内の 0 個以上の文字と一致します (.*正規表現の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

文字列の先頭文字を左から削除します。 2 番目のパラメーターが指定されていない場合は、空白をトリミングします。 それ以外の場合は、2 番目のパラメーターで指定された任意の文字をトリミングします。

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

M

map

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

指定された式を使用して、配列の各要素を新しい要素にマップします。 map関数は、式関数内の 1 つの要素への参照を#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 として、現在の値を #valueとしてアドレス指定できるマッピング関数を受け取ります。

  • 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関数は、式関数内の 1 つの要素への参照を#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 文字の 16 進文字列を返します。 これを使用して、行の指紋を計算できます。

  • 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

日付のミリ秒の値を取得します。 オプションのタイム ゾーンは、 GMTPSTUTC、または America/Caymanの形式で渡すことができます。 ローカル タイム ゾーンが既定として使用されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。

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

milliseconds

milliseconds(<value1> : integer) => long

milliseconds の数値に基づいてミリ秒単位の期間を取得します。

  • 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

数値を減算します。 日付から日数を減算します。 タイム スタンプから期間を減算します。 2 つのタイム スタンプを減算して、ミリ秒単位の差を取得します。 - 演算子と同じです。

  • 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

タイムスタンプの分値を取得します。 オプションのタイム ゾーンは、 GMTPSTUTC、または America/Caymanの形式で渡すことができます。 ローカル タイム ゾーンが既定として使用されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。

  • 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

2 つの日付の間の月数を取得します。 計算は丸めることができます。 オプションのタイム ゾーンは、 GMTPSTUTC、または America/Caymanの形式で渡すことができます。 ローカル タイム ゾーンが既定として使用されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。

  • 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

N

negate

negate(<value1> : number) => number

数値の符号を反転します。 正の数値を負の数値 (または、その逆) に変換します。

  • negate(13) -> -13

nextSequence

nextSequence() => long

次の固有なシーケンスを返します。 この数は、パーティション内でのみ連続し、先頭にパーティション ID が付きます。

  • 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によって異なります。 パーティション内の行数がバケット数に対して均等に分割されない場合、残りの値は、最初のバケットから順番にバケットごとに 1 つずつ分配されます。 nTile 関数は、tertiles、四分位数、十分位数およびその他の一般的な集計統計情報を計算する場合に便利です。 この関数は、初期化中に 2 つの変数を計算します。 通常のバケットのサイズに、さらに 1 行が追加されます。 どちらの変数も現在のパーティションのサイズに基づいています。 この関数は、計算プロセス中に、現在の行番号、現在のバケット番号、バケットが変更された行番号 (bucketThreshold) を追跡します。 現在の行番号がバケットのしきい値に達すると、バケットの値が 1 つ増加します。 しきい値は、バケット サイズによって増加します (現在のバケットが埋め込まれている場合は 1 つ追加されます)。

  • nTile()
  • nTile(numOfBuckets)

null

null() => null

NULL値を返します。 列に syntax(null()) という名前が付けられている場合は、関数nullを使用します。 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

入力行が存在する現在のパーティション ID を返します。

  • 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) => double

パーティション内にシードが与えられた場合に乱数を返します。 シードは固定値にする必要があり、パーティション ID と共に使用して、範囲内のランダムな値 (0.0-1.0) を生成します。

  • random(1) == 1 -> false

rank

rank() => integer

ウィンドウの order by 句で指定した値のグループ内の値の順位を計算します。 結果は、パーティション順位内の現在行以前の行数に 1 を加算した値です。 値によってシーケンスにギャップが生じます。 rank関数は、データが並べ替えられていない場合や、値の変更を探す場合でも機能します。

  • rank()

reassociate

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

キーを新しい値に関連付け、マップを変換します。 これは、項目を #key として、現在の値を #valueとしてアドレス指定できるマッピング関数を受け取ります。

  • 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関数は、アキュムレータへの参照と、最初の式関数の 1 つの要素を#acc および#itemとして受け取ります。 結果の値が#resultであり、2 番目の式関数で使用されることを想定しています。

  • 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

正規表現パターンのすべての出現箇所を、特定の文字列内の別の部分文字列に置き換えます。 エスケープせずに文字列を照合するには、 <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 は -1.0 で、 ROUND_CEILING では -1.0、 ROUND_UPでは -2)。

  4. ROUND_FLOOR: 負の無限大に向かって丸める丸めモード。 (入力が正の場合 ROUND_DOWN と同じです。負の場合は、 ROUND_UPとして動作します。

  5. ROUND_HALF_UP: 2 つの近接値が等距離でない限り、「最近接値」に向かって丸める丸めモード。等距離の場合は ROUND_UP となる。 (データフローの最も一般的な + 既定値)。

  6. ROUND_HALF_DOWN: 2 つの近接値が等距離でない限り、「最近接値」に向かって丸める丸めモード。等距離の場合は ROUND_DOWN となる。

  7. ROUND_HALF_EVEN: 2 つの近接値が等距離でない限り、「最近接値」に向かって丸める丸めモード。等距離の場合は最近接偶数への丸めとなる。

  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

文字列の末尾文字を右から削除します。 2 番目のパラメーターが指定されていない場合は、空白をトリミングします。 それ以外の場合は、2 番目のパラメーターで指定された任意の文字をトリミングします。

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

S

second

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

日付の秒の値を取得します。 オプションのタイム ゾーンは、 GMTPSTUTC、または America/Caymanの形式で渡すことができます。 ローカル タイム ゾーンが既定として使用されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。

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

seconds

seconds(<value1> : integer) => long

秒数の期間をミリ秒単位で指定します。

  • seconds(2) -> 2000L

setBitSet

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

このビットセット内のビット位置を設定します。

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

sha1

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

さまざまなプリミティブ データ型の列セットの SHA-1 ダイジェストを計算し、40 文字の 16 進文字列を返します。 これを使用して、行の指紋を計算できます。

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

sha2

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

ビット長を指定した場合に、さまざまなプリミティブ データ型の列セットの SHA-2 ダイジェストを計算します。これは、 0(256)224256384512の値のみです。 これを使用して、行の指紋を計算できます。

  • 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関数は、式関数内の 2 つの連続する要素への参照を#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( <サブセットする文字列><区切り記号>substringIndex( : string, : string, <区切り記号の発生回数> : integral]) => string

区切り記号が指定された回数出現する前に部分文字列を抽出します。 カウントが正の場合は、最後の区切り記号の左側 (左からカウント) がすべて返されます。 カウントが負の値の場合は、最後の区切り記号の右側 (右側からカウント) がすべて返されます。

  • 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

値 (ttrueyyes1) を true に変換し、(ffalsenno0) を他の値の falseNULL に変換します。

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

toByte

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

任意の数値または文字列をバイト値に変換します。 変換には、省略可能な Java 10 進形式を使用できます。

  • 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)

任意の数値または文字列を decimal 型の値に変換します。 精度と小数桁数が指定されていない場合、デフォルトでは (10,2) になります。 変換には、省略可能な Java 10 進形式を使用できます。 オプションのロケール形式を、en-US、de、zh-CNなどの BCP47 言語の形式で使用します。

  • 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

任意の数値または文字列を double 型の値に変換します。 変換には、省略可能な Java 10 進形式を使用できます。 オプションのロケール形式を、en-US、de、zh-CNなどの BCP47 言語の形式で使用します。

  • 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

任意の数値または文字列を float 型の値に変換します。 変換には、省略可能な Java 10 進形式を使用できます。 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

任意の数値または文字列を integer 型の値に変換します。 変換には、省略可能な Java 10 進形式を使用できます。 long、float、double を切り捨てます。

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

toLong

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

任意の数値または文字列を long 型の値に変換します。 変換には、省略可能な Java 10 進形式を使用できます。 float、double を切り捨てます。

  • 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

任意の数値または文字列を short 型の値に変換します。 変換には、省略可能な Java 10 進形式を使用できます。 integer、long、float、double を切り捨てます。

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

toString

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

プリミティブ データ型を文字列に変換します。 数値と日付の書式を指定できます。 指定しない場合、システムの既定値が選択されます。 Java の 10 進形式は数値に使用されます。 使用可能な形式については、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...] が使用されます。 オプションのタイム ゾーンは、 GMTPSTUTC、または America/Caymanの形式で渡すことができます。 timestamp関数は、999の値で最大ミリ秒の精度をサポートします。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。

  • 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 に変換します。 オプションのタイム ゾーンは、 GMTPSTUTC、または America/Caymanの形式で渡すことができます。 既定では、現在のタイム ゾーンに設定されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。

  • 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

文字列の先頭文字と末尾文字を削除します。 2 番目のパラメーターが指定されていない場合は、空白をトリミングします。 それ以外の場合は、2 番目のパラメーターで指定された任意の文字をトリミングします。

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

true

true() => boolean

常に true 値を返します。 列に syntax(true()) という名前が付けられている場合は、関数trueを使用します。

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

typeMatch

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

列の型を照合します。 パターン式でのみ使用できます。 number関数は、short、integer、long、double、float、または decimal と一致します。 integral関数は、short、integer、long と一致します。 fractional関数は、double、float、decimal と一致します。 datetime関数は、日付またはタイム スタンプの種類と一致します。

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

U

unescape

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

形式に従って、文字列を非エスケープします。 許容される形式のリテラル値は、 jsonxmlecmascripthtml、および 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

バイナリ値を 16 進数文字列表記から数値に変換します。 sha2md5と共に使用して、文字列からバイナリ表現に変換できます。

  • 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)

W

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