

# 路径提取器示例
<a name="ion-serde-examples"></a>

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

## 扁平化并重命名字段
<a name="ion-serde-flattening-and-renaming-fields"></a>

以下示例显示了用于拼合和重命名字段的搜索路径。此示例使用搜索路径来执行以下操作：
+ 将 `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 路径提取](https://github.com/amzn/ion-java-path-extraction)页面。

## 将航班数据提取为文本格式
<a name="ion-serde-extracting-flight-data-to-text-format"></a>

以下示例 `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/'
```