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

適用対象: 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

列の個別の値のおおよその集計数を取得します。 省略可能な 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 を含む行のすべてのエラー メッセージのマップを返します。

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

ストリーム内の名前を指定して列の配列を選択します。 省略可能なストリーム名を 2 番目の引数として渡すことができます。 複数の一致がある場合は、最初の一致が返されます。 列に一致するものがない場合は、出力全体が 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

元のストリームでの名前で列の値を選択します。 2 番目の引数は元のストリームの名前です。 複数の一致がある場合は、最初の一致が返されます。 一致がない場合は、NULL 値が返されます。 返された値は、いずれかの型変換関数 (TO_DATE、TO_STRING ...) で型変換する必要があります。デザイン時に既知の列名を名前で指定するだけです。 計算入力はサポートされていませんが、パラメーター置換を使用することができます。

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

byOrigins

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

ストリーム内の名前を指定して列の配列を選択します。 2 番目の引数は発生したストリームです。 複数の一致がある場合は、最初の一致が返されます。 一致がない場合は、NULL 値が返されます。 返された値は、いずれかの型変換関数 (TO_DATE、TO_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_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

交互条件に基づいて、2 つの値のいずれかを適用します。 入力数が偶数の場合、最後の条件でその他は既定で 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(<value1>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

さまざまなプリミティブ データ型の列セットの 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

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

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

重複をドロップした 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 値を返します。 'false' という名前の列がある場合は、関数 syntax(false()) を使用します。

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

filter

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

指定された述語を満たさない要素を配列から除外します。 filter は、述語関数の 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 からタイムスタンプに変換します。 必要に応じて、タイムゾーンを "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

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

  • hasColumn('parent')

hasError

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

指定された ID のアサートがエラーとしてマークされているかどうかを確認します。

  • 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

タイムスタンプから時間の値を取得します。 省略可能なタイムゾーンを '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

条件に基づいて、2 つの値のいずれかを適用します。 その他が指定されていない場合、値は 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

複数の入力を指定した場合は、最初の not null 項目が返されます。 この関数は結合に相当します。

  • 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 から始まる) インデックスを渡すことができます。 ストリーム インデックスは 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 から始まる) インデックスを渡すことができます。 ストリーム インデックスは 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 から始まる) インデックスを渡すことができます。 ストリーム インデックスは 1 または 2 のいずれかである必要があり、既定値は 1 です。

  • isIgnore()
  • isIgnore(1)

isInsert

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

行が挿入用にマークされているかどうかをチェックします。 1 つ以上の入力ストリームを取る変換は、ストリームの (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 から始まる) インデックスを渡すことができます。 ストリーム インデックスは 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 から始まる) インデックスを渡すことができます。 ストリーム インデックスは 1 または 2 のいずれかである必要があり、既定値は 1 です。

  • isUpdate()
  • isUpdate(1)

isUpsert

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

行が挿入用にマークされているかどうかをチェックします。 1 つ以上の入力ストリームを取る変換は、ストリームの (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 から length までループさせてその長さの配列を作成します。 これは、配列内のインデックスを #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

日付のミリ秒の値を取得します。 省略可能なタイムゾーンを '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

数値を減算します。 日付から日数を減算します。 タイムスタンプから期間を減算します。 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

タイムスタンプから分の値を取得します。 省略可能なタイムゾーンを '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

2 つの日付の間の月数を取得します。 計算は丸めることができます。 省略可能なタイムゾーンを '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

N

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

  • 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

入力行が含まれている現在のパーティション 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) => long

パーティション内に省略可能なシード値を指定すると、乱数を返します。 シード値は固定値である必要があり、乱数値を生成するために partitionId と組み合わせて使用されます

  • 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 として予期し、結果の値を 2 番目の式関数で使用される #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

指定の文字列内の正規表現パターンのすべての出現を別の部分文字列に置換します。エスケープせずに文字列を照合するには、<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

指定された文字列内の substring のすべての出現を別の substring に置換します。 最後のパラメーターを省略すると、既定値は空の文字列になります。

  • 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 - 0 とは逆の向きに丸める丸めモード。
  2. ROUND_DOWN - 0 の向きに丸める丸めモード。
  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

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

  • 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

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

  • 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)、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 は、式関数の 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(<string to subset><delimiter>substringIndex( : string, : string, <count of delimiter occurences> : integral]) => string

区切り記号が count 回出現する前の substring を抽出します。 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 の 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...] が使用されます。 省略可能なタイムゾーンを '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

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

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

true

true() => boolean

常に true 値を返します。 "null" という名前の列がある場合は、関数 syntax(true()) を使用します。

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

typeMatch

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

列の型を照合します。 パターン式でのみ使用できます。 数値は short、integer、long、double、float、または decimal に一致し、整数は short、integer、long に一致し、小数は double、float、decimal に一致し、日時は date または timestamp 型に一致します。

  • 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

バイナリ値を 16 進数文字列表記から数値に変換します。 これは、文字列からバイナリ表記に変換するために、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)

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