Tipos de datos en Amazon Athena - Amazon Athena

Tipos de datos en Amazon Athena

Cuando ejecute CREATE TABLE, deberá especificar los nombres de las columnas y el tipo de datos que puede contener cada columna. Athena admite los tipos de datos que se indican a continuación. Para obtener información sobre las asignaciones de tipos de datos que el controlador JDBC admite entre Athena, JDBC y Java, consulte Tipos de datos en la Guía de instalación y configuración del controlador JDBC. Para obtener información sobre las asignaciones de tipos de datos que el controlador ODBC admite entre Athena y SQL, consulte Tipos de datos en la Guía de instalación y configuración del controlador ODBC.

  • boolean: los valores son true y false.

  • tinyint: un número entero firmado de 8 bits en formato de complemento de dos, con un valor mínimo de -27 y un valor máximo de 27-1.

  • smallint: un número entero firmado de 16 bits en formato de complemento de dos, con un valor mínimo de -215 y un valor máximo de 215-1.

  • int y integer: Athena utiliza expresiones diferentes para números enteros según el tipo de consulta.

    • int: en las consultas de lenguaje de definición de datos (DDL), como CREATE TABLE, utilice el tipo de datos int.

    • integer: en las consultas DML, como SELECT * FROM, utilice el tipo de datos integer. integer se representa como un valor firmado de 32 bits en formato de complemento de dos, con un valor mínimo de -231 y un valor máximo de 231-1.

      • Para garantizar la compatibilidad con las aplicaciones de análisis empresarial, el controlador JDBC devuelve el tipo integer.

  • bigint: un número entero firmado de 64 bits en formato de complemento de dos, con un valor mínimo de -263 y un valor máximo de 263-1.

  • double: un número firmado de punto flotante de doble precisión de 64 bits. El rango es de 4.94065645841246544e-324d a 1.79769313486231570e+308d, positivo o negativo. double sigue el estándar IEEE para la aritmética de punto flotante (IEEE 754).

  • float: un número firmado de punto flotante de precisión simple de 32 bits. El rango es de 1.40129846432481707e-45 a 3.40282346638528860e+38, positivo o negativo. float sigue el estándar IEEE para la aritmética de punto flotante (IEEE 754). Equivalente a real en Presto. En Athena, utilice float en instrucciones DDL como CREATE TABLE y real en funciones SQL como SELECT CAST. El rastreador de AWS Glue devuelve valores en float, y Athena traduce los tipos real y float internamente (consulte las notas de la versión 5 de junio de 2018).

  • decimal(precision, scale): precision es el número total de dígitos. scale (opcional) es el número de dígitos de la parte fraccionaria con un valor predeterminado de 0. Por ejemplo, utilice estas definiciones de tipo: decimal(11,5), decimal(15). El valor máximo para precision (precisión) es 38 y el valor máximo para scale (escala) también es 38.

    Para especificar valores decimales como literales como, por ejemplo, al seleccionar filas con un valor decimal específico en una expresión DDL de consulta, especifique la definición de tipo decimal y enumere el valor decimal como literal (entre comillas simples) en su consulta, como en este ejemplo: decimal_value = decimal '0.12'.

  • char: datos de caracteres de longitud fija, con una longitud especificada comprendida entre 1 y 255 como, por ejemplo, char(10). Para obtener más información, consulte Tipo de datos Hive CHAR.

    nota

    Para utilizar la función substr para devolver una subcadena de longitud especificada desde un tipo de datos char, primero debe convertir el valor de char a varchar, como en el ejemplo siguiente.

    substr(cast(col1 as varchar), 1, 4)
  • varchar: datos de caracteres de longitud variable, con una longitud especificada comprendida entre 1 y 65 535 como, por ejemplo, varchar(10). Para obtener más información, consulte Tipo de datos Hive VARCHAR.

  • string: un literal de cadena entre comillas simples o dobles. Para obtener más información, consulte Tipo de datos STRING Hive.

    nota

    Los tipos de datos que no son de cadena no se pueden convertir en string en Athena; en su lugar, se pueden convertir en varchar.

  • binary: se utiliza para los datos de Parquet.

  • date: una fecha en formato ISO, como YYYY-MM-DD. Por ejemplo, date '2008-09-15'. Una excepción es OpenCSVSerDe, que utiliza el número de días transcurridos desde el 1 de enero de 1970. Para obtener más información, consulte OpenCSVSerDe para el procesamiento de CSV.

  • timestamp: instante de fecha y hora en un formato compatible con java.sql.Timestamp hasta una resolución máxima de milisegundos, como yyyy-MM-dd HH:mm:ss[.f...]. Por ejemplo, timestamp '2008-09-15 03:04:05.324'. Una excepción es OpenCSVSerDe, que utiliza datos de timestamp en formato numérico UNIX (por ejemplo, 1579059880000). Para obtener más información, consulte OpenCSVSerDe para el procesamiento de CSV.

  • array<data_type>: matriz del tipo de componente dado.

    Ejemplo

    CREATE TABLE table array_table (c1 array<integer>) LOCATION '...'; INSERT INTO array_table values(ARRAY[1,2,3]);
  • map<primitive_type, data_type>: asignación entre los tipos de componentes dados.

    Ejemplo

    CREATE TABLE map_table(c1 map<string, integer>) LOCATION '...'; INSERT INTO map_table values(MAP(ARRAY['foo', 'bar'], ARRAY[1, 2]));
  • struct<col_name : data_type [comment col_comment] , ...>: colección de elementos de distintos tipos de componentes.

    Ejemplo

    CREATE TABLE struct_table(c1 struct<name:varchar(10), age:integer>) LOCATION '...'; INSERT INTO struct_table SELECT CAST(ROW('Bob', 38) AS ROW(name VARCHAR(10), age INTEGER));