Renomear colunas - Amazon Athena

Renomear colunas

Talvez você queira renomear colunas em suas tabelas para corrigir ortografia, tornar os nomes das colunas mais descritivos ou reutilizar uma coluna existente para evitar a reclassificação dela.

Você pode renomear colunas se armazenar seus dados em CSV e TSV, ou em Parquet e ORC, que são configurados para leitura por índice. Para ter mais informações, consulte Noções básicas do acesso ao índice para Apache ORC e Apache Parquet.

O Athena lê os dados em CSV e TSV na ordem das colunas no esquema e os retorna na mesma ordem. Ele não usa os nomes de coluna para mapear os dados para uma coluna. É por esse motivo que você pode renomear as colunas em CSV ou TSV sem interromper as consultas do Athena.

Uma estratégia para renomear colunas é criar uma tabela com base nos mesmos dados subjacentes, mas usando novos nomes de coluna. O exemplo a seguir cria uma tabela orders_parquet chamada orders_parquet_column_renamed. O exemplo altera o nome da coluna `o_totalprice` para `o_total_price` e executa uma consulta no 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/';

No caso da tabela do Parquet, a consulta a seguir é executada. No entanto, a coluna renomeada não exibe dados, porque ela estava sendo acessada por nome (um padrão no Parquet) em vez de por índice:

SELECT * FROM orders_parquet_column_renamed;

Uma consulta com uma tabela em CSV tem aparência semelhante:

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/';

No caso da tabela CSV, a consulta a seguir é executada, e os dados são exibidos em todas as colunas, incluindo aquela que foi renomeada:

SELECT * FROM orders_csv_column_renamed;