

# 使用手动分区为整个组织范围的跟踪创建表
<a name="create-cloudtrail-table-org-wide-trail"></a>

要在 Athena 中为整个组织的 CloudTrail 日志文件创建表，请按照 [使用手动分区在 Athena 中为 CloudTrail 日志创建表](create-cloudtrail-table.md) 中的步骤操作，但需要按照以下过程中的说明进行修改。

**为整个组织的 CloudTrail 日志记录创建 Athena 表**

1. 在 `CREATE TABLE` 语句中，修改 `LOCATION` 子句以包含组织 ID，如下例所示：

   ```
   LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/organization_id/'
   ```

1. 在 `PARTITIONED BY` 子句中，为账户 ID 添加一个字符串条目，如下例所示：

   ```
   PARTITIONED BY (account string, region string, year string, month string, day string)
   ```

   以下示例显示的是综合结果：

   ```
   ...
   
   PARTITIONED BY (account string, region string, year string, month string, day string) 
   ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
   STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat'
   OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/organization_id/Account_ID/CloudTrail/'
   ```

1. `ALTER TABLE` 语句的 `ADD PARTITION` 子句包含账户 ID，如下例所示：

   ```
   ALTER TABLE table_name ADD
   PARTITION (account='111122223333',
   region='us-east-1',
   year='2022',
   month='08',
   day='08')
   ```

1. `ALTER TABLE` 语句的 `LOCATION` 子句包含组织 ID、账户 ID 以及您要添加的分区，如下例所示：

   ```
   LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/organization_id/Account_ID/CloudTrail/us-east-1/2022/08/08/'
   ```

   以下示例 `ALTER TABLE` 语句显示的是综合结果：

   ```
   ALTER TABLE table_name ADD
   PARTITION (account='111122223333',
   region='us-east-1',
   year='2022',
   month='08',
   day='08')
   LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/organization_id/111122223333/CloudTrail/us-east-1/2022/08/08/'
   ```

请注意，在大型组织中，使用此方法为每个组织帐户 ID 手动添加和维护分区可能很麻烦。在这种情况下，请考虑使用 CloudTrail Lake 而不是 Athena。在这种情况下，CloudTrail Lake 具有以下优势：
+ 自动聚合整个组织的日志
+ 不需要设置或维护分区或 Athena 表
+ 查询直接在 CloudTrail 控制台中运行
+ 使用与 SQL 兼容的查询语言

有关更多信息，请参阅《*AWS CloudTrail 用户指南*》中的[使用 AWS CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html)。