Apache Iceberg 表支持 Sorting 排序,可以在创建表时指定分区字段,这些字段可以来自基础数据类型的字段、struct 数据类型的嵌套字段。分区字段的转换函数如下所示:
- identity:原字段数据值
- bucket[N]:对原字段数据值进行哈希,返回哈希后的整数索引
- date_trunc('unit', timestamp):截断日期时间戳到给定的单位(如年、月、日)
- year:从日期中提取年份
- month:从日期中提取月份
- day:从日期中提取天
- hour:从时间戳中提取小时
- minute:从时间戳中提取分钟
- second:从时间戳中提取秒
- millisecond:从时间戳中提取毫秒
- microsecond:从时间戳中提取微秒
- weekofyear:从日期中提取周数
- isodow:从日期中提取 ISO 周的星期几(1 表示星期一,7 表示星期日)
- dayofyear:从日期中提取一年中的第几天
- dayofmonth:从日期中提取一个月中的第几天
- dayofweek:从日期中提取一个星期中的第几天(0 表示星期日,6 表示星期六)
- quarter:从日期中提取季度
- month_of_quarter:从日期中提取季度中的月份
- week_of_month:从日期中提取一个月中的第几周
- epoch_milli:将日期时间戳转换为自 Unix 纪元以来的毫秒数
- from_unixtime(timestamp):将 Unix 时间戳转换为日期时间戳
- unix_timestamp(timestamp):将日期时间戳转换为 Unix 时间戳
- unix_timestamp(date):将日期转换为 Unix 时间戳
- date_diff('unit', start, end):计算两个日期或时间戳之间的差值,结果的单位由 unit 指定
- date_add('unit', number, date):向日期添加指定的时间单位
- date_sub('unit', number, date):从日期减去指定的时间单位
- date_range(start, end, interval):生成一个日期范围列表,从 start 开始到 end 结束,步长为 interval
- to_date(timestamp):将日期时间戳转换为日期
- to_timestamp(date):将日期转换为日期时间戳
- to_timestamp(string, pattern):将字符串按照指定的格式转换为日期时间戳
- to_date(string, pattern):将字符串按照指定的格式转换为日期
- from_utc_timestamp(timestamp, offset):将日期时间戳从 UTC 时区转换为其他时区
- at_time_zone(timestamp, offset):将日期时间戳转换为指定时区的日期时间戳
- truncate(timestamp, unit):将日期时间戳截断到指定的时间单位
- next_day(date, dayOfWeek):返回 date 之后的下一个星期几的日期
- last_day(date):返回 date 当月的最后一天
- make_date(year, month, day):构造一个日期
- make_timestamp(year, month, day, hour, minute, second):构造一个日期时间戳
- make_interval(years, months, days, hours, minutes, seconds, milliseconds):构造一个时间间隔
- date_scale(date, scale):将日期向右移动指定的天数
- time_scale(time, scale):将时间向右移动指定的分钟数
- timestamp_scale(timestamp, scale):将日期时间戳向右移动指定的秒数
- add_to_duration(duration, years, months, days, hours, minutes, seconds):向持续时间添加指定的时间单位
- subtract_from_duration(duration, years, months, days, hours, minutes, seconds):从持续时间减去指定的时间单位
- extract(unit FROM source):从 source 中提取指定的时间单位
- interval_division(numerator, denominator):计算两个时间间隔的商
- interval_multiplication(numerator, denominator):计算两个时间间隔的积
- interval_remainder(numerator, denominator):计算两个时间间隔的余数
- interval_negation(interval):取时间间隔的负值
- interval_arithmetic_plus(lhs, rhs):计算两个时间间隔的和
- interval_arithmetic_minus(lhs, rhs):计算两个时间间隔的差
- interval_arithmetic_multiply(lhs, rhs):计算两个时间间隔的积
- interval_arithmetic_divide(lhs, rhs):计算两个时间间隔的商
- interval_arithmetic_remainder(lhs, rhs):计算两个时间间隔的余数
- interval_arithmetic_negate(interval):取时间间隔的负值
- interval_arithmetic_coalesce(interval):合并时间间隔
- interval_arithmetic_greatest(interval):返回最大的时间间隔
- interval_arithmetic_least(interval):返回最小的时间间隔
- interval_arithmetic_abs(interval):取时间间隔的绝对值
- interval_arithmetic_infinity(sign):返回无穷大的时间间隔
- interval_arithmetic_nan():返回非数字的时间间隔
- interval_arithmetic_plus_infinity(interval):返回无穷大的时间间隔
- interval_arithmetic_minus_infinity(interval):返回负无穷大的时间间隔
- interval_arithmetic_multiply_infinity(interval):返回无穷大的时间间隔
- interval_arithmetic_divide_infinity(interval):返回无穷大的时间间隔
- interval_arithmetic_remainder_infinity(interval):返回无穷大的时间间隔
- interval_arithmetic_negate_infinity(interval):返回负无穷大的时间间隔
- interval_arithmetic_coalesce_infinity(interval):返回无穷大的时间间隔
- interval_arithmetic_greatest_infinity(interval):返回无穷大的时间间隔
- interval_arithmetic_least_infinity(interval):返回负无穷大的时间间隔
- interval_arithmetic_abs_infinity(interval):返回无穷大的时间间隔
- interval_arithmetic_plus_time(lhs, rhs):计算两个时间间隔的和
- interval_arithmetic_minus_time(lhs, rhs):计算两个时间间隔的差
- interval_arithmetic_multiply_time(lhs, rhs):计算两个时间间隔的积
- interval_arithmetic_divide_time(lhs, rhs):计算两个时间间隔的商
- interval_arithmetic_remainder_time(lhs, rhs):计算两个时间间隔的余数
- interval_arithmetic_negate_time(interval):取时间间隔的负值
- interval_arithmetic_coalesce_time(interval):合并时间间隔
- interval_arithmetic_greatest_time(interval):返回最大的时间间隔
- interval_arithmetic_least_time(interval):返回最小的时间间隔
- interval_arithmetic_abs_time(interval):取时间间隔的绝对值
- interval_arithmetic_infinity_time(sign):返回无穷大的时间间隔
- interval_arithmetic_nan_time():返回非数字的时间间隔
- interval_arithmetic_plus_infinity_time(interval):返回无穷大的时间间隔
- interval_arithmetic_minus_infinity_time(interval):返回负无穷大的时间间隔
- interval_arithmetic_multiply_infinity_time(interval):返回无穷大的时间间隔
- interval_arithmetic_divide_infinity_time(interval):返回无穷大的时间间隔
- interval_arithmetic_remainder_infinity_time(interval):返回无穷大的时间间隔
- interval_arithmetic_negate_infinity_time(interval):返回负无穷大的时间间隔
- interval_arithmetic_coalesce_infinity_time(interval):返回无穷大的时间间隔
- interval_arithmetic_greatest_infinity_time(interval):返回无穷大的时间间隔
- interval_arithmetic_least_infinity_time(interval):返回负无穷大的时间间隔
- interval_arithmetic_abs_infinity_time(interval):返回无穷大的时间间隔
- interval_arithmetic_plus_date(lhs, rhs):计算两个日期之和
- interval_arithmetic_minus_date(lhs, rhs):计算两个日期之差
- interval_arithmetic_multiply_date(lhs, rhs):计算两个日期的积
- interval_arithmetic_divide_date(lhs, rhs):计算两个日期的商
- interval_arithmetic_remainder_date(lhs, rhs):计算两个日期的余数