Consideraciones y limitaciones de las consultas CTAS
En las siguientes secciones se detallan las consideraciones y limitaciones que se deben tener en cuenta cuando se utilicen consultas CREATE TABLE AS SELECT
(CTAS) en Athena.
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.
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 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://
. Para ver la ubicación de los resultados de la consulta especificada para el grupo de trabajo, consulte los detalles del grupo de trabajo.<workgroup-query-results-location>
/tables/<query-id>
/
Si el grupo de trabajo no reemplaza la ubicación de los resultados de la consulta, puede utilizar la sintaxis WITH (external_location ='s3://
de la consulta CTAS para especificar dónde se almacenan los resultados de la consulta CTAS. location
/')
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 INSERT INTO
o CTAS
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
. Para obtener ejemplos de CTAS que especifican compresión, consulte Example: Specifying Data Storage and Compression Formats. Para obtener más información sobre la compresión en Athena, consulte Compatibilidad con la compresión de Athena.
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 Creación de buckets y división en 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 Creación de buckets y división en 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.
Encryption (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.
Propietario del bucket esperado
Para las instrucciones CTAS, la configuración del propietario del bucket esperado no se aplica a la ubicación de la tabla de destino en Amazon S3. La configuración del propietario esperado del bucket se aplica solo a la ubicación de salida de Amazon S3 especificada para los resultados de las consultas de Athena. Para obtener más información, consulte Especificación de una ubicación de resultados de consulta mediante la consola de Athena.
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.