Tipos admitidos para la proyección de particiones - Amazon Athena

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.columnName.type

enum

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.columnName.values

A,B,C,D,E,F,G,Unknown

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.columnName.type

integer

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.columnName.range

0,10

-1,8675309

0001,9999

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.columnName.interval

1

5

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.columnName.digits

1

5

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.columnName.type

date

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.columnName.range

201701,201812

01-01-2010,12-31-2018

NOW-3YEARS,NOW

201801,NOW+1MONTH

Obligatorio. Lista separada por comas de dos elementos que proporciona los valores range mínimo y máximo de la columna columnName. Estos valores son inclusivos y pueden utilizar cualquier formato compatible con los tipos de fechas java.time.* de Java. Tanto los valores mínimo como máximo deben utilizar el mismo formato. El formato especificado en la propiedad .format debe ser el formato utilizado para estos valores.

Esta columna también puede contener cadenas de fecha relativas, con el formato de este patrón de expresión regular:

\s*NOW\s*(([\+\-])\s*([0-9]+)\s*(YEARS?|MONTHS?|WEEKS?|DAYS?|HOURS?|MINUTES?|SECONDS?)\s*)?

Se permiten espacios en blanco, pero los literales de fecha se consideran parte de las cadenas de fecha.

projection.columnName.format

yyyyMM

dd-MM-yyyy

dd-MM-yyyy-HH-mm-ss

Obligatorio. Una cadena de formato de fecha basada en el formato de fecha Java DateTimeFormatter. Puede ser cualquier tipo de Java.time.* compatible.
projection.columnName.interval

1

5

Un entero positivo que especifica el intervalo entre los valores de partición sucesivos de la columna columnName. Por ejemplo, un valor de range de 2017-01,2018-12 con un valor de interval de 1 y un valor de interval.unit de MONTHS produce los valores 2017-01, 2017-02, 2017-03, etc. El mismo valor de range con un valor de interval de 2 y un valor de interval.unit de MONTHS produce los valores 2017-01, 2017-03, 2017-05, etc. Se permite un espacio en blanco inicial y final.

Cuando las fechas proporcionadas tienen una precisión de un solo día o de un mes, la interval es opcional y el valor predeterminado es 1 día o 1 mes, respectivamente. De lo contrario, se requiere el interval.

projection.columnName.interval.unit

YEARS

MONTHS

WEEKS

DAYS

HOURS

MINUTES

SECONDS

MILLIS

Palabra de unidad de tiempo que representa la forma serializada de una ChronoUnit. Los valores posibles son YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS o MILLIS. Los valores no distinguen entre mayúsculas y minúsculas.

Cuando las fechas proporcionadas tienen una precisión de un solo día o de un mes, la interval.unit es opcional y el valor predeterminado es 1 día o 1 mes, respectivamente. De lo contrario, se requiere la interval.unit.

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.

Nombre de la propiedad Valor Descripción
projection.columnName.type

injected

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.