

# Amazon Data Firehose 示例
<a name="partition-projection-kinesis-firehose-example"></a>

当您使用 Firehose 将数据传输到 Amazon S3 时，默认配置会使用类似于以下示例的键写入对象：

```
s3://amzn-s3-demo-bucket/prefix/yyyy/MM/dd/HH/file.extension
```

要创建在查询时自动查找分区的 Athena 表，而不必在新数据到达时将它们添加到 Amazon Glue Data Catalog，您可以使用分区投影。

以下 `CREATE TABLE` 示例使用了默认 Firehose 配置。

```
CREATE EXTERNAL TABLE my_ingested_data (
 ...
)
...
PARTITIONED BY (
 datehour STRING
)
LOCATION "s3://amzn-s3-demo-bucket/{{prefix}}/"
TBLPROPERTIES (
 "projection.enabled" = "true",
 "projection.datehour.type" = "date",
 "projection.datehour.format" = "yyyy/MM/dd/HH",
 "projection.datehour.range" = "2021/01/01/00,NOW",
 "projection.datehour.interval" = "1",
 "projection.datehour.interval.unit" = "HOURS",
 "storage.location.template" = "s3://amzn-s3-demo-bucket/{{prefix}}/${datehour}/"
)
```

`CREATE TABLE` 语句中的 `TBLPROPERTIES` 子句告诉 Athena 以下内容：
+ 查询表时使用分区投影
+ 分区键 `datehour` 的类型为 `date`（包括可选时间）
+ 如何格式化日期
+ 日期时间范围 请注意，必须使用逗号来分隔值，而不是使用连字符。
+ Amazon S3 上数据所在的位置。

当您查询表时，Athena 会计算 `datehour` 值并使用存储位置模板生成分区位置列表。

**Topics**
+ [如何使用 `date` 类型](partition-projection-kinesis-firehose-example-using-the-date-type.md)
+ [如何选择分区键](partition-projection-kinesis-firehose-example-choosing-partition-keys.md)
+ [如何使用自定义前缀和动态分区](partition-projection-kinesis-firehose-example-using-custom-prefixes-and-dynamic-partitioning.md)