受支持的分区投影类型
表可以具有 enum
、integer
、date,
或 injected
分区列类型的任意组合。
枚举类型
将 enum
类型用于其值为枚举集成员(例如,机场代码或 Amazon Web Services 区域)的分区列。
在表中定义分区属性,如下所示:
属性名称 | 示例值 | 描述 |
---|---|---|
projection. |
|
必需。要用于 columnName 列的投影类型。该值必须是 enum (不区分大小写)才能发出使用枚举类型的信号。允许前导和尾随空格。 |
projection. |
|
必需。columnName 列的枚举分区值的逗号分隔列表。任何空格均被视为枚举值的一部分。 |
注意
作为最佳实践,我们建议将基于 enum
的分区投影使用数量限制在数十个或更少的范围。虽然 enum
投影没有特定限制,但表元数据的总大小在 gzip 压缩时不能超过约 1 MB 的 Amazon Glue 限制。请注意,此限制将在表格的关键部分(如列名称、位置、存储格式和其他部分)之间共享。如果您发现自己在 enum
投影使用的唯一 ID 多于数十个,请考虑一种替代方法,例如在代理字段中分桶为较少数量的唯一值。通过折衷基数,您可以控制 enum
字段中返回的唯一值数量。
整数类型
将整数类型用于其可能的值可被解释为定义的范围内的整数的分区列。投影整数列目前仅限于 Java 有符号长整型值的范围(-263 到 263-1,含这两个值)。
属性名称 | 示例值 | 描述 |
---|---|---|
projection. |
|
必需。要用于 columnName 列的投影类型。该值必须是 integer (不区分大小写)才能发出使用整数类型的信号。允许前导和尾随空格。 |
projection. |
|
必需。一个包含两个元素的逗号分隔列表,该列表提供将由对 columName 列进行的查询返回的最小范围值和最大范围值。请注意,必须使用逗号来分隔值,而不是使用连字符。这些值包含在内,它们可以是负数,并且可以有前导零。允许前导和尾随空格。 |
projection. |
|
可选。一个正整数,它指定 columName 列的连续分区值之间的间隔。例如,具有 interval 值“1”的 range 值“1,3”将产生值 1、2 和 3。具有 interval 值“2”的相同 range 值将产生值 1 和 3,并跳过 2。允许前导和尾随空格。默认 为 1。 |
projection. |
|
可选。一个正整数,它指定要包含在 columName 列的分区值的最终表示形式中的位数。例如,具有 digits 值“1”的 range 值“1,3”将产生值 1、2 和 3。具有 digits 值“2”的相同 range 值将产生值 01、02 和 03。允许前导和尾随空格。默认值不包含静态位数和前导零。 |
日期类型
将日期类型用于其值可被解释为定义的范围内的日期(带可选时间)的分区列。
重要
投影日期列在查询执行时以协调世界时 (UTC) 格式生成。
属性名称 | 示例值 | 描述 |
---|---|---|
projection. |
|
必需。要用于 columnName 列的投影类型。该值必须是 date (不区分大小写)才能发出使用日期类型的信号。允许前导和尾随空格。 |
projection. |
|
必需。一个包含两个元素的逗号分隔列表,该列表提供 此列还可以包含格式为以下正则表达式模式的相对日期字符串:
允许使用空格,但在日期中,文本将被视为日期字符串的一部分。 |
projection. |
|
必需。基于 Java 日期格式 DateTimeFormatterJava.time.* 类型。 |
projection. |
|
一个正整数,它指定 如果提供的日期的精度为单日或单月,则 |
projection. |
|
一个时间单位词,它表示 ChronoUnit 如果提供的日期的精度为单日或单月,则 |
例 – 按月分区
以下示例表配置按月对 2015 年至今的数据进行分区。
'projection.month.type'='date', 'projection.month.format'='yyyy-MM', 'projection.month.interval'='1', 'projection.month.interval.unit'='MONTHS', 'projection.month.range'='2015-01,NOW', ...
注入的类型
将注入的类型用于分区列,这些分区列的可能值无法在某个逻辑范围内通过程序生成,而是在查询的 WHERE
子句中作为单个值提供。
请务必记住以下几点:
-
如果未为每个注入列提供筛选条件表达式,则对注入列进行的查询将失败。
-
对于在注入列上具有多个筛选条件表达式值的查询,只有在这些值分离时,这些查询才会成功。
-
仅支持
string
类型的列。
属性名称 | 值 | 描述 |
---|---|---|
projection. |
|
必需。要用于 columnName 列的投影类型。仅支持 string 类型。指定的值必须是 injected (不区分大小写)。允许前导和尾随空格。 |
有关更多信息,请参阅 何时使用 injected 投影类型。