열 이름 변경하기
철자를 수정하거나, 열 이름에 설명을 포함시키거나, 열이 재정렬되지 않도록 기존 열을 다시 사용하기 위해 테이블의 열 이름을 바꿔야 할 수 있습니다.
데이터를 CSV 및 TSV 형식 또는 Parquet 및 ORC 형식(인덱스로 읽도록 구성된 경우)으로 저장한 경우 열 이름을 변경할 수 있습니다. 자세한 내용은 Apache ORC 및 Apache Parquet의 인덱스 액세스에 대한 이해을 참조하세요.
Athena는 스키마의 열 순서대로 CSV 및 TSV 형식의 데이터를 읽고 이를 동일한 순서로 반환합니다. 데이터를 열에 매핑할 때 열 이름을 사용하지 않기 때문에, Athena 쿼리를 중단하지 않고 CSV 또는 TSV 형식의 열 이름을 바꿀 수 있습니다.
열 이름을 바꾸는 한 가지 전략은 동일한 기본 데이터를 기반으로 새 테이블을 만들되 새 열 이름을 사용하는 것입니다. 다음 예제에서는 orders_parquet_column_renamed
라는 새 orders_parquet
테이블을 만듭니다. 이 예제는 열 이름 `o_totalprice`
를 `o_total_price`
로 변경한 다음 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/';
Parquet 테이블의 경우 다음 쿼리가 실행되지만 인덱스 대신 이름으로 열에 액세스(Parquet의 기본값)하므로 이름을 바꾼 열에 데이터가 표시되지 않습니다.
SELECT * FROM orders_parquet_column_renamed;
CSV 형식의 테이블이 있는 쿼리는 비슷하게 보입니다:
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/';
CSV 테이블의 경우, 다음 쿼리가 실행되고 이름이 바뀐 열을 포함한 모든 열에 데이터가 표시됩니다:
SELECT * FROM orders_csv_column_renamed;