

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

# 建立 CloudFront 標準日誌的資料表 (舊版)
<a name="create-cloudfront-table-standard-logs"></a>

**注意**  
下列程序適用於 CloudFront 中的 Web 分佈存取日誌。不適用於來自 RTMP 分佈的串流日誌。

**建立 CloudFront 標準日誌檔案欄位的資料表**

1. 複製下列範例 DDL 陳述式，並將其貼到 Athena 主控台查詢編輯器。範例陳述式使用《**Amazon CloudFront 開發人員指南》中[標準日誌檔欄位](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html#BasicDistributionFileFormat)章節中所述的日誌檔欄位。為存放日誌的 Amazon S3 儲存貯體修改 `LOCATION`。如需有關使用查詢編輯器的資訊，請參閱[開始使用](getting-started.md)。

   此查詢可指定 `ROW FORMAT DELIMITED` 和 `FIELDS TERMINATED BY '\t'`，表示欄位以定位字元分隔。對於 `ROW FORMAT DELIMITED`，Athena 預設使用 [LazySimpleSerDe](lazy-simple-serde.md)。因為在 Athena 中它是保留字，所以使用反引號 (') 逸出 `date` 資料欄。如需相關資訊，請參閱[在查詢中逸出預留關鍵字](reserved-words.md)。

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_standard_logs (
     `date` DATE,
     time STRING,
     x_edge_location STRING,
     sc_bytes BIGINT,
     c_ip STRING,
     cs_method STRING,
     cs_host STRING,
     cs_uri_stem STRING,
     sc_status INT,
     cs_referrer STRING,
     cs_user_agent STRING,
     cs_uri_query STRING,
     cs_cookie STRING,
     x_edge_result_type STRING,
     x_edge_request_id STRING,
     x_host_header STRING,
     cs_protocol STRING,
     cs_bytes BIGINT,
     time_taken FLOAT,
     x_forwarded_for STRING,
     ssl_protocol STRING,
     ssl_cipher STRING,
     x_edge_response_result_type STRING,
     cs_protocol_version STRING,
     fle_status STRING,
     fle_encrypted_fields INT,
     c_port INT,
     time_to_first_byte FLOAT,
     x_edge_detailed_result_type STRING,
     sc_content_type STRING,
     sc_content_len BIGINT,
     sc_range_start BIGINT,
     sc_range_end BIGINT
   )
   ROW FORMAT DELIMITED 
   FIELDS TERMINATED BY '\t'
   LOCATION 's3://amzn-s3-demo-bucket/'
   TBLPROPERTIES ( 'skip.header.line.count'='2' )
   ```

1. 在 Athena 主控台中執行查詢。查詢完成之後，Athena 會註冊 `cloudfront_standard_logs` 資料表，讓其中的資料可供您發出查詢。

## 查詢範例
<a name="query-examples-cloudfront-logs"></a>

以下查詢加總 CloudFront 在 2018 年 6 月 9 日到 6 月 11 日之間提供的位元組數。以雙引號圍住日期欄名稱，因為它是保留字。

```
SELECT SUM(bytes) AS total_bytes
FROM cloudfront_standard_logs
WHERE "date" BETWEEN DATE '2018-06-09' AND DATE '2018-06-11'
LIMIT 100;
```

若要從查詢結果中除去重複的資料列 (例如，重複的空白資料列)，您可以使用 `SELECT DISTINCT` 陳述式，如下列範例所示。

```
SELECT DISTINCT * 
FROM cloudfront_standard_logs 
LIMIT 10;
```