適用対象:
Azure Data Factory
Azure Synapse Analytics
Tip
Microsoft Fabric の Data Factory (企業向けのオールインワン分析ソリューション) を試してみてください。 Microsoft Fabric では、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法については、こちらを参照してください。
データ フローは、Azure Data Factory パイプラインと Azure Synapse Analytics パイプラインの両方で使用できます。 この記事は、マッピング データ フローに適用されます。 変換を初めて使用する場合は、入門記事「 マッピング データ フローを使用したデータの変換」を参照してください。
この記事では、マッピング データ フローでの Azure Data Factory と Azure Synapse Analytics でサポートされるすべての式と関数の使用について詳しく説明します。 サポートされている各種類の関数の概要については、次の記事を参照してください。
すべての関数のアルファベット順の一覧
次のアルファベット順の一覧には、マッピング データ フローで使用できるすべての関数が含まれています。
A
abs
abs(<value1> : number) => number
数の絶対値を返します。
abs(-20) -> 20abs(10) -> 10
acos
acos(<value1> : number) => double
逆コサイン値を計算します。
acos(1) -> 0.0
add
add(<value1> : any, <value2> : any) => any
文字列または数値のペアを追加します。 日付に日数を追加します。 タイム スタンプに期間を追加します。 類似した型の配列を別の配列に追加します。
+ 演算子と同じです。
add(10, 20) -> 3010 + 20 -> 30add('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) -> falsetrue && 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') -> 65ascii('a') -> 97
asin
asin(<value1> : number) => double
逆サイン値を計算します。
asin(0) -> 0.0
assertErrorMessages
assertErrorMessages() => map
キーとしてアサート ID を含む行のすべてのエラー メッセージのマップを返します。
Examples
assertErrorMessages() => ['assert1': 'This row failed on assert1.', 'assert2': 'This row failed on assert2.']. In this example, at(assertErrorMessages(), 'assert1') would return 'This row failed on assert1.'
associate
reassociate(<value1> : map, <value2> : binaryFunction) => map
キーと値のマップを作成します。 すべてのキーと値は同じ型である必要があります。 項目が指定されていない場合は、文字列から文字列への型のマップが既定値になります。
[ -> ] 作成演算子と同じです。 キーと値は互いに交互である必要があります。
associate('fruit', 'apple', 'vegetable', 'carrot' )=> ['fruit' -> 'apple', 'vegetable' -> 'carrot']
at
at(<value1> : array/map, <value2> : integer/key type) => array
配列インデックスにある要素を検索します。 インデックスは 1 から始まります。 範囲外のインデックスを指定すると、null 値が返されます。 キーが指定されたときにマップ内の値を検索します。 キーが見つからない場合は、null 値を返します。
at(['apples', 'pears'], 1) => 'apples'at(['fruit' -> 'apples', 'vegetable' -> 'carrot'], 'fruit') => 'apples'
atan
atan(<value1> : number) => double
逆正接値を計算します。
atan(0) -> 0.0
atan2
atan2(<value1> : number, <value2> : number) => double
座標で指定された、平面の正の x 軸と点の間の角度をラジアンで返します。
atan2(0, 0) -> 0.0
avg
avg(<value1> : number) => number
列の値の平均を取得します。
avg(sales)
avgIf
avgIf(<value1> : boolean, <value2> : number) => number
条件に基づいて列の値の平均を取得します。
avgIf(region == 'West', sales)
B
between
between(<value1> : any, <value2> : any, <value3> : any) => boolean
最初の値が他の 2 つの値の範囲内にあるかどうかを確認します。 数値、文字列、および datetime 値を比較できます。
between(10, 5, 24)truebetween(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']) ? stringtoLong(byNames(['income']))byNames(['income']) ? longtoBoolean(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
交互の条件に基づいて、 case 関数は一方の値を適用します。 入力の数が偶数の場合、もう一方の入力は既定で最後の条件の NULL に設定されます。
case(10 + 20 == 30, 'dumbo', 'gumbo') -> 'dumbo'case(10 + 20 == 25, 'bojjus', 'do' < 'go', 'gunchus') -> 'gunchus'isNull(case(10 + 20 == 25, 'bojjus', 'do' > 'go', 'gunchus')) -> truecase(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) -> 10coalesce(toString(null), toString(null), 'dumbo', 'bo', 'go') -> 'dumbo'
collect
collect(<value1> : any) => array
集計されたグループ内の式のすべての値を配列に収集します。 このプロセス中に、構造を収集して代替構造に変換することができます。 項目の数は、そのグループ内の行数と等しく、null 値を含めることができます。 収集する項目の数は少なくするようにします。
collect(salesPerson)collect(firstName + lastName))collect(@(name = salesPerson, sales = salesAmount) )
collectUnique
collectUnique(<value1> : any) => array
集計されたグループ内の式のすべての値を一意の配列に収集します。 このプロセス中に、構造を収集して代替構造に変換することができます。 項目の数は、そのグループ内の行数と等しく、null 値を含めることができます。 収集する項目の数は少なくするようにします。
collect(salesPerson)collect(firstName + lastName))collect(@(name = salesPerson, sales = salesAmount) )
columnNames
columnNames(
<値 1>columnNames( : string, i><value1> : boolean) => array
ストリームのすべての出力列の名前を取得します。 省略可能なストリーム名を最初の引数として渡すことができます。 2 番目の引数も省略可能で、既定値は false です。 2 番目の引数を true() に設定すると、Data Factory はスキーマ ドリフトによってドリフトされた列のみを返します。
columnNames()
columnNames('DeriveStream')
columnNames('DeriveStream', true())
columnNames('', true())
columns
columns([<stream name> : string]) => any
ストリームのすべての出力列の値を取得します。 省略可能なストリーム名を 2 番目の引数として渡すことができます。
columns()
columns('DeriveStream')
compare
compare(<value1> : any, <value2> : any) => integer
同じ型の 2 つの値を比較します。 value1 < value2 の場合は負の整数、value1 == value2 の場合は 0、value1 > value2 の場合は正の値を返します。
(compare(12, 24) < 1) -> true
(compare('dumbo', 'dum') > 0) -> true
concat
concat(<this> : string, <that> : string, ...) => string
可変数の文字列を連結します。 文字列を含む + 演算子と同じです。
concat('dataflow', 'is', 'awesome') -> 'dataflowisawesome'
'dataflow' + 'is' + 'awesome' -> 'dataflowisawesome'
isNull('sql' + null) -> true
concatWS
concatWS(<separator> : string, <this> : string, <that> : string, ...) => string
可変数の文字列を区切り記号を使用して連結します。 最初のパラメーターは区切り記号です。
concatWS(' ', 'dataflow', 'is', 'awesome') -> 'dataflow is awesome'
isNull(concatWS(null, 'dataflow', 'is', 'awesome')) -> true
concatWS(' is ', 'dataflow', 'awesome') -> 'dataflow is awesome'
contains
contains(<value1> : array, <value2> : unaryfunction) => boolean
指定された配列内の要素が、指定された述語のtrueとして評価された場合にtrueを返します。
contains関数は、述語関数内の 1 つの要素への参照を#itemとして受け取ります。
contains([1, 2, 3, 4], #item == 3) -> true
contains([1, 2, 3, 4], #item > 5) -> false
cos
cos(<value1> : number) => double
コサイン値を計算します。
cos(10) -> -0.8390715290764524
cosh
cosh(<value1> : number) => double
値の双曲線コサインを計算します。
cosh(0) -> 1.0
count
count([<value1> : any]) => long
値の集計カウントを取得します。 1 つ以上の省略可能な列が指定されている場合、カウント内の NULL 値は無視されます。
count(custId)
count(custId, custName)
count()
count(iif(isNull(custId), 1, NULL))
countAll
countAll([<value1> : any]) => long
null 値を含む値の総数を取得します。
countAll(custId)
countAll()
countDistinct
countDistinct(<value1> : any, [<value2> : any], ...) => long
列セットの個別値の集計カウントを取得します。
countDistinct(custId, custName)
countAllDistinct
countAllDistinct(<value1> : any, [<value2> : any], ...) => long
null 値を含む列セットの個別の値の集計カウントを取得します。
countAllDistinct(custId, custName)
countIf
countIf(<value1> : boolean, [<value2> : any]) => long
条件に基づいて値の集計数を取得します。 省略可能な列を指定すると、カウント内の NULL 値は無視されます。
countIf(state == 'CA' && commission < 10000, name)
covariancePopulation
covariancePopulation(<value1> : number, <value2> : number) => double
2 つの列の間の母共分散を取得します。
covariancePopulation(sales, profit)
covariancePopulationIf
covariancePopulationIf(<value1> : boolean, <value2> : number, <value3> : number) => double
抽出条件に基づいて、2 つの列の間の母共分散を取得します。
covariancePopulationIf(region == 'West', sales)
covarianceSample
covarianceSample(<value1> : number, <value2> : number) => double
2 つの列の標本共分散を取得します。
covarianceSample(sales, profit)
covarianceSampleIf
covarianceSampleIf(<value1> : boolean, <value2> : number, <value3> : number) => double
条件に基づいて、2 つの列のサンプル共分散を取得します。
covarianceSampleIf(region == 'West', sales, profit)
crc32
crc32(<value1> : any, ...) => long
0(256、224、256、384、および 512 のビット長に限る条件で、さまざまなプリミティブデータ型の列セットの CRC32 ハッシュを計算します。 これを使用して、行の指紋を計算できます。
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 クラスを参照してください。
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 クラスを参照してください。 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 を加算した値です。 値によってシーケンス内にギャップが生じることはありません。
denseRank関数は、データが並べ替えられていない場合や、値の変更を探す場合でも機能します。
denseRank()
distinct
distinct(<value1> : array) => array
配列から個別の項目セットを返します。
distinct([10, 20, 30, 10]) => [10, 20, 30]
divide
divide(<value1> : any, <value2> : any) => any
数値のペアを除算します。
/ 演算子と同じです。
divide(20, 10) -> 2
20 / 10 -> 2
dropLeft
dropLeft(<value1> : string, <value2> : integer) => string
文字列の左側から任意の文字数の文字を削除します。 要求されたドロップが文字列の長さを超える場合は、空の文字列が返されます。
dropLeft('bojjus', 2) => 'jjus'
dropLeft('cake', 10) => ''
dropRight
dropRight(<value1> : string, <value2> : integer) => string
文字列の右側から任意の文字数の文字を削除します。 要求されたドロップが文字列の長さを超える場合は、空の文字列が返されます。
dropRight('bojjus', 2) => 'bojj'
dropRight('cake', 10) => ''
E
encode
encode(<Input> : string, <Charset> : string) => binary
文字セットに基づいて、入力文字列データをバイナリにエンコードします。 2 番目の (省略可能) 引数を使用して、使用する文字セットを指定できます。 たとえば、 US-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 値を返します。 列に syntax(false()) という名前が付けられている場合は、関数falseを使用します。
(10 + 20 > 30) -> false
(10 + 20 > 30) -> false()
filter
filter(<value1> : array, <value2> : unaryfunction) => array
指定された述語を満たさない要素を配列から除外します。 フィルターは、述語関数内の 1 つの要素への参照を #itemとして受け取ります。
filter([1, 2, 3, 4], #item > 2) -> [3, 4]
filter(['a', 'b', 'c', 'd'], #item == 'a' || #item == 'b') -> ['a', 'b']
find
find(<value1> : array, <value2> : unaryfunction) => any
配列から条件に一致する最初の項目を検索します。 配列内の項目を #itemとしてアドレス指定できるフィルター関数を受け取ります。 深く入れ子になったマップの場合は、 #item_n (#item_1、#item_2...) 表記を使用して親マップを参照できます。
find([10, 20, 30], #item > 10) -> 20
find(['azure', 'data', 'factory'], length(#item) > 4) -> 'azure'
find([ @( name = 'Daniel', types = [ @(mood = 'jovial', behavior = 'terrific'), @(mood = 'grumpy', behavior = 'bad') ] ), @( name = 'Mark', types = [ @(mood = 'happy', behavior = 'awesome'), @(mood = 'calm', behavior = 'reclusive') ] ) ], contains(#item.types, #item.mood=='happy') /*Filter out the happy kid*/ )
@( name = 'Mark', types = [ @(mood = 'happy', behavior = 'awesome'), @(mood = 'calm', behavior = 'reclusive') ] )
first
first(<value1> : any, [<value2> : boolean]) => any
列グループの最初の値を取得します。 2 番目のパラメーター ignoreNulls を省略すると、Data Factory は false と見なします。
first(sales)
first(sales, false)
flatten
flatten(<array> : array, <value2> : array ..., <value2> : boolean) => array
複数の配列を 1 つの配列にフラット化します。 アトミック項目の配列は、変更されずに返されます。 最後の引数は省略可能で、既定値は false です。1 レベルを超える深さは再帰的にフラット化されます。
flatten([['bojjus', 'girl'], ['gunchus', 'boy']]) => ['bojjus', 'girl', 'gunchus', 'boy']
flatten([[['bojjus', 'gunchus']]] , true) => ['bojjus', 'gunchus']
floor
floor(<value1> : number) => number
特定の数値以下の最大の整数を返します。
floor(-0.1) -> -1
fromBase64
fromBase64(<value1> : string, <encoding type> : string) => string
特定の base64 でエンコードされた文字列をデコードします。 必要に応じて、エンコードの種類を渡すことができます。
fromBase64('Z3VuY2h1cw==') -> 'gunchus'
fromBase64('SGVsbG8gV29ybGQ=', 'Windows-1252') -> 'Hello World'
fromUTC
fromUTC(<value1> : timestamp, [<value2> : string]) => timestamp
UTC からタイム スタンプに変換します。 必要に応じて、 GMT、 PST、 UTC、または America/Caymanの形式でタイム ゾーンを渡すことができます。 既定では、現在のタイム ゾーンに設定されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。
fromUTC(currentTimestamp()) == toTimestamp('2050-12-12 19:18:12') -> false
fromUTC(currentTimestamp(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true
G
greater
greater(<value1> : any, <value2> : any) => boolean
大なり演算子を使用します。
> 演算子と同じです。
greater(12, 24) -> false
('dumbo' > 'dum') -> true
(toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS') > toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> true
greaterOrEqual
greaterOrEqual(<value1> : any, <value2> : any) => boolean
大なりイコール演算子を使用します。
>= 演算子と同じです。
greaterOrEqual(12, 12) -> true
('dumbo' >= 'dum') -> true
greatest
greatest(<value1> : any, ...) => any
値のリストの中で最大の値を入力として返し、null 値はスキップします。 すべての入力が null の場合 null を返します。
greatest(10, 30, 15, 20) -> 30
greatest(10, toInteger(null), 20) -> 20
greatest(toDate('2010-12-12'), toDate('2011-12-12'), toDate('2000-12-12')) -> toDate('2011-12-12')
greatest(toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS'), toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')) -> toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')
H
hasColumn
hasColumn(<column name> : string, [<stream name> : string]) => boolean
ストリームでの名前で列の値をチェックします。 省略可能なストリーム名を 2 番目の引数として渡すことができます。 デザイン時に名前によって認識される列名をアドレス指定します。 計算された入力はサポートされていませんが、パラメーターの置換を使用できます。
hasColumn('parent')
hasError
hasError([<value1> : string]) => boolean
指定された ID を持つ資産がエラーとしてマークされているかどうかを確認します。
Examples
hasError('assert1')
hasError('assert2')
hasPath
hasPath(<value1> : string, [<streamName> : string]) => boolean
ストリームでの名前で特定の階層パスが存在するかどうかを確認します。 省略可能なストリーム名を 2 番目の引数として渡すことができます。 デザイン時に既知の列名/パスは、名前またはドット表記のパスを使用してのみ対処する必要があります。 計算された入力はサポートされていませんが、パラメーターの置換を使用できます。
hasPath('grandpa.parent.child') => boolean
hex
hex(<value1>: binary) => string
バイナリ値の 16 進数文字列表記を返します
hex(toBinary([toByte(0x1f), toByte(0xad), toByte(0xbe)])) -> '1fadbe'
hour
hour(<value1> : timestamp, [<value2> : string]) => integer
タイム スタンプの時間値を取得します。 オプションのタイム ゾーンは、 GMT、 PST、 UTC、または America/Caymanの形式で渡すことができます。 ローカル タイム ゾーンが既定として使用されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。
hour(toTimestamp('2009-07-30 12:58:59')) -> 12
hour(toTimestamp('2009-07-30 12:58:59'), 'PST') -> 12
hours
hours(<value1> : integer) => long
指定した時間数のミリ秒単位の期間を取得します。
hours(2) -> 7200000L
I
iif
iif(<condition> : boolean, <true_expression> : any, [<false_expression> : any]) => any
条件に基づいて 1 つまたは複数の値を適用します。 もう一方が指定されていない場合、値は NULLと見なされます。 両方の値に互換性がある必要があります (数値や文字列など)。
iif(10 + 20 == 30, 'dumbo', 'gumbo') -> 'dumbo'
iif(10 > 30, 'dumbo', 'gumbo') -> 'gumbo'
iif(month(toDate('2018-12-01')) == 12, 345.12, 102.67) -> 345.12
iifNull
iifNull(<value1> : any, [<value2> : any], ...) => any
2 つ以上の入力を指定した場合、最初の null ではない項目を返します。 この関数は、 coalesce 関数と同じです。
iifNull(10, 20) -> 10
iifNull(null, 20, 40) -> 20
iifNull('azure', 'data', 'factory') -> 'azure'
iifNull(null, 'data', 'factory') -> 'data'
in
in(<array of items> : array, <item to find> : any) => boolean
項目が配列内にあるかどうかをチェックします。
in([10, 20, 30], 10) -> true
in(['good', 'kid'], 'bad') -> false
initCap
initCap(<value1> : string) => string
すべての単語の最初の文字を大文字に変換します。 単語は、空白文字で区切られているものとして識別されます。
initCap('cool iceCREAM') -> 'Cool Icecream'
instr
instr(<string> : string, <substring to find> : string) => integer
文字列内の部分文字列の位置 (1 から始まる) を見つけます。 見つからない場合は、 0 が返されます。
instr('dumbo', 'mbo') -> 3
instr('microsoft', 'o') -> 5
instr('good', 'bad') -> 0
intersect
intersect(<value1> : array, <value2> : array) => array
2 つの配列から個別の項目の交差セットを返します。
intersect([10, 20, 30], [20, 40]) => [20]
isBitSet
isBitSet (<value1> : array, <value2>:integer ) => boolean
このビットセットにビット位置が設定されているかどうかを確認します。
isBitSet(toBitSet([10, 32, 98]), 10) => true
isBoolean
isBoolean(<value1>: string) => boolean
文字列値がブール値であるかどうかを、 toBoolean()の規則に従って確認します。
isBoolean('true') -> true
isBoolean('no') -> true
isBoolean('microsoft') -> false
isByte
isByte(<value1> : string) => boolean
toByte()の規則に従って、省略可能な形式が指定されている場合に、文字列値がバイト値であるかどうかを確認します。
isByte('123') -> true
isByte('chocolate') -> false
isDate
isDate (<value1> : string, [<format>: string]) => boolean
オプションの入力日付形式を使用して、入力日付文字列が日付であるかどうかを確認します。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。 入力日付形式を省略した場合、既定の形式は yyyy-[M]M-[d]d。 使用できる形式は :[ yyyy, yyyy-[M]M, yyyy-[M]M-[d]d, yyyy-[M]M-[d]dT* ]。
isDate('2012-8-18') -> true
isDate('12/18--234234' -> 'MM/dd/yyyy') -> false
isDecimal
isDecimal (<value1> : string) => boolean
toDecimal()の規則に従って、省略可能な形式が指定されている場合に、文字列値が 10 進値であるかどうかを確認します。
isDecimal('123.45') -> true
isDecimal('12/12/2000') -> false
isDelete
isDelete([<value1> : integer]) => boolean
行を削除する必要があるかどうかを確認します。 複数の入力ストリームを受け取る変換では、ストリームの (1 から始まる) インデックスを渡すことができます。 ストリーム インデックスは 1 または 2で、既定値は 1。
isDelete()
isDelete(1)
isDistinct
isDistinct(<value1> : any , <value1> : any) => boolean
列または列セットが個別かどうかを検出します。 null は個別の値としてカウントされません。
isDistinct(custId, custName) => boolean
isDouble
isDouble (<value1> : string, [<format>: string]) => boolean
toDouble()の規則に従って、省略可能な形式が指定されている場合に、文字列値が double 値であるかどうかを確認します。
isDouble('123') -> true
isDouble('$123.45' -> '$###.00') -> true
isDouble('icecream') -> false
isError
isError([<value1> : integer]) => boolean
行がエラーとしてマークされているかどうかを確認します。 複数の入力ストリームを受け取る変換では、ストリームの (1 から始まる) インデックスを渡すことができます。 ストリーム インデックスは 1 または 2 で、既定値は 1。
isError()
isError(1)
isFloat
isFloat (<value1> : string, [<format>: string]) => boolean
toFloat()の規則に従って、省略可能な形式が指定されている場合に、文字列値が float 値であるかどうかを確認します。
isFloat('123') -> true
isFloat('$123.45' -> '$###.00') -> true
isFloat('icecream') -> false
isIgnore
isIgnore([<value1> : integer]) => boolean
行を無視するかどうかを確認します。 複数の入力ストリームを受け取る変換では、ストリームの (1 から始まる) インデックスを渡すことができます。 ストリーム インデックスは 1 または 2で、既定値は 1。
isIgnore()
isIgnore(1)
isInsert
isInsert([<value1> : integer]) => boolean
行が挿入用にマークされているかどうかをチェックします。 複数の入力ストリームを受け取る変換では、ストリームの (1 から始まる) インデックスを渡すことができます。 ストリーム インデックスは 1 または 2で、既定値は 1。
isInsert()
isInsert(1)
isInteger
isInteger (<value1> : string, [<format>: string]) => boolean
toInteger()の規則に従って、省略可能な形式が指定されている場合に、文字列値が整数値であるかどうかを確認します。
isInteger('123') -> true
isInteger('$123' -> '$###') -> true
isInteger('microsoft') -> false
isLong
isLong (<value1> : string, [<format>: string]) => boolean
toLong()の規則に従って、省略可能な形式が指定されている場合に、文字列値が長い値であるかどうかを確認します。
isLong('123') -> true
isLong('$123' -> '$###') -> true
isLong('gunchus') -> false
isMatch
isMatch([<value1> : integer]) => boolean
行がルックアップで一致するかどうかをチェックします。 複数の入力ストリームを受け取る変換では、ストリームの (1 から始まる) インデックスを渡すことができます。 ストリーム インデックスは 1 または 2で、既定値は 1。
isMatch()
isMatch(1)
isNan
isNan (<value1> : integral) => boolean
値が数値でないかどうかを確認します。
isNan(10.2) => false
isNull
isNull(<value1> : any) => boolean
値が NULLされているかどうかを確認します。
isNull(NULL()) -> true
isNull('') -> false
isShort
isShort (<value1> : string, [<format>: string]) => boolean
toShort()の規則に従って省略可能な形式が指定されている場合に、文字列値が短い値であるかどうかを確認します。
isShort('123') -> true
isShort('$123' -> '$###') -> true
isShort('microsoft') -> false
isTimestamp
isTimestamp (<value1> : string, [<format>: string]) => boolean
オプションの入力タイムスタンプ形式を使用して、入力日付文字列がタイム スタンプであるかどうかを確認します。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。 タイム スタンプを省略すると、既定のパターン yyyy-[M]M-[d]d hh:mm:ss[.f...] が使用されます。 オプションのタイム ゾーンは、 GMT、 PST、 UTC、または America/Caymanの形式で渡すことができます。
timestamp関数は、999の値で最大ミリ秒の精度をサポートします。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。
isTimestamp('2016-12-31 00:12:00') -> true
isTimestamp('2016-12-31T00:12:00' -> 'yyyy-MM-dd\\'T\\'HH:mm:ss' -> 'PST') -> true
isTimestamp('2012-8222.18') -> false
isUpdate
isUpdate([<value1> : integer]) => boolean
行が更新用にマークされているかどうかをチェックします。 複数の入力ストリームを受け取る変換では、ストリームの (1 から始まる) インデックスを渡すことができます。 ストリーム インデックスは 1 または 2で、既定値は 1。
isUpdate()
isUpdate(1)
isUpsert
isUpsert([<value1> : integer]) => boolean
行が挿入用にマークされているかどうかをチェックします。 複数の入力ストリームを受け取る変換では、ストリームの (1 から始まる) インデックスを渡すことができます。 ストリーム インデックスは 1 または 2で、既定値は 1。
isUpsert()
isUpsert(1)
J
jaroWinkler
jaroWinkler(<value1> : string, <value2> : string) => double
2 つの文字列の間の JaroWinkler 距離を取得します。
jaroWinkler('frog', 'frog') => 1.0
K
keyValues
keyValues(<value1> : array, <value2> : array) => map
キーと値のマップを作成します。 最初のパラメーターはキーの配列で、2 番目のパラメーターは値の配列です。 両方の配列の長さは等しい必要があります。
keyValues(['bojjus', 'appa'], ['gunchus', 'ammi']) => ['bojjus' -> 'gunchus', 'appa' -> 'ammi']
kurtosis
kurtosis(<value1> : number) => double
列の尖度を取得します。
kurtosis(sales)
kurtosisIf
kurtosisIf(<value1> : boolean, <value2> : number) => double
条件に基づいて列の尖度を計算します。
kurtosisIf(region == 'West', sales)
L
lag
lag(<value> : any, [<number of rows to look before> : number], [<default value> : any]) => any
現在の行より前の行 n 評価された最初のパラメーターの値を取得します。 2 番目のパラメーターは、参照する行の数であり、既定値は 1。 行数が少ない場合は、既定値が指定されていない限り、null の値が返されます。
lag(amount, 2)
lag(amount, 2000, 100)
last
last(<value1> : any, [<value2> : boolean]) => any
列グループの最後の値を取得します。 2 番目のパラメーター ignoreNulls を省略すると、false と見なされます。
last(sales)
last(sales, false)
lastDayOfMonth
lastDayOfMonth(<value1> : datetime) => date
日付が指定された月の最後の日付を取得します。
lastDayOfMonth(toDate('2009-01-12')) -> toDate('2009-01-31')
lead
lead(<value> : any, [<number of rows to look after> : number], [<default value> : any]) => any
現在の行からn行後に評価される最初のパラメーターの値を取得します。 2 番目のパラメーターは、先読みする行の数であり、既定値は 1。 行数が少ない場合は、既定値が指定されていない限り、null の値が返されます。
lead(amount, 2)
lead(amount, 2000, 100)
least
least(<value1> : any, ...) => any
小なりイコール演算子を使用します。
<= 演算子と同じです。
least(10, 30, 15, 20) -> 10
least(toDate('2010-12-12'), toDate('2011-12-12'), toDate('2000-12-12')) -> toDate('2000-12-12')
left
left(<string to subset> : string, <number of characters> : integral) => string
インデックス 1 から始まる部分文字列を文字数で抽出します。
SUBSTRING(str, 1, n)と同じです。
left('bojjus', 2) -> 'bo'
left('bojjus', 20) -> 'bojjus'
length
length(<value1> : string) => integer
文字列の長さを返します。
length('dumbo') -> 5
lesser
lesser(<value1> : any, <value2> : any) => boolean
小なり演算子を使用します。
< 演算子と同じです。
lesser(12, 24) -> true
('abcd' < 'abc') -> false
(toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') < toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')) -> true
lesserOrEqual
lesserOrEqual(<value1> : any, <value2> : any) => boolean
小なりイコール演算子を使用します。
<= 演算子と同じです。
lesserOrEqual(12, 12) -> true
('dumbo' <= 'dum') -> false
levenshtein
levenshtein(<from string> : string, <to string> : string) => integer
2 つの文字列の間のレーベンシュタイン距離を取得します。
levenshtein('boys', 'girls') -> 4
like
like(<string> : string, <pattern match> : string) => boolean
厳密に一致する文字列パターンを使用します。 例外は、次の特殊な記号です。 _ は、入力内の任意の 1 文字に一致します (.*正規表現のposixと同様)。
% は、入力内の 0 個以上の文字と一致します (.*正規表現のposixに似ています)。
エスケープ文字は '' です。 エスケープ文字の前に特殊記号または別のエスケープ文字がある場合、その次の文字が文字通り照合されます。 その他の文字をエスケープするのは無効です。
like('icecream', 'ice%') -> true
locate
locate(<substring to find> : string, <string> : string, [<from index - 1-based> : integral]) => integer
特定の位置から始まる文字列内の部分文字列の位置 (1 から始まる) を検索します。 位置を省略すると、文字列の先頭から開始されます。 見つからない場合は、 0 が返されます。
locate('mbo', 'dumbo') -> 3
locate('o', 'microsoft', 6) -> 7
locate('bad', 'good') -> 0
log
log(<value1> : number, [<value2> : number]) => double
ログ値を計算します。 省略可能なベースを指定することも、使用する場合はオイラー番号を指定することもできます。
log(100, 10) -> 2
log10
log10(<value1> : number) => double
10 ベースに基づいてログ値を計算します。
log10(100) -> 2
lookup
lookup(key, key2, ...) => complex[]
キャッシュされたシンクのキーと一致する指定されたキーを使用して、キャッシュされたシンクから最初の行を検索します。
cacheSink#lookup(movieId)
lower
lower(<value1> : string) => string
文字列を小文字にします。
lower('GunChus') -> 'gunchus'
lpad
lpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string
文字列が特定の長さになるまで、指定したパディングで文字列の左側を埋めます。 文字列が長さ以上の場合、文字列は長さにトリミングされます。
lpad('dumbo', 10, '-') -> '-----dumbo'
lpad('dumbo', 4, '-') -> 'dumb'
ltrim
ltrim(<string to trim> : string, [<trim characters> : string]) => string
文字列の先頭文字を左から削除します。 2 番目のパラメーターが指定されていない場合は、空白をトリミングします。 それ以外の場合は、2 番目のパラメーターで指定された任意の文字をトリミングします。
ltrim(' dumbo ') -> 'dumbo '
ltrim('!--!du!mbo!', '-!') -> 'du!mbo!'
M
map
map(<value1> : array, <value2> : unaryfunction) => any
指定された式を使用して、配列の各要素を新しい要素にマップします。
map関数は、式関数内の 1 つの要素への参照を#itemとして受け取ります。
map([1, 2, 3, 4], #item + 2) -> [3, 4, 5, 6]
map(['a', 'b', 'c', 'd'], #item + '_processed') -> ['a_processed', 'b_processed', 'c_processed', 'd_processed']
mapAssociation
mapAssociation(<value1> : map, <value2> : binaryFunction) => array
キーを新しい値に関連付け、マップを変換します。 配列を返します。 これは、項目を #key として、現在の値を #valueとしてアドレス指定できるマッピング関数を受け取ります。
mapAssociation(['bojjus' -> 'gunchus', 'appa' -> 'ammi'], @(key = #key, value = #value)) => [@(key = 'bojjus', value = 'gunchus'), @(key = 'appa', value = 'ammi')]
mapIf
mapIf (<value1> : array, <value2> : binaryfunction, <value3>: binaryFunction) => any
条件に応じて、同じまたは小さい長さの別の配列に配列をマップします。 値には、 structTypesを含む任意のデータ型を指定できます。 これは、配列内の項目を #item として、現在のインデックスを #indexとしてアドレス指定できるマッピング関数を受け取ります。 深く入れ子になったマップの場合は、''#item_[n] (#item_1, #index_1' 表記を使用して親マップを参照できます。
mapIf([10, 20, 30], #item > 10, #item + 5) -> [25, 35]
mapIf(['icecream', 'cake', 'soda'], length(#item) > 4, upper(#item)) -> ['ICECREAM', 'CAKE']
mapIndex
mapIndex(<value1> : array, <value2> : binaryfunction) => any
指定された式を使用して、配列の各要素を新しい要素にマップします。
map関数は、式関数内の 1 つの要素への参照を#item、要素インデックスへの参照を#indexとして受け取ります。
mapIndex([1, 2, 3, 4], #item + 2 + #index) -> [4, 6, 8, 10]
mapLoop
mapLoop(<value1> : integer, <value2> : unaryfunction) => any
長さを指定した配列を作成するために、1から指定した長さまでループします。 これは、配列内のインデックスを #indexとしてアドレス指定できるマッピング関数を受け取ります。 深く入れ子になったマップの場合は、 #index_n (#index_1、 #index_2) 表記を使用して親マップを参照できます。
mapLoop(3, #index * 10) -> [10, 20, 30]
max
max(<value1> : any) => any
列の最大値を取得します。
max(sales)
maxIf
maxIf(<value1> : boolean, <value2> : any) => any
条件に基づいて列の最大値を取得します。
maxIf(region == 'West', sales)
md5
md5(<value1> : any, ...) => string
さまざまなプリミティブ データ型の列セットの MD5 ダイジェストを計算し、32 文字の 16 進文字列を返します。 これを使用して、行の指紋を計算できます。
md5(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '4ce8a880bd621a1ffad0bca905e1bc5a'
mean
mean(<value1> : number) => number
列の値の平均を取得します。
AVGと同じです。
mean(sales)
meanIf
meanIf(<value1> : boolean, <value2> : number) => number
条件に基づいて列の値の平均を取得します。
avgIfと同じです。
meanIf(region == 'West', sales)
millisecond
millisecond(<value1> : timestamp, [<value2> : string]) => integer
日付のミリ秒の値を取得します。 オプションのタイム ゾーンは、 GMT、 PST、 UTC、または America/Caymanの形式で渡すことができます。 ローカル タイム ゾーンが既定として使用されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。
millisecond(toTimestamp('2009-07-30 12:58:59.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> 871
milliseconds
milliseconds(<value1> : integer) => long
milliseconds の数値に基づいてミリ秒単位の期間を取得します。
milliseconds(2) -> 2L
min
min(<value1> : any) => any
列の最小値を取得します。
min(sales)
minIf
minIf(<value1> : boolean, <value2> : any) => any
条件に基づいて列の最小値を取得します。
minIf(region == 'West', sales)
minus
minus(<value1> : any, <value2> : any) => any
数値を減算します。 日付から日数を減算します。 タイム スタンプから期間を減算します。 2 つのタイム スタンプを減算して、ミリ秒単位の差を取得します。
- 演算子と同じです。
minus(20, 10) -> 10
20 - 10 -> 10
minus(toDate('2012-12-15'), 3) -> toDate('2012-12-12')
toDate('2012-12-15') - 3 -> toDate('2012-12-12')
toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') + (days(1) + hours(2) - seconds(10)) -> toTimestamp('2019-02-04 07:19:18.871', 'yyyy-MM-dd HH:mm:ss.SSS')
toTimestamp('2019-02-03 05:21:34.851', 'yyyy-MM-dd HH:mm:ss.SSS') - toTimestamp('2019-02-03 05:21:36.923', 'yyyy-MM-dd HH:mm:ss.SSS') -> -2072
minute
minute(<value1> : timestamp, [<value2> : string]) => integer
タイムスタンプの分値を取得します。 オプションのタイム ゾーンは、 GMT、 PST、 UTC、または America/Caymanの形式で渡すことができます。 ローカル タイム ゾーンが既定として使用されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。
minute(toTimestamp('2009-07-30 12:58:59')) -> 58
minute(toTimestamp('2009-07-30 12:58:59'), 'PST') -> 58
minutes
minutes(<value1> : integer) => long
指定された分数に対応するミリ秒単位の期間を取得します。
minutes(2) -> 120000L
mlookup
mlookup(key, key2, ...) => complex[]
キャッシュされたシンクのキーと一致する指定されたキーを使用して、キャッシュされたシンクから一致するすべての行を検索します。
cacheSink#mlookup(movieId)
mod
mod(<value1> : any, <value2> : any) => any
ペアの数値の剰余を取得します。
% 演算子と同じです。
mod(20, 8) -> 4
20 % 8 -> 4
month
month(<value1> : datetime) => integer
日付またはタイム スタンプの月の値を取得します。
month(toDate('2012-8-8')) -> 8
monthsBetween
monthsBetween(<from date/timestamp> : datetime, <to date/timestamp> : datetime, [<roundoff> : boolean], [<time zone> : string]) => double
2 つの日付の間の月数を取得します。 計算は丸めることができます。 オプションのタイム ゾーンは、 GMT、 PST、 UTC、または America/Caymanの形式で渡すことができます。 ローカル タイム ゾーンが既定として使用されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。
monthsBetween(toTimestamp('1997-02-28 10:30:00'), toDate('1996-10-30')) -> 3.94959677
multiply
multiply(<value1> : any, <value2> : any) => any
数値のペアを乗算します。
* 演算子と同じです。
multiply(20, 10) -> 200
20 * 10 -> 200
N
negate
negate(<value1> : number) => number
数値の符号を反転します。 正の数値を負の数値 (または、その逆) に変換します。
negate(13) -> -13
nextSequence
nextSequence() => long
次の固有なシーケンスを返します。 この数は、パーティション内でのみ連続し、先頭にパーティション ID が付きます。
nextSequence() == 12313112 -> false
normalize
normalize(<String to normalize> : string) => string
文字列値を、アクセント付きの Unicode 文字に正規化します。
regexReplace(normalize('bo²s'), `\p{M}`, '') -> 'boys'
not
not(<value1> : boolean) => boolean
論理否定演算子を使用します。
not(true) -> false
not(10 == 20) -> true
notEquals
notEquals(<value1> : any, <value2> : any) => boolean
不等価演算子を使用します。
!= 演算子と同じです。
12 != 24 -> true
'bojjus' != 'bo' + 'jjus' -> false
nTile
nTile([<value1> : integer]) => integer
nTile関数は、各ウィンドウ パーティションの行を、nから最大1までのnバケットに分割します。 バケットの値は、最大でも 1によって異なります。 パーティション内の行数がバケット数に対して均等に分割されない場合、残りの値は、最初のバケットから順番にバケットごとに 1 つずつ分配されます。
nTile 関数は、tertiles、四分位数、十分位数およびその他の一般的な集計統計情報を計算する場合に便利です。 この関数は、初期化中に 2 つの変数を計算します。 通常のバケットのサイズに、さらに 1 行が追加されます。 どちらの変数も現在のパーティションのサイズに基づいています。 この関数は、計算プロセス中に、現在の行番号、現在のバケット番号、バケットが変更された行番号 (bucketThreshold) を追跡します。 現在の行番号がバケットのしきい値に達すると、バケットの値が 1 つ増加します。 しきい値は、バケット サイズによって増加します (現在のバケットが埋め込まれている場合は 1 つ追加されます)。
nTile()
nTile(numOfBuckets)
null
null() => null
NULL値を返します。 列に syntax(null()) という名前が付けられている場合は、関数nullを使用します。 null を使用する任意の操作は、NULL 値を生成します。
isNull('dumbo' + `null`) -> true
isNull(10 * `null`) -> true
isNull('') -> false
isNull(10 + 20) -> false
isNull(10/0) -> true
O
or
or(<value1> : boolean, <value2> : boolean) => boolean
論理 OR 演算子を使用します。
||と同じです。
or(true, false) -> true
true || false -> true
originColumns
originColumns(<streamName> : string) => any
列が作成された配信元ストリームのすべての出力列を取得します。 別の関数内で囲む必要があります。
array(toString(originColumns('source1')))
output
output() => any
キャッシュ シンクの結果の最初の行を返します。
cacheSink#output()
outputs
output() => any
キャッシュ シンクの結果の出力行セット全体を返します。
cacheSink#outputs()
P
partitionId
partitionId() => integer
入力行が存在する現在のパーティション ID を返します。
partitionId()
pMod
pMod(<value1> : any, <value2> : any) => any
ペアの数値の正の剰余を求めます。
pmod(-20, 8) -> 4
power
power(<value1> : number, <value2> : number) => double
数値を別の数値でべき乗します。
power(10, 2) -> 100
R
radians
radians(<value1> : number) => double
角度をラジアンに変換します。
radians(180) => 3.141592653589793
random
random(<value1> : integral) => double
パーティション内にシードが与えられた場合に乱数を返します。 シードは固定値にする必要があり、パーティション ID と共に使用して、範囲内のランダムな値 (0.0-1.0) を生成します。
random(1) == 1 -> false
rank
rank() => integer
ウィンドウの order by 句で指定した値のグループ内の値の順位を計算します。 結果は、パーティション順位内の現在行以前の行数に 1 を加算した値です。 値によってシーケンスにギャップが生じます。
rank関数は、データが並べ替えられていない場合や、値の変更を探す場合でも機能します。
rank()
reassociate
reassociate(<value1> : map, <value2> : binaryFunction) => map
キーを新しい値に関連付け、マップを変換します。 これは、項目を #key として、現在の値を #valueとしてアドレス指定できるマッピング関数を受け取ります。
reassociate(['fruit' -> 'apple', 'vegetable' -> 'tomato'], substring(#key, 1, 1) + substring(#value, 1, 1)) => ['fruit' -> 'fa', 'vegetable' -> 'vt']
reduce
reduce(<value1> : array, <value2> : any, <value3> : binaryfunction, <value4> : unaryfunction) => any
配列内の要素を累積します。
reduce関数は、アキュムレータへの参照と、最初の式関数の 1 つの要素を#acc および#itemとして受け取ります。 結果の値が#resultであり、2 番目の式関数で使用されることを想定しています。
toString(reduce(['1', '2', '3', '4'], '0', #acc + #item, #result)) -> '01234'
regexExtract
regexExtract(<string> : string, <regex to find> : string, [<match group 1-based index> : integral]) => string
特定の正規表現パターンに対応する部分文字列を抽出します。 最後のパラメーターは一致グループを識別し、省略すると既定で 1 されます。 エスケープせずに文字列を照合するには、 <regex> を使用します。 インデックス 0 はすべてのマッチを返します。 一致グループがない場合、インデックス 1 以降は結果を返しません。
regexExtract('Cost is between 600 and 800 dollars', '(\\d+) and (\\d+)', 2) -> '800'
regexExtract('Cost is between 600 and 800 dollars', `(\d+) and (\d+)`, 2) -> '800'
regexMatch
regexMatch(<string> : string, <regex to match> : string) => boolean
指定された正規表現パターンに文字列が一致するかどうかをチェックします。 エスケープせずに文字列を照合するには、 <regex> を使用します。
regexMatch('200.50', '(\\d+).(\\d+)') -> true
regexMatch('200.50', `(\d+).(\d+)`) -> true
regexReplace
regexReplace(<string> : string, <regex to find> : string, <substring to replace> : string) => string
正規表現パターンのすべての出現箇所を、特定の文字列内の別の部分文字列に置き換えます。 エスケープせずに文字列を照合するには、 <regex> を使用します。
regexReplace('100 and 200', '(\\d+)', 'bojjus') -> 'bojjus and bojjus'
regexReplace('100 and 200', `(\d+)`, 'gunchus') -> 'gunchus and gunchus'
regexSplit
regexSplit(<string to split> : string, <regex expression> : string) => array
文字列を正規表現に基づく区切り文字に基づいて分割し、文字列の配列を返します。
regexSplit('bojjusAgunchusBdumbo', `[CAB]`) -> ['bojjus', 'gunchus', 'dumbo']
regexSplit('bojjusAgunchusBdumboC', `[CAB]`) -> ['bojjus', 'gunchus', 'dumbo', '']
(regexSplit('bojjusAgunchusBdumboC', `[CAB]`)[1]) -> 'bojjus'
isNull(regexSplit('bojjusAgunchusBdumboC', `[CAB]`)[20]) -> true
replace
replace(<string> : string, <substring to find> : string, [<substring to replace> : string]) => string
部分文字列のすべての出現箇所を、特定の文字列内の別の部分文字列に置き換えます。 最後のパラメーターを省略すると、既定では空の文字列になります。
replace('doggie dog', 'dog', 'cat') -> 'catgie cat'
replace('doggie dog', 'dog', '') -> 'gie '
replace('doggie dog', 'dog') -> 'gie '
reverse
reverse(<value1> : string) => string
文字列を反転します。
reverse('gunchus') -> 'suhcnug'
right
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: ゼロから遠い方向に丸める丸めモード。
ROUND_DOWN: ゼロに向かって丸める丸めモード。
ROUND_CEILING: 正の無限大に向かって丸める丸めモード。 (入力が正の場合 ROUND_UP と同じです。負の場合は、 ROUND_DOWNとして動作します。たとえば、-1.1 は -1.0 で、 ROUND_CEILING では -1.0、 ROUND_UPでは -2)。
ROUND_FLOOR: 負の無限大に向かって丸める丸めモード。 (入力が正の場合 ROUND_DOWN と同じです。負の場合は、 ROUND_UPとして動作します。
ROUND_HALF_UP: 2 つの近接値が等距離でない限り、「最近接値」に向かって丸める丸めモード。等距離の場合は ROUND_UP となる。 (データフローの最も一般的な + 既定値)。
ROUND_HALF_DOWN: 2 つの近接値が等距離でない限り、「最近接値」に向かって丸める丸めモード。等距離の場合は ROUND_DOWN となる。
ROUND_HALF_EVEN: 2 つの近接値が等距離でない限り、「最近接値」に向かって丸める丸めモード。等距離の場合は最近接偶数への丸めとなる。
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 クラスを参照してください。
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(
<サブセットする文字列><区切り記号>substringIndex( : string, : string, <区切り記号の発生回数> : integral]) => string
区切り記号が指定された回数出現する前に部分文字列を抽出します。 カウントが正の場合は、最後の区切り記号の左側 (左からカウント) がすべて返されます。 カウントが負の値の場合は、最後の区切り記号の右側 (右側からカウント) がすべて返されます。
substringIndex('111-222-333', '-', 1) -> '111'
substringIndex('111-222-333', '-', 2) -> '111-222'
substringIndex('111-222-333', '-', -1) -> '333'
substringIndex('111-222-333', '-', -2) -> '222-333'
sum
sum(<value1> : number) => number
数値列の集計を取得します。
sum(col)
sumDistinct
sumDistinct(<value1> : number) => number
数値列の個別値の集計を取得します。
sumDistinct(col)
sumDistinctIf
sumDistinctIf(<value1> : boolean, <value2> : number) => number
条件に基づいて、数値列の集計合計を取得します。 条件は、任意の列に基づくことができます。
sumDistinctIf(state == 'CA' && commission < 10000, sales)
sumDistinctIf(true, sales)
sumIf
sumIf(<value1> : boolean, <value2> : number) => number
条件に基づいて、数値列の集計合計を取得します。 条件は、任意の列に基づくことができます。
sumIf(state == 'CA' && commission < 10000, sales)
sumIf(true, sales)
T
tan
tan(<value1> : number) => double
タンジェント値を計算します。
tan(0) -> 0.0
tanh
tanh(<value1> : number) => double
双曲線タンジェント値を計算します。
tanh(0) -> 0.0
toBase64
toBase64(<value1> : string, <encoding type> : string]) => string
base64 で特定の文字列をエンコードします。 必要に応じて、エンコードの種類を渡すことができます。
toBase64('bojjus') -> 'Ym9qanVz'
toBase64('± 25000, € 5.000,- |', 'Windows-1252') -> 'sSAyNTAwMCwggCA1LjAwMCwtIHw='
toBinary
toBinary(<value1> : any) => binary
数値、日付、タイム スタンプ、または文字列をバイナリ表現に変換します。
toBinary(3) -> [0x11]
toBoolean
toBoolean(<value1> : string) => boolean
値 (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の形式で渡すことができます。
timestamp関数は、999の値で最大ミリ秒の精度をサポートします。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。
toTimestamp('2016-12-31 00:12:00') -> toTimestamp('2016-12-31 00:12:00')
toTimestamp('2016-12-31T00:12:00', 'yyyy-MM-dd\'T\'HH:mm:ss', 'PST') -> toTimestamp('2016-12-31 00:12:00')
toTimestamp('12/31/2016T00:12:00', 'MM/dd/yyyy\'T\'HH:mm:ss') -> toTimestamp('2016-12-31 00:12:00')
millisecond(toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> 871
toUTC
toUTC(<value1> : timestamp, [<value2> : string]) => timestamp
タイム スタンプを UTC に変換します。 オプションのタイム ゾーンは、 GMT、 PST、 UTC、または America/Caymanの形式で渡すことができます。 既定では、現在のタイム ゾーンに設定されます。 使用可能な形式については、Java の SimpleDateFormat クラスを参照してください。
toUTC(currentTimestamp()) == toTimestamp('2050-12-12 19:18:12') -> false
toUTC(currentTimestamp(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true
translate
translate(<string to translate> : string, <lookup characters> : string, <replace characters> : string) => string
文字列内のある文字セットを別の文字セットで置換します。 文字には 1 対 1 の置換があります。
translate('(bojjus)', '()', '[]') -> '[bojjus]'
translate('(gunchus)', '()', '[') -> '[gunchus'
trim
trim(<string to trim> : string, [<trim characters> : string]) => string
文字列の先頭文字と末尾文字を削除します。 2 番目のパラメーターが指定されていない場合は、空白をトリミングします。 それ以外の場合は、2 番目のパラメーターで指定された任意の文字をトリミングします。
trim(' dumbo ') -> 'dumbo'
trim('!--!du!mbo!', '-!') -> 'dumbo'
true
true() => boolean
常に true 値を返します。 列に syntax(true()) という名前が付けられている場合は、関数trueを使用します。
(10 + 20 == 30) -> true
(10 + 20 == 30) -> true()
typeMatch
typeMatch(<type> : string, <base type> : string) => boolean
列の型を照合します。 パターン式でのみ使用できます。
number関数は、short、integer、long、double、float、または decimal と一致します。
integral関数は、short、integer、long と一致します。
fractional関数は、double、float、decimal と一致します。
datetime関数は、日付またはタイム スタンプの種類と一致します。
typeMatch(type, 'number')
typeMatch('date', 'datetime')
U
unescape
unescape(<string_to_escape> : string, <format> : string) => string
形式に従って、文字列を非エスケープします。 許容される形式のリテラル値は、 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
関連コンテンツ