路径提取器示例 - Amazon Athena

路径提取器示例

以下路径提取器示例演示如何扁平化和重命名字段或将数据提取为 Amazon Ion 文本。

扁平化并重命名字段

以下示例显示了用于拼合和重命名字段的搜索路径。此示例使用搜索路径来执行以下操作:

  • nickname 列映射到 alias 字段

  • name 列映射到位于 identification 结构中的 name 子字段。

以下是 Amazon Ion 文档示例。

-- Example Amazon Ion Document { identification: { name: "John Smith", driver_license: "XXXX" }, alias: "Johnny" }

以下是定义路径提取器的示例 CREATE TABLE 语句。

-- Example DDL Query CREATE EXTERNAL TABLE example_schema2 ( name STRING, nickname STRING ) ROW FORMAT SERDE 'com.amazon.ionhiveserde.IonHiveSerDe' WITH SERDEPROPERTIES ( 'ion.nickname.path_extractor' = '(alias)', 'ion.name.path_extractor' = '(identification name)' ) STORED AS ION LOCATION 's3://amzn-s3-demo-bucket/path_extraction2/'

以下示例显示提取的数据。

-- Extracted Table | name | nickname | |--------------|--------------| | "John Smith" | "Johnny" |

有关搜索路径和其他搜索路径示例的更多信息,请参阅 GitHub 上的 Ion Java 路径提取页面。

将航班数据提取为文本格式

以下示例 CREATE TABLE 查询使用 WITH SERDEPROPERTIES 添加路径提取器以提取航班数据,并将输出编码指定为 Amazon Ion 文本。此示例使用 STORED AS ION 语法。

CREATE EXTERNAL TABLE flights_ion ( yr INT, quarter INT, month INT, dayofmonth INT, dayofweek INT, flightdate STRING, uniquecarrier STRING, airlineid INT, ) ROW FORMAT SERDE 'com.amazon.ionhiveserde.IonHiveSerDe' WITH SERDEPROPERTIES ( 'ion.encoding' = 'TEXT', 'ion.yr.path_extractor'='(year)', 'ion.quarter.path_extractor'='(results quarter)', 'ion.month.path_extractor'='(date month)') STORED AS ION LOCATION 's3://amzn-s3-demo-bucket/'