

# 查询 IIS 日志文件格式
<a name="querying-iis-logs-iis-log-file-format"></a>

与 W3C 扩展格式不同，[IIS 日志文件格式](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc728311(v%3dws.10))有一组固定的字段，并包含逗号作为分隔符。LazySimpleSerDe 将逗号视为分隔符，逗号后的空格视为下一个字段的开头。

以下示例以 IIS 日志文件格式显示示例数据。

```
203.0.113.15, -, 2020-02-24, 22:48:38, W3SVC2, SERVER5, 198.51.100.4, 254, 501, 488, 200, 0, GET, /index.htm, -, 
203.0.113.4, -, 2020-02-24, 22:48:39, W3SVC2, SERVER6, 198.51.100.6, 147, 411, 388, 200, 0, GET, /about.html, -, 
203.0.113.11, -, 2020-02-24, 22:48:40, W3SVC2, SERVER7, 198.51.100.18, 170, 531, 468, 200, 0, GET, /image.png, -, 
203.0.113.8, -, 2020-02-24, 22:48:41, W3SVC2, SERVER8, 198.51.100.14, 125, 711, 868, 200, 0, GET, /intro.htm, -,
```

## 在 Athena 中为 IIS 日志文件创建表
<a name="querying-iis-logs-creating-a-table-in-athena-for-iis-log-files"></a>

要在 Amazon S3 中查询 IIS 日志文件格式日志，请首先创建一个表架构，以便 Athena 可以读取日志数据。

**要在 Athena 中为 IIS 日志文件格式日志创建表**

1. 从 [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) 打开 Athena 控制台。

1. 将以下 DDL 语句粘贴到 Athena 控制台中，并注意以下几点：

   1. 要指定逗号分隔符，请使用 `FIELDS TERMINATED BY ','`。

   1. 修改 LOCATION 's3://amzn-s3-demo-bucket/*iis-log-file-folder*/' 中的值以指向 Amazon S3 中的 IIS 日志格式日志文件。

   ```
   CREATE EXTERNAL TABLE `iis_format_logs`(
   client_ip_address string,
   user_name string,
   request_date string,
   request_time string,
   service_and_instance string,
   server_name string,
   server_ip_address string,
   time_taken_millisec string,
   client_bytes_sent string,
   server_bytes_sent string,
   service_status_code string,
   windows_status_code string,
   request_type string,
   target_of_operation string,
   script_parameters string
      )
   ROW FORMAT DELIMITED
     FIELDS TERMINATED BY ','
   STORED AS INPUTFORMAT
     'org.apache.hadoop.mapred.TextInputFormat'
   OUTPUTFORMAT
     'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
     's3://amzn-s3-demo-bucket/iis-log-file-folder/'
   ```

1. 在 Athena 控制台中运行查询以注册 `iis_format_logs` 表。查询完成后，调查结果准备就绪，可供您从 Athena 查询。

## IIS 日志格式选择查询示例
<a name="querying-iis-logs-example-iis-log-format-select-query"></a>

以下示例查询从表 `iis_format_logs` 中选择了请求日期、请求时间、请求目标和用时（以毫秒为单位）。`WHERE` 子句筛选条件，用于请求类型为 `GET`，以及 HTTP 状态代码为 `200`（成功）的情况。在查询中，请注意，在 `' GET'` 和 `' 200'` 中需要前导空白才能成功查询。

```
SELECT request_date, request_time, target_of_operation, time_taken_millisec
FROM iis_format_logs
WHERE request_type = ' GET' AND service_status_code = ' 200'
```

下图显示了示例数据查询的结果。

![\[存储在 Amazon S3 中的 IIS 日志文件格式日志文件的 Athena 示例查询结果。\]](http://docs.aws.amazon.com/zh_cn/athena/latest/ug/images/querying-iis-logs-2.png)
