Tipos admitidos para la proyección de particiones
Una tabla puede tener cualquier combinación de tipos de columna de partición enum
, integer
, date,
o injected
.
Tipo enum
Utilice el tipo enum
para las columnas de partición cuyos valores sean miembros de un conjunto enumerado (por ejemplo, códigos de aeropuerto o Regiones de AWS).
Defina las propiedades de partición en la tabla de la siguiente manera:
Nombre de la propiedad | Valores de ejemplo | Descripción |
---|---|---|
projection. |
|
Obligatorio. El tipo de proyección que se va a utilizar en la columna columnName . El valor debe ser enum (sin distinción mayúsculas y minúsculas) para indicar el uso del tipo enum. Se permite un espacio en blanco inicial y final. |
projection. |
|
Obligatorio. Lista separada por comas de los valores de partición enumerados para la columna columnName . Cualquier espacio en blanco se considera parte de un valor enum. |
nota
Como práctica recomendada, sugerimos limitar el uso de proyecciones de partición basadas en enum
a unas pocas docenas o menos. Si bien no hay un límite específico para las proyecciones enum
, el tamaño total de los metadatos de la tabla no puede superar el límite de AWS Glue de aproximadamente 1 MB cuando se comprime a gzip. Tenga en cuenta que este límite se comparte entre partes clave de la tabla, como nombres de columna, ubicación, formato de almacenamiento y otros. Si utiliza más de unas cuantas docenas de identificadores únicos en la proyección enum
, considere un enfoque alternativo, como la asignación de buckets en un número menor de valores únicos en un campo sustituto. Al intercambiar cardinalidad, puede controlar el número de valores únicos en enum
.
Tipo entero
Utilice el tipo entero para las columnas de partición cuyos valores posibles sean interpretables como enteros dentro de un intervalo definido. Las columnas enteras proyectadas se limitan actualmente al intervalo de un Java con signo largo (-263 a 263-1 inclusive).
Nombre de la propiedad | Valores de ejemplo | Descripción |
---|---|---|
projection. |
|
Obligatorio. El tipo de proyección que se va a utilizar en la columna columnName . El valor debe ser integer (sin distinción entre mayúsculas y minúsculas) para indicar el uso del tipo entero. Se permite un espacio en blanco inicial y final. |
projection. |
|
Obligatorio. Lista separada por comas de dos elementos que proporciona los valores de intervalo mínimo y máximo que deben devolver las consultas de la columna columnName . Tenga en cuenta que los valores deben estar separados por una coma, no por un guion. Estos valores son inclusivos, pueden ser negativos y pueden tener ceros a la izquierda. Se permite un espacio en blanco inicial y final. |
projection. |
|
Opcional. Un entero positivo que especifica el intervalo entre los valores de partición sucesivos en la columna columnName . Por ejemplo, un valor range de “1,3” con un valor interval de “1” produce los valores 1, 2 y 3. El mismo valor range con un valor interval de “2” produce los valores 1 y 3, omitiendo 2. Se permite un espacio en blanco inicial y final. El valor predeterminado de es 1. |
projection. |
|
Opcional. Un entero positivo que especifica el número de dígitos que se incluirán en la representación final del valor de partición de la columna columnName . Por ejemplo, un valor de range de “1,3” que tiene un valor de digits de “1” produce los valores 1, 2 y 3. El mismo valor de range con un valor de digits de “2” produce los valores 01, 02 y 03. Se permite un espacio en blanco inicial y final. Por defecto, no hay número estático de dígitos ni ceros a la izquierda. |
Tipo de fecha
Utilice el tipo de fecha para las columnas de partición cuyos valores se pueden interpretar como fechas (con horas opcionales) dentro de un rango definido.
importante
Las columnas de fecha proyectada se generan en hora universal coordinada (UTC) en el momento de ejecución de la consulta.
Nombre de la propiedad | Valores de ejemplo | Descripción |
---|---|---|
projection. |
|
Obligatorio. El tipo de proyección que se va a utilizar en la columna columnName . El valor debe ser date (sin distinción entre mayúsculas y minúsculas) para indicar el uso del tipo de fecha. Se permite un espacio en blanco inicial y final. |
projection. |
|
Obligatorio. Lista separada por comas de dos elementos que proporciona los valores Esta columna también puede contener cadenas de fecha relativas, con el formato de este patrón de expresión regular:
Se permiten espacios en blanco, pero los literales de fecha se consideran parte de las cadenas de fecha. |
projection. |
|
Obligatorio. Una cadena de formato de fecha basada en el formato de fecha Java DateTimeFormatterJava.time.* compatible. |
projection. |
|
Un entero positivo que especifica el intervalo entre los valores de partición sucesivos de la columna Cuando las fechas proporcionadas tienen una precisión de un solo día o de un mes, la |
projection. |
|
Palabra de unidad de tiempo que representa la forma serializada de una ChronoUnit Cuando las fechas proporcionadas tienen una precisión de un solo día o de un mes, la |
ejemplo – Partición por mes
La siguiente tabla de configuración de ejemplo divide los datos por mes desde 2015 hasta la actualidad.
'projection.month.type'='date', 'projection.month.format'='yyyy-MM', 'projection.month.interval'='1', 'projection.month.interval.unit'='MONTHS', 'projection.month.range'='2015-01,NOW', ...
Tipo inyectado
Utilice el tipo inyectado para columnas de partición con valores posibles que no se pueden generar procesalmente dentro de algún intervalo lógico pero que se proporcionan en una cláusula WHERE
de la consulta como un solo valor.
Es importante tener en cuenta los siguientes puntos:
-
Las consultas sobre columnas inyectadas fallan si no se proporciona una expresión de filtro para cada columna inyectada.
-
Las consultas con múltiples valores para una expresión de filtro en una columna inyectada solo funcionan si los valores están separados.
-
Solo se admiten las columnas de tipo
string
. -
Cuando utiliza la cláusula
WHERE IN
con una columna de partición inyectada, hay un límite de 1000 valores que se pueden especificar en la listaIN
. Para consultar un conjunto de datos con más de 1000 particiones para una columna inyectada, divida la consulta en múltiples consultas más pequeñas, cada una con hasta 1000 valores en la cláusulaWHERE IN
, y luego agregue los resultados.
Nombre de la propiedad | Valor | Descripción |
---|---|---|
projection. |
|
Obligatorio. El tipo de proyección que se va a utilizar en la columna columnName . Solo se admite el tipo string . El valor especificado debe ser injected (sin distinción entre mayúsculas y minúsculas). Se permite un espacio en blanco inicial y final. |
Para obtener más información, consulte Cuándo usar el tipo de proyección de injected.