重新命名欄 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

重新命名欄

您可能需要重新命名資料表以更正拼字、讓資料欄名稱更具描述性,或重複使用現有的資料欄以避免資料欄重新排序。

如果您以 CSV 和 TSV 存放資料,或以設定為依索引讀取的 Parquet 和 ORC 存放資料,您可以重新命名資料欄。如需相關資訊,請參閱 了解 Apache ORC 和 Apache Parquet 的索引存取

Athena 依結構描述中的資料欄順序讀取 CSV 和 TSV 資料,並以相同順序傳回資料。它不使用資料欄名稱將資料映射到資料欄,因此您可以重新命名 CSV 或 TSV 格式的資料欄,而不會破壞 Athena 查詢。

重新命名資料欄的一種策略是根據相同的基礎資料建立一個新資料表,但使用新的資料欄名稱。下列範例建立新的 orders_parquet 資料表,名為 orders_parquet_column_renamed。此範例會變更資料欄 `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;