ALTER TABLE REPLACE COLUMNS - Amazon Athena

ALTER TABLE REPLACE COLUMNS

Elimina todas las columnas existentes de una tabla creada con LazySimpleSerDe y las reemplaza con el conjunto de columnas especificado. Cuando se utiliza la sintaxis PARTITION opcional, actualiza los metadatos de la partición. También puede utilizar ALTER TABLE REPLACE COLUMNS para eliminar columnas al especificar solo las columnas que desea conservar.

Sinopsis

ALTER TABLE table_name [PARTITION (partition_col1_name = partition_col1_value [,partition_col2_name = partition_col2_value][,...])] REPLACE COLUMNS (col_name data_type [, col_name data_type, ...])

Parámetros

PARTITION (partition_col_name = partition_col_value [,...])

Especifica una partición con las combinaciones de nombre y valor de columna que especifica. Escriba partition_col_value entre comillas solo si el tipo de datos de la columna es una cadena.

REPLACE COLUMNS (col_name data_type [,col_name data_type,...])

Reemplaza las columnas existentes por los nombres de columna y los tipos de datos especificados.

Notas

  • Para ver el cambio de las columnas de la tabla en el panel de navegación del Editor de consultas de Athena después de ejecutar ALTER TABLE REPLACE COLUMNS, es posible que tenga que actualizar manualmente la lista de tablas en el editor y volver a expandirla.

  • ALTER TABLE REPLACE COLUMNS no funciona para columnas con el tipo de datos date. Para solucionar este problema, utilice el tipo de datos timestamp en la tabla en su lugar.

  • Tenga en cuenta que, incluso si está reemplazando una sola columna, la sintaxis debe ser ALTER TABLE table-name REPLACE COLUMNS, con columns (columnas) en plural. Debe especificar no solo la columna que desea reemplazar, sino también las columnas que desea conservar; de lo contrario, se eliminarán las columnas que no especifique. Esta sintaxis y este comportamiento se derivan del DDL de Apache Hive. Como referencia, consulte Agregar o reemplazar columnas en la documentación de Apache.

Ejemplo

En el siguiente ejemplo, la tabla names_cities, que se creó con LazySimpleSerDe, tiene tres columnas denominadas col1, col2 y col3. Todas las columnas son de tipo string. Para mostrar las columnas de la tabla, el siguiente comando utiliza la instrucción SHOW COLUMNS.

SHOW COLUMNS IN names_cities

Resultado de la consulta:

col1 col2 col3

El siguiente comando ALTER TABLE REPLACE COLUMNS reemplaza los nombres de las columnas por first_name, last_name y city. Los datos de origen subyacentes no se ven afectados.

ALTER TABLE names_cities REPLACE COLUMNS (first_name string, last_name string, city string)

Para probar el resultado, SHOW COLUMNS se ejecuta de nuevo.

SHOW COLUMNS IN names_cities

Resultado de la consulta:

first_name last_name city

Otra forma de mostrar los nuevos nombres de las columnas es obtener una vista previa de la tabla en el Editor de consultas de Athena o ejecutar su propia consulta SELECT.