Consideraciones y limitaciones de las consultas CTAS - Amazon Athena

Consideraciones y limitaciones de las consultas CTAS

En la siguiente tabla se describe lo que debe saber acerca de las consultas CTAS en Athena:

Elemento Qué debe saber
Sintaxis de las consultas CTAS

La sintaxis de las consultas CTAS es diferente de la sintaxis de CREATE [EXTERNAL] TABLE utilizada para la creación de tablas. Consulte CREATE TABLE AS.

nota

Los nombres de tablas, bases de datos o columnas para consultas CTAS no deben contener comillas o acentos graves. Para ello, compruebe que los nombres de tablas, bases de datos o columnas no representan palabras reservadas ni contienen caracteres especiales (que requieren que haya que encerrarlas entre comillas o acentos graves). Para obtener más información, consulte la sección Nombres de tablas, bases de datos y columnas.

Consultas CTAS y vistas

Las consultas CTAS escriben nuevos datos en una ubicación especificada en Amazon S3, mientras que las vistas no escriben ningún dato.

Ubicación de los resultados de las consultas CTAS

Si el grupo de trabajo anula la configuración del lado del cliente para la ubicación de resultados de consulta, Athena crea la tabla en la ubicación s3://<workgroup-query-results-location>/tables/<query-id>/. Para ver la ubicación de los resultados de la consulta especificada para el grupo de trabajo, consulte los detalles del grupo de trabajo.

Si el grupo de trabajo no reemplaza la ubicación de los resultados de la consulta, puede utilizar la sintaxis WITH (external_location ='s3://location/') de la consulta CTAS para especificar dónde se almacenan los resultados de la consulta CTAS.

nota

La propiedad external_location debe especificar una ubicación vacía. Una consulta CTAS comprueba que la ubicación de ruta (prefijo) del bucket esté vacía y nunca sobrescribe los datos si la ubicación ya contiene datos. Para volver a utilizar la misma ubicación, elimine los datos de la ubicación del prefijo de clave en el bucket.

Si omite la sintaxis external_location y no utiliza la configuración del grupo de trabajo, Athena utiliza la configuración del lado del cliente para la ubicación de resultados de la consulta y crea la tabla en la ubicación s3://<client-query-results-location>/<Unsaved-or-query-name>/<year>/<month/<date>/tables/<query-id>/.

Localización de archivos huérfanos

Si una instrucción CTAS o INSERT INTO produce un error, es posible que queden datos huérfanos en la ubicación de datos. Debido a que Athena no elimina ningún dato (incluso datos parciales) de su bucket, es posible que pueda leer estos datos parciales en consultas posteriores. Para localizar archivos huérfanos para su inspección o eliminación, puede utilizar el archivo de manifiesto de datos que Athena proporciona para realizar un seguimiento de la lista de archivos que se van a escribir. Para obtener más información, consulte Identificación de archivos de salida de consultas y DataManifestLocation.

Formatos para almacenar los resultados de las consultas

Los resultados de las consultas CTAS se almacenan en Parquet de forma predeterminada, si no especifica un formato de almacenamiento de datos. Puede almacenar los resultados de las consultas CTAS en PARQUET, ORC, AVRO, JSON y TEXTFILE. Los delimitadores de múltiples caracteres no son compatibles con el formato TEXTFILE CTAS. Las consultas CTAS no requieren que se especifique un SerDe para interpretar las trasformaciones de datos. Consulte Example: Writing Query Results to a Different Format.

Formatos de compresión

La compresión GZIP se utiliza para los resultados de las consultas CTAS en los formatos JSON y TEXTFILE. Para Parquet, puede utilizar GZIP o SNAPPY; el valor predeterminado es GZIP. Para Parquet, puede utilizar LZ4, SNAPPY, ZLIB o ZSTD; el valor predeterminado es ZLIB. Consulte Example: Specifying Data Storage and Compression Formats.

Límites de partición y bucket

Puede particionar y guardar en buckets los datos de los resultados de una consulta CTAS. Para obtener más información, consulte Asignación de buckets y creación de particiones. Athena admite la escritura en 100 combinaciones únicas de partición y bucket. Por ejemplo, si no se ha definido ningún bucket en la tabla de destino, puede especificar un máximo de 100 particiones. Si especifica cinco buckets, se permiten 20 particiones (cada una con cinco buckets). Si supera este recuento, se produce un error.

Incluir predicados de particiones y buckets al final de la cláusula WITH que especifica las propiedades de la tabla de destino. Para obtener más información, consulte Example: Creating Bucketed and Partitioned Tables y Asignación de buckets y creación de particiones.

Para obtener información sobre cómo evitar la limitación de 100 particiones, consulte Uso de CTAS e INSERT INTO para crear una tabla con más de 100 particiones.

Cifrado

Puede cifrar los resultados de las consultas CTAS en Amazon S3, del mismo modo que cifra los resultados de otras consultas en Athena. Para obtener más información, consulte Cifrado de los resultados de las consultas de Athena en Amazon S3 Cifrado de los resultados de la consulta de Athena cuando se utiliza JDBC u ODBC.

Tipos de datos

Los tipos de datos de columna de una consulta CTAS son los mismos que los que se especifican para la consulta original.