LoginSignup
0
0

More than 3 years have passed since last update.

WIP: Gandiva がサポートしている関数一覧 (2019年5月時点)

Posted at

(編集中)

gandiva がサポートしている操作の一覧。Haskell っぽいフォーマットで型注釈を入れた。

numint8, int16, int32, int64, uint8, uint16, uint32, uint64, float32, float64 のいずれか。

単項算術関数

not: boolean -> boolean
not(null) = null

castBIGINT: int32 -> int64
castBIGINT null = null

castFLOAT4: int32 -> float32
castFLOAT4: int64 -> float32
castFLOAT4 null = null

castFLOAT8: int32 -> float64
castFLOAT8: int64 -> float64
castFLOAT8: float32 -> float64
castFLOAT8 null = null

castDATE: int64 -> date64
castDATE null = null

二項算術関数

add: (num a) -> a -> a
add: decimal128 -> decimal128 -> decimal128
add null y = null
add x null = null

subtract: (num a) -> a -> a
subtract: decimal128 -> decimal128 -> decimal128
subtract null y = null
subtract x null = null

multiply: (num a) -> a -> a
multiply: decimal128 -> decimal128 -> decimal128
multiply null y = null
multiply x null = null

-- divide はエラーを返す可能性あり
divide: (num a) -> a -> a
divide: decimal128 -> decimal128 -> decimal128
divide null y = null
divide x null = null

mod: int64 -> int32 -> int32
mod: int64 -> int64 -> int64
mod: decimal128 -> decimal128 -> decimal128 -- エラーを返す可能性あり
mod null y = null
mod x null = null

equal: (num a) -> a -> boolean
equal: decimal128 -> decimal128 -> boolean
equal null y = null
equal x null = null

not_equal: (num a) -> a -> boolean
not_equal: decimal128 -> decimal128 -> boolean
not_equal null y = null
not_equal x null = null

less_than: (num a) -> a -> boolean
less_than: decimal128 -> decimal128 -> boolean
less_than null y = null
less_than x null = null

less_than_or_equal_to: (num a) -> a -> boolean
less_than_or_equal_to: decimal128 -> decimal128 -> boolean
less_than_or_equal_to null y = null
less_than_or_equal_to x null = null

greater_than: (num a) -> a -> boolean
greater_than: decimal128 -> decimal128 -> boolean
greater_than null y = null
greater_than x null = null

greater_than_or_equal_to: (num a) -> a -> boolean
greater_than_or_equal_to: decimal128 -> decimal128 -> boolean
greater_than_or_equal_to null y = null
greater_than_or_equal_to x null = null

日時操作

extractMillennium: date64 -> int64
extractMillennium: timestamp -> int64
extractMillennium null = null

extractCentury: date64 -> int64
extractCentury: timestamp -> int64
extractCentury null = null

extractDecade: date64 -> int64
extractDecade: timestamp -> int64
extractDecade null = null

extractYear: date64 -> int64
extractYear: timestamp -> int64
extractYear null = null

extractQuarter: date64 -> int64
extractQuarter: timestamp -> int64
extractQuarter null = null

extractMonth: date64 -> int64
extractMonth: timestamp -> int64
extractMonth null = null

extractWeek: date64 -> int64
extractWeek: timestamp -> int64
extractWeek null = null

extractDay: date64 -> int64
extractDay: timestamp -> int64
extractDay null = null

extractHour: date64 -> int64
extractHour: timestap -> int64
extractHour: time32 -> int64
extractHour null = null

extractMinute: date64 -> int64
extractMinute: timestamp -> int64
extractMinute: time32 -> int64
extractMinute null = null

extractSecond: date64 -> int64
extractSecond: timestamp -> int64
extractSecond: time32 -> int64
extractSecond null = null

extractDoy: date64 -> int64
extractDoy: timestamp -> int64
extractDoy null = null

extractDow: date64 -> int64
extractDow: timestamp -> int64
extractDow null = null

extractEpoch: date64 -> int64
extractEpoch: timestamp -> int64
extractEpoch null = null

date_trunc_Millennium: date64 -> int64
date_trunc_Millennium: timestamp -> int64
date_trunc_Millennium null = null

date_trunc_Century: date64 -> int64
date_trunc_Century: timestamp -> int64
date_trunc_Century null = null

date_trunc_Decade: date64 -> int64
date_trunc_Decade: timestamp -> int64
date_trunc_Decade null = null

date_trunc_Year: date64 -> int64
date_trunc_Year: timestamp -> int64
date_trunc_Year null = null

date_trunc_Quarter: date64 -> int64
date_trunc_Quarter: timestamp -> int64
date_trunc_Quarter null = null

date_trunc_Month: date64 -> int64
date_trunc_Month: timestamp -> int64
date_trunc_Month null = null

date_trunc_Week: date64 -> int64
date_trunc_Week: timestamp -> int64
date_trunc_Week null = null

date_trunc_Day: date64 -> int64
date_trunc_Day: timestamp -> int64
date_trunc_Day null = null

date_trunc_Hour: date64 -> int64
date_trunc_Hour: timestamp -> int64
date_trunc_Hour null = null

date_trunc_Minute: date64 -> int64
date_trunc_Minute: timestamp -> int64
date_trunc_Minute null = null

date_trunc_Second: date64 -> int64
date_trunc_Second: timestamp -> int64
date_trunc_Second null = null

-- castDATE はエラーを返す可能性がある
castDATE: utf8 -> date64
castDATE null = null

-- castTIMESTAMP はエラーを返す可能性がある
castTIMESTAMP: utf8 -> timestamp
castTIMESTAMP null = null

-- to_date は入力が不正の場合は 0 を返し、出力が不正であることを示すフラグを与える
to_date: utf8 -> utf8 -> int32 -> date64
to_date null null null = 0

WIP: 日時演算

months_between

timestampdiffSecond
timestampdiffMinute
timestampdiffHour
timestampdiffDay
timestampdiffWeek
timestampdiffMonth
timestampdiffQuarter
timestampdiffYear

timestampaddSecond
timestampaddMinute
timestampaddHour
timestampaddDay
timestampaddWeek
timestampaddMonth
timestampaddQuarter
timestampaddYear

date_add
add

date_sub
subtract
date_diff

ハッシュ演算

-- 32bit ハッシュ関数
hash: num -> int32
hash: date64 -> int32
hash: timestamp -> int32
hash: time32 -> int32
hash: boolean -> int32
hash: utf8 -> int32
hash: binary -> int32
hash null = 0

-- 32bit シード付きハッシュ関数
hash: (num, int32) -> int32
hash: (date64, int32) -> int32
hash: (timestamp, int32) -> int32
hash: (time32, int32) -> int32
hash: (boolean, int32) -> int32
hash: (utf8, int32) -> int32
hash: (binary, int32) -> int32
hash (null, seed) = 0

-- 32bit ハッシュ関数
hash32: num -> int32
hash32: date64 -> int32
hash32: timestamp -> int32
hash32: time32 -> int32
hash32: boolean -> int32
hash32: utf8 -> int32
hash32: binary -> int32
hash32 null = 0

-- 32bit シード付きハッシュ関数
hash32: (num, int32) -> int32
hash32: (date64, int32) -> int32
hash32: (timestamp, int32) -> int32
hash32: (time32, int32) -> int32
hash32: (boolean, int32) -> int32
hash32: (utf8, int32) -> int32
hash32: (binary, int32) -> int32
hash32 (null, seed) = 0

-- 32bit ハッシュ関数
hash32AsDouble: num -> int32
hash32AsDouble: date64 -> int32
hash32AsDouble: timestamp -> int32
hash32AsDouble: time32 -> int32
hash32AsDouble: boolean -> int32
hash32AsDouble: utf8 -> int32
hash32AsDouble: binary -> int32
hash32AsDouble null = 0

-- 32bit シード付きハッシュ関数
hash32AsDouble: (num, int32) -> int32
hash32AsDouble: (date64, int32) -> int32
hash32AsDouble: (timestamp, int32) -> int32
hash32AsDouble: (time32, int32) -> int32
hash32AsDouble: (boolean, int32) -> int32
hash32AsDouble: (utf8, int32) -> int32
hash32AsDouble: (binary, int32) -> int32
hash32AsDouble (null, seed) = 0

-- 64bit ハッシュ関数
hash64: num -> int64
hash64: date64 -> int64
hash64: timestamp -> int64
hash64: time32 -> int64
hash64: boolean -> int64
hash64: utf8 -> int64
hash64: binary -> int64
hash64 null = 0

-- 64bit シード付きハッシュ関数
hash64: (num, int64) -> int64
hash64: (date64, int64) -> int64
hash64: (timestamp, int64) -> int64
hash64: (time32, int64) -> int64
hash64: (boolean, int64) -> int64
hash64: (utf8, int64) -> int64
hash64: (binary, int64) -> int64
hash64 (null, seed) = 0

-- 64bit ハッシュ関数
hash64AsDouble: num -> int64
hash64AsDouble: date64 -> int64
hash64AsDouble: timestamp -> int64
hash64AsDouble: time32 -> int64
hash64AsDouble: boolean -> int64
hash64AsDouble: utf8 -> int64
hash64AsDouble: binary -> int64
hash64AsDouble null = 0

-- 64bit シード付きハッシュ関数
hash64AsDouble: (num, int64) -> int64
hash64AsDouble: (date64, int64) -> int64
hash64AsDouble: (timestamp, int64) -> int64
hash64AsDouble: (time32, int64) -> int64
hash64AsDouble: (boolean, int64) -> int64
hash64AsDouble: (utf8, int64) -> int64
hash64AsDouble: (binary, int64) -> int64
hash64AsDouble (null, seed) = 0

WIP: 数学関数

cbrt

exp

log

log10

power: (float64, float64) -> float64

isnull

isnotnull

isnumeric

is_distinct_from

is_not_distinct_from

WIP: 文字列操作

equal

not_equal

less_than

less_than_or_equal_to

greater_than

greater_than_or_equal_to

starts_with

ends_with

octet_length

bit_length

char_length

length

lengthUtf8

isnull

isnotnull

upper

like
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0