Cambio del nombre de las columnas - Amazon Athena

Cambio del nombre de las columnas

Es posible que desee cambiar el nombre de las columnas de las tablas para corregir errores de ortografía, hacer que los nombres de las columnas sean mas descriptivos o reutilizar una columna existente para evitar la reordenación de columnas.

Puede cambiar el nombre de las columnas si almacena los datos en CSV y TSV, o en Parquet y ORC si están configurados para leer por índice. Para obtener más información, consulte Descripción del acceso a los índices para Apache ORC y Apache Parquet.

Athena lee los datos con formato CSV y TSV en el orden que tienen las columnas en el esquema y los devuelve en el mismo orden. No utiliza los nombres de las columnas para el mapeo de datos a una columna y por ello es posible cambiar el nombre de las columnas en CSV o TSV sin invalidar las consultas de Athena.

Una estrategia para cambiar el nombre de las columnas consiste en crear una nueva tabla basada en los mismos datos subyacentes, pero utilizando nuevos nombres de columna. En el siguiente ejemplo, se crea una nueva tabla orders_parquet llamada orders_parquet_column_renamed. En el ejemplo se cambia el nombre de la columna `o_totalprice` a `o_total_price` y, a continuación, se ejecuta una consulta en Athena:

CREATE EXTERNAL TABLE orders_parquet_column_renamed ( `o_orderkey` int, `o_custkey` int, `o_orderstatus` string, `o_total_price` double, `o_orderdate` string, `o_orderpriority` string, `o_clerk` string, `o_shippriority` int, `o_comment` string ) STORED AS PARQUET LOCATION 's3://amzn-s3-demo-bucket/orders_parquet/';

En el caso de la tabla en Parquet, la consulta siguiente se ejecuta, pero la columna cuyo nombre ha cambiado no muestra datos, ya que se estaba obteniendo acceso a ella por nombre (comportamiento predeterminado en Parquet) en lugar de por índice:

SELECT * FROM orders_parquet_column_renamed;

Una consulta con una tabla en CSV tiene un aspecto similar:

CREATE EXTERNAL TABLE orders_csv_column_renamed ( `o_orderkey` int, `o_custkey` int, `o_orderstatus` string, `o_total_price` double, `o_orderdate` string, `o_orderpriority` string, `o_clerk` string, `o_shippriority` int, `o_comment` string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION 's3://amzn-s3-demo-bucket/orders_csv/';

En el caso de la tabla en CSV, se ejecuta la consulta siguiente y los datos se muestran en todas las columnas, incluida aquella cuyo nombre se ha cambiado:

SELECT * FROM orders_csv_column_renamed;