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):计算两个日期的余数