マッピング データ フローでのデータ変換式の使用
適用対象: 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
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) になります。 丸めの値には以下が含まれます
- ROUND_UP - 0 とは逆の向きに丸める丸めモード。
- ROUND_DOWN - 0 の向きに丸める丸めモード。
- ROUND_CEILING - 正の無限大に向かって丸める丸めモード。 [入力が正の場合は ROUND_UP と同じです。 負の場合は ROUND_DOWN として動作します。 例: -1.1 は、ROUND_CEILING では -1.0 になり、ROUND_UP では -2 になります]
- ROUND_FLOOR - 負の無限大に向かって丸める丸めモード。 [入力が正の場合は ROUND_DOWN と同じです。 負の場合は ROUND_UP として動作します]
- ROUND_HALF_UP - "最も近い隣接値" に向かって丸める丸めモード。ただし、両方の隣接値までの値が等しい場合は、ROUND_UP になります。 [最も一般的で、データフローの既定値]。
- ROUND_HALF_DOWN - "最も近い隣接値" に向かって丸める丸めモード。ただし、両方の隣接値までの値が等しい場合は、ROUND_DOWN になります。
- ROUND_HALF_EVEN – "最も近い隣接値" に向かって丸める丸めモード。ただし、両方の隣接値までの値が等しい場合は、偶数の隣接値に丸められます。
- 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
関連するコンテンツ
- すべての集計関数の一覧。
- すべての配列関数の一覧。
- すべてのキャッシュされた lookup 関数の一覧。
- すべての変換関数の一覧。
- すべての日付と時刻関数の一覧。
- すべての式関数の一覧。
- すべてのマップ関数の一覧。
- すべてのメタ関数の一覧。
- すべてのウィンドウ関数の一覧。
- 式ビルダーの使用方法を学習します。