

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# WorkSpaces 应用程序使用情况报告
<a name="configure-usage-reports"></a>

您可以订阅 Amazon A WorkSpaces pplications 使用报告，以接收有关您的用户如何使用该服务的详细报告。每天会将两个 .csv 文件导出到您账户中的 Amazon Simple Storage Service（Amazon S3）存储桶中。

**注意**  
要启用 WorkSpaces 应用程序使用情况报告，您必须使用使用 2019 年 5 月 7 日当天或之后发布的 WorkSpaces 应用程序代理版本的图像。

**Topics**
+ [启用 WorkSpaces 应用程序使用情况报告](enable-usage-reports.md)
+ [WorkSpaces 应用程序使用情况报告字段](usage-reports-fields.md)
+ [创建自定义报告并分析 WorkSpaces 应用程序使用情况数据](configure-custom-reports-analyze-usage-data.md)

# 启用 WorkSpaces 应用程序使用情况报告
<a name="enable-usage-reports"></a>

要接收使用情况报告，您可以使用 WorkSpaces 应用程序控制台、 AWS Command Line Interface (AWS CLI) 或 `CreateUsageReportSubscription` API 操作订阅这些报告。您必须为要接收其使用数据的每个 AWS 区域分别启用使用情况报告。

**注意**  
您随时可以启动或停止您的使用情况报告订阅。订阅使用情况报告是免费的，但标准 Amazon S3 费用可能适用于存储在您的 S3 存储桶中的报告。有关更多信息，请参阅 [Amazon S3 定价](https://aws.amazon.com/s3/pricing/)。

要使用应用程序控制台订阅 WorkSpaces WorkSpaces 应用程序的使用情况报告，请执行以下步骤。

1. 在[https://console.aws.amazon.com/appstream2/家](https://console.aws.amazon.com/appstream2/home)中打开 WorkSpaces 应用程序控制台。

1. 选择要为其启用使用情况报告的 AWS 区域。

1. 在导航窗格中，选择**使用情况报告**。

1. 选择**启用**，然后选择**应用**。

如果您为会话脚本配置启用了实例会话脚本和 Amazon S3 日志记录，则 WorkSpaces 应用程序会创建一个 S3 存储桶来存储脚本输出。此存储桶对于您的账户和区域而言是唯一的。在这种情况下，当您启用使用情况报告时， WorkSpaces 应用程序将使用相同的存储桶来存储您的使用情况报告。如果您尚未启用实例会话脚本，则在启用使用情况报告时， WorkSpaces 应用程序将在以下位置创建一个新的 S3 存储桶：

```
appstream-logs-region-code-account-id-without-hyphens-random-identifier
```

***region-code***  
启用使用情况报告的区域的区域代码。 AWS 

***account-id-without-hyphens***  
您的 Amazon Web Services 账户标识符。随机 ID 确保与此相同区域中的其他存储桶不发生冲突。存储桶名称的第一部分 `appstream-logs` 不随账户或区域而改变。

例如，如果您在美国西部（俄勒冈）区域 (us-west-2) 启用账号为 123456789012 的使用情况报告，则应用程序将在该地区的账户中创建一个 Amazon S3 存储桶 WorkSpaces ，名称与以下示例中显示的名称类似：

```
appstream-logs-us-west-2-1234567890123-abcdefg
```

只有具有足够权限的管理员才能删除此存储桶。

**Topics**
+ [WorkSpaces 应用程序会话报告](usage-report-types-sessions-reports.md)
+ [WorkSpaces 应用程序应用程序报告](usage-report-types-applications-reports.md)

# WorkSpaces 应用程序会话报告
<a name="usage-report-types-sessions-reports"></a>

对于用户每天在您的 Amazon Web Services 账户中启动至少一个流式传输会话， WorkSpaces 应用程序会将一份会话报告导出到您的 Amazon S3 存储桶。该报告名为 **daily-session-report-[YYYY]-[MM]-[DD] .csv**，使用以下文件夹路径存储在您的 Amazon S3 账户的嵌套文件夹结构中：

[bucket\$1name]/sessions/schedule=DAILY/year=[YYYY]/month=[MM]/day= [DD]/

如果您选择使用 Amazon Athena 查询您的报告，则此嵌套结构有助于进行分区。Athena 是一种无服务器、交互式查询服务，可使用此服务通过标准 SQL 分析 S3 存储桶中存储的数据。有关更多信息，请参阅 [创建自定义报告并分析 WorkSpaces 应用程序使用情况数据](configure-custom-reports-analyze-usage-data.md)。

每个用户会话都在会话报告的单个记录中描述。会话报告根据 UTC 时间每天在作为报告主题的日期结束的 24 小时内生成。如果会话跨多天，则会话记录会显示在与会话结束日期对应的会话报告中。有关包含在会话报告中的数据的信息，请参阅[会话报告字段](usage-reports-fields-sessions-reports.md)。

# WorkSpaces 应用程序应用程序报告
<a name="usage-report-types-applications-reports"></a>

对于用户在流式传输会话期间每天至少启动一个应用程序，应用程序会将一份 WorkSpaces 应用程序报告导出到您的 Amazon S3 存储桶。该报告名为 **daily-app-report-[YYYY]-[MM]-[DD] .csv**，使用以下文件夹路径存储在您的 Amazon S3 账户的嵌套文件夹结构中：

[bucket\$1name]/applications/schedule=DAILY/year=[YYYY]/month=[MM]/day= [DD]/

如果您选择使用 Amazon Athena 查询您的报告，则此嵌套结构有助于进行分区。Athena 是一种无服务器、交互式查询服务，可使用此服务通过标准 SQL 分析 S3 存储桶中存储的数据。有关更多信息，请参阅 [创建自定义报告并分析 WorkSpaces 应用程序使用情况数据](configure-custom-reports-analyze-usage-data.md)。

应用程序报告中的单条记录描述每次应用程序启动。例如，如果用户在会话过程中启动五个独立的应用程序，则相关的应用程序报告中显示五个单独的记录。如果发生以下任何事件，则将应用程序记录为启动：
+ 当会话开始时直接启动应用程序，因为应用程序 ID 嵌入到流式传输 URL 或中继状态。
+ 当启动新的流式传输会话时，用户从应用程序目录选择应用程序。
+ 在流式传输会话期间，从应用程序目录列表中选择应用程序。

应用程序报告不包含以其他方式启动的应用程序。例如，如果您为用户提供访问 Windows 资源管理器或 Windows 桌面 “**开始**” 菜单的权限，并且用户使用这些工具直接启动应用程序，或者如果其他程序或脚本启动了应用程序，则这些应用程序的启动不会包含在应用程序报告中。 PowerShell

应用程序报告根据 UTC 时间每天在作为报告主题的日期结束的 24 小时内生成。如果会话跨多天，则在会话期间启动的应用程序将反映在与会话结束日期对应的应用程序报告中。有关包含在应用程序报告中的数据的信息，请参阅[应用程序报告字段](usage-reports-fields-applications-reports.md)。

# WorkSpaces 应用程序使用情况报告字段
<a name="usage-reports-fields"></a>

本主题提供有关 WorkSpaces 应用程序使用情况报告中包含的字段的信息。

**Topics**
+ [会话报告字段](usage-reports-fields-sessions-reports.md)
+ [应用程序报告字段](usage-reports-fields-applications-reports.md)

# 会话报告字段
<a name="usage-reports-fields-sessions-reports"></a>

下表描述了 WorkSpaces 应用程序会话报告中包含的字段。


| 字段名称 | 说明 | 
| --- | --- | 
| user\$1session\$1id | 会话的唯一标识符 (ID)。 | 
| aws\$1account\$1id | Amazon Web Services 账户 ID。 | 
| region | 该 AWS 地区。 | 
| session\$1start\$1time |  会话开始的日期和时间。必须是用 ISO 8601 格式指定的 UTC 时间。  | 
| session\$1end\$1time |  会话结束的日期和时间。必须是用 ISO 8601 格式指定的 UTC 时间。  | 
| session\$1duration\$1in\$1seconds | 会话的持续时间（以秒为单位）。 | 
| user\$1id | 身份验证类型内用户的唯一 ID。 | 
| user\$1arn | 用户的 Amazon 资源名称 (ARN)。 | 
| authentication\$1type |  用于验证用户的方法。 可能的值：`CUSTOM` \$1 `SAML` \$1 `USERPOOL`  | 
| authentication\$1type\$1user\$1id | 用户 ID 和身份验证类型的串联，唯一标识用户以用于评估用户费用。有关更多信息，请参阅[WorkSpaces 应用程序定价](https://aws.amazon.com/appstream2/pricing/)。 | 
| fleet\$1name | 与会话关联的实例集的名称。 | 
| stack\$1name | 与会话关联的堆栈的名称。 | 
| instance\$1type | 用于会话的 WorkSpaces 应用程序实例类型。有关实例类型的列表，请参阅[WorkSpaces 应用程序定价](https://aws.amazon.com/appstream2/pricing/)。 | 
| eni\$1private\$1ip\$1address |  WorkSpaces 应用程序实例用于网络通信的 elastic network 接口的 IP 地址。 | 
| connected\$1at\$1least\$1once |  指示用户是否连接到会话至少一次。 可能的值：`true` \$1 `false`  | 
| client\$1ip\$1addresses | 与用于连接到会话的一台或多台用户设备关联的 IP 地址。如果用户多次连接会话然后断开会话，最多可存储最后 10 个不同的 IP 地址，用分号隔开。 | 
| google\$1drive\$1enabled |  指示是否启用了 Google Drive 作为会话的持久性存储选项。有关更多信息，请参阅 [为您的 WorkSpaces 应用用户启用和管理 Google 云端硬盘](google-drive.md)。 可能的值：`true` \$1 `false`  | 
| one\$1drive\$1enabled |  表示是否 OneDrive 已作为会话的永久存储选项启用。有关更多信息，请参阅 [为您的 WorkSpaces 应用用户启用和管理 Google 云端硬盘](google-drive.md)。 可能的值：`true` \$1 `false`  | 
| home\$1folders\$1storage\$1location | 用于使用主文件夹存储的文件的 Amazon S3 存储桶。 | 
| user\$1settings\$1clipboard\$1copy\$1from\$1local\$1device |  指示在会话期间，用户是否能够使用剪贴板将本地设备中的数据复制到流式传输会话。 可能的值：`ENABLED` \$1 `DISABLED`  | 
| user\$1settings\$1clipboard\$1copy\$1to\$1local\$1device |  指示在会话期间，用户是否能够使用剪贴板将流式传输会话中的数据复制到本地设备。 可能的值：`ENABLED` \$1 `DISABLED`  | 
| user\$1settings\$1file\$1upload |  指示在会话期间，用户是否能够将本地设备中的文件复制到流式传输会话。 可能的值：`ENABLED` \$1 `DISABLED`  | 
| user\$1settings\$1file\$1download |  指示在会话期间，用户是否能够将流式传输会话中的文件复制到本地设备。 可能的值：`ENABLED` \$1 `DISABLED`  | 
| user\$1settings\$1printing\$1to\$1local\$1device |  指示在会话期间，用户是否能够将流式传输会话中的文件打印到本地设备。 可能的值：`ENABLED` \$1 `DISABLED`  | 
| application\$1settings\$1enabled |  指示是否已为会话启用应用程序设置持久性。 可能的值：`true` \$1 `false`  | 
| domain\$1joined |  表示 WorkSpaces 应用程序流媒体实例是否在会话启动时加入了 Active Directory 域。有关更多信息，请参阅 [将活动目录与 WorkSpaces 应用程序配合使用](active-directory.md)。 可能的值：`Y` \$1 `N`  | 
| max\$1session\$1duration | 会话的最大允许持续时间（以秒为单位）。 | 
| session\$1type |  会话类型。 可能的值：`ALWAYS_ON` \$1 `ON_DEMAND`  | 
| stream\$1view |  流视图。 可能的值：`APPLICATION` \$1 `DESKTOP`  | 
| streaming\$1experience\$1settings\$1protocol |  流式传输会话结束时使用的协议。 可能的值：`UDP` \$1 `TCP`  | 
| instance\$1id | 与用户会话关联的实例 ID。 | 
| is\$1multisession |  指示会话是否属于多会话实例集。 可能的值：`true` \$1 `false`  | 

# 应用程序报告字段
<a name="usage-reports-fields-applications-reports"></a>

下表描述了 WorkSpaces 应用程序应用程序报告中包含的字段。


| 字段名称 | 说明 | 
| --- | --- | 
| user\$1session\$1id | 会话的唯一标识符 (ID)。 | 
| application\$1name | 应用程序的名称（如在 Image Assistant 中指定）。当用户通过应用程序界面启动应用程序时，会 WorkSpaces 提供此值。 | 
| 计划 | 生成报告的频率。 可能的值：DAILY | 
| year | 报告的年份。 | 
| month | 报告的月份。 | 
| day | 报告的日期。 | 

# 创建自定义报告并分析 WorkSpaces 应用程序使用情况数据
<a name="configure-custom-reports-analyze-usage-data"></a>

Amazon Athena 是一种无服务器、交互式查询服务，可使用此服务通过标准 SQL 查询分析 S3 存储桶中存储的数据。您可以使用 Athena 来汇总您的使用情况报告或生成其他类型的自定义报告。

**Topics**
+ [创建 AWS Glue 爬虫](configure-custom-reports-create-crawler.md)
+ [使用 C AWS Glue rawler 创建数据目录](configure-custom-reports-create-data-catalog.md)
+ [创建和运行 Athena 查询](configure-custom-reports-create-run-athena-queries.md)
+ [使用 Athena 查询](configure-custom-reports-example-sql-queries.md)

# 创建 AWS Glue 爬虫
<a name="configure-custom-reports-create-crawler"></a>

AWS Glue 是一项完全托管的提取、转换和加载 (ETL) 服务，允许您从 Amazon S3 数据创建数据库并使用 Athena 查询该数据库。该数据库也称为 AWS Glue 数据目录。 AWS Glue 爬虫可以自动检测您的 Amazon S3 数据的架构并创建相应的数据库和表。 WorkSpaces 应用程序提供了一个 CloudFormation 模板，您可以使用该模板来创建必要的 AWS Glue 资源。

**重要**  
完成以下过程中的步骤将创建 AWS Glue 爬虫。但是，这些步骤不会启动爬网程序。要启动爬网程序，您必须执行下一过程中的步骤。有关 AWS Glue 抓取工具的更多信息，请参阅[定义爬虫](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)。

**创建 AWS Glue 爬虫**

1. 在[https://console.aws.amazon.com/appstream2/家](https://console.aws.amazon.com/appstream2/home)中打开 WorkSpaces 应用程序控制台。

1. 选择您已订阅使用情况报告的 AWS 区域。

1. 在导航窗格中，选择 **Usage Reports (使用率报告)**，然后确认使用率报告日志记录已启用。

1. 在**报告详细信息**选项卡上，在 **Analytics** 旁边的段落中，选择**CloudFormation模板**链接。

   选择该链接将打开 CloudFormation 控制台，在运行模板之前，可以在其中查看模板指定的 CloudFormation 堆栈参数。该模板在运行时会创建一个 AWS Glue 爬虫和几个示例 Athena 查询。

1. **在 “指定详细信息**” 页面上，在旁边 **ScheduleExpression**，保留默认值或为要运行爬网程序的频率指定不同的 cron 表达式值。请勿更改任何其他默认值。完成此操作后，选择**下一步**。

   默认情况下，爬网程序设定为每天运行，但您可以配置爬网程序每周、每月或以其他频率运行。有关 cron 语法的信息，请参阅 [Cron 表达式](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions)。

1. 在 **Options (选项)** 页面上，保留默认值，然后选择 **Next (下一步)**。

1. 在 “**查**看” 页面上，选中 “我确认 CloudFormation 可能会使用自定义名称创建 IAM 资源” 旁边的复选框，然后选择 “**创建**”。

   您必须拥有足够的 AWS Glue 和 AWS Identity and Access Management (IAM) 权限才能创建和运行 CloudFormation 堆栈。如果您没有所需的权限，则要求您的 Amazon Web Services 账户管理员在您的账户中执行这些步骤或授予您以下权限。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "athena:CreateNamedQuery",
                   "athena:BatchGetNamedQuery",
                   "athena:GetNamedQuery",
                   "athena:StartQueryExecution",
                   "athena:GetQueryResults",
                   "athena:GetQueryExecution",
                   "athena:ListNamedQueries",
                   "cloudformation:DescribeStacks",
                   "cloudformation:GetStackPolicy",
                   "cloudformation:DescribeStackEvents",
                   "cloudformation:CreateStack",
                   "cloudformation:GetTemplate",
                   "cloudformation:ListChangeSets",
                   "cloudformation:ListStackResources",
                   "iam:GetRole",
                   "iam:CreateRole",
                   "iam:GetRolePolicy",
                   "s3:GetBucketLocation",
                   "s3:ListBucketMultipartUploads",
                   "s3:ListBucket",
                   "s3:ListMultipartUploadParts",
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:AbortMultipartUpload"
               ],
               "Resource": [
                   "arn:aws:iam::*:role/AppStreamUsageReports-AppStreamUsageReportGlueRole*",
                   "arn:aws:cloudformation:*:*:stack/AppStreamUsageReports/*",
                   "arn:aws:athena:*:*:workgroup/primary",
                   "arn:aws:s3:::aws-athena-query-results-*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iam:AttachRolePolicy",
                   "iam:PutRolePolicy",
                   "s3:GetObject",
                   "s3:ListBucket"
               ],
               "Resource": [
                   "arn:aws:s3:::appstream-logs-*",
                   "arn:aws:iam::*:role/AppStreamUsageReports-AppStreamUsageReportGlueRole*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iam:PassRole"
               ],
               "Resource": [
                   "arn:aws:iam::*:role/AppStreamUsageReports-AppStreamUsageReportGlueRole*"
               ],
               "Condition": {
                   "StringEquals": {
                       "iam:PassedToService": "glue.amazonaws.com"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "cloudformation:GetTemplateSummary",
                   "glue:GetResourcePolicy",
                   "glue:GetCrawlers",
                   "glue:BatchGetCrawlers",
                   "glue:GetClassifiers",
                   "glue:CreateClassifier",
                   "glue:ListCrawlers",
                   "glue:GetTags",
                   "glue:GetCrawlerMetrics",
                   "glue:GetClassifier",
                   "tag:GetResources"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "athena:RunQuery",
               "Resource": "arn:aws:athena:*:*:workgroup/primary"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetTables",
                   "glue:GetPartitions",
                   "glue:GetTable"
               ],
               "Resource": [
                   "arn:aws:glue:*:*:table/appstream-usage/*",
                   "arn:aws:glue:*:*:database/appstream-usage",
                   "arn:aws:glue:*:*:catalog"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabase",
                   "glue:CreateDatabase",
                   "glue:GetDatabases"
               ],
               "Resource": [
                   "arn:aws:glue:*:*:database/appstream-usage",
                   "arn:aws:glue:*:*:catalog"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetCrawler",
                   "glue:StartCrawler",
                   "glue:CreateCrawler"
               ],
               "Resource": "arn:aws:glue:*:*:crawler/appstream-usage*"
           },
           {
               "Effect": "Allow",
               "Action": "glue:GetCatalogImportStatus",
               "Resource": "arn:aws:glue:*:*:catalog"
           }
       ]
   }
   ```

------

# 使用 C AWS Glue rawler 创建数据目录
<a name="configure-custom-reports-create-data-catalog"></a>

 AWS Glue Crawler 在运行时会创建映射到会话和应用程序报告的结构的数据目录和架构。每次在您的 Amazon S3 存储桶中存储新报告时，您都必须运行爬虫以使用新报告中的数据更新您的 AWS Glue 数据目录。

**注意**  
您的 AWS Glue 爬虫的运行可能会收取费用。有关更多信息，请参阅[AWS Glue 定价](https://aws.amazon.com/glue/pricing/)。

1. 打开 AWS Glue 控制台，网址为[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)。

1. 选择您已订阅使用情况报告的 AWS 区域。

1. 选中名为 Crawler 旁边的复选框 **appstream-usage-sessions-crawler**，然后选择 **Run Craw** ler。对名**appstream-usage-apps-crawler**为的爬虫重复此步骤。

   执行这些步骤会运行 Crawler，并根据 CloudFormation 堆栈中指定的计划安排它们自动运行。

1. 在这两个爬网程序都完成运行后，在导航窗格中，选择 **Databases (数据库)**。将显示名为 **appstream-usage** 的数据库，这表示您的使用率报告。此数据库是一个 AWS Glue 数据目录，**appstream-usage-apps-crawler**是在运行时**appstream-usage-sessions-crawler**创建的。

1. 要查看数据库中的表，请选择 **appstream-usage** 和 **Tables (表)**。将显示两个表：**applications (应用程序)** 和 **sessions (会话)**，它们分别表示您的应用程序和会话使用率报告。选择任一表以查看其架构。

   您现在可以在 Athena 中使用 SQL 查询这些表。

# 创建和运行 Athena 查询
<a name="configure-custom-reports-create-run-athena-queries"></a>

要使用 Athena 查询您的使用情况报告，请执行以下步骤。
**注意**  
您运行的 Athena 查询可能会产生费用。有关更多信息，请参阅 [Amazon Athena 定价](https://aws.amazon.com/athena/pricing/)。

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

1. 在 **Database (数据库)** 下，选择 **appstream-usage**。

1. 在查询窗格中，输入一个 SQL 查询，然后选择 **运行查询**。

# 使用 Athena 查询
<a name="configure-custom-reports-example-sql-queries"></a>

本节提供您可以在 Athena 中运行的 SQL 查询来分析 Amazon S3 存储桶中的使用情况报告数据。

要创建指定月份所有会话的整合报告，请运行以下查询：

```
SELECT *
FROM "appstream-usage"."sessions"
WHERE year='four-digit-year'
AND month='two-digit-month'
```

您也可以在查询中执行**应用程序**表和 **会话**表之间的联接操作。例如，要查看在给定月份中启动每个应用程序的不同用户，请运行以下查询：

```
SELECT DISTINCT apps.application_name, sessions.user_id
FROM "appstream-usage"."applications" apps
   INNER JOIN "appstream-usage"."sessions" sessions ON (apps.user_session_id = sessions.user_session_id AND sessions.year='four-digit-year' AND sessions.month='two-digit-month')
WHERE apps.year='four-digit-year'
  AND apps.month='two-digit-month'
ORDER BY 1, 2
```

Athena 查询结果将作为 .csv 文件存储为您账户的 Amazon S3 存储桶中，名称为 `aws-athena-query-results-account-id-without-hyphens-region-code`。为便于查找查询结果，请选择 **Save as (另存为)** 并为您的查询提供名称，然后再运行它。您还可以选择 **Athena 结果**窗格中的下载图标，以 .csv 文件格式下载查询的结果。

要提高性能和降低成本，Athena 使用分区以减少查询中扫描的数据量。有关更多信息，请参阅[分区数据](https://docs.aws.amazon.com/athena/latest/ug/partitions.html)。使用情况报告在 Amazon S3 存储桶中按年、月和日分区。您可以使用 **year (年)**、** month (月)** 和 **day (日)** 字段作为查询中的条件，将查询限制为某些日期范围分区。例如，以下查询仅提取 2019 年 5 月 19 日这周的会话报告。

```
SELECT SUBSTRING(session_start_time, 1, 10) AS report_date, 
    COUNT(DISTINCT user_session_id) AS num_sessions
FROM "appstream-usage"."sessions"
WHERE year='2019'
   AND month='05'
   AND day BETWEEN '19' and '25'
GROUP BY 1
ORDER BY 1
```

相比较而言，以下查询将生成完全相同的结果，但因为它不限于任何分区，所以它提取存储在 Amazon S3 存储桶中的所有会话。

```
SELECT SUBSTRING(session_start_time, 1, 10) AS report_date, 
    COUNT(DISTINCT user_session_id) AS num_sessions
FROM "appstream-usage"."sessions"
WHERE session_end_time BETWEEN '2019-05-19' AND '2019-05-26'
GROUP BY 1
ORDER BY 1
```

如果会话跨多天，则会话和应用程序记录会分别显示在与会话结束日期对应的会话和应用程序报告中。因此，如果您需要查找与在给定日期范围处于活动状态的所有会话相关的记录，请考虑根据为您的实例集配置的最大会话长度扩大您的查询的分区集。

例如，要查看某个日历月期间给定实例集所有活动的会话，其中实例集的最大会话持续时间为 100 小时，请运行以下查询将您的分区设置扩展五天。

```
SELECT *
FROM "appstream-usage"."sessions"
WHERE fleet_name = 'fleet_name'
   AND session_start_time BETWEEN '2019-05-01' AND '2019-06-01'
   AND year='2019'
   AND (month='05' OR (month='06' AND day<='05'))
ORDER BY session_start_time
```

创建 AWS Glue 抓取工具的 CloudFormation 模板还在您的 Athena 账户中创建并保存了多个示例查询，您可以使用这些查询来分析您的使用数据。这些示例查询包含以下内容：
+ 聚合的月度会话报告
+ 每个堆栈的平均会话长度
+ 每天的会话数
+ 每个用户的总流式传输小时数
**注意**  
对于每个会话，按需使用费用会四舍五入到下一小时。
+ 每个应用程序的不同用户数

要使用其中任何查询，请执行以下步骤。

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

1. 选择 **Saved Queries (保存的查询)**。应显示此过程之前记下的五个查询。每个查询的名称都以 “AS2。” 例如，“AS2\$1users\$1per\$1app\$1curr\$1mo。”

1. 要运行查询，请选择查询名称而不是名称旁边的选项。

1. 查询的文本显示在查询窗格中。选择**运行查询**。

*要在单独的 CloudFormation 模板中查看这些查询，请参阅代码示例目录中的 [athena-sample-queries-appstream-usage-data\$1templat](https://docs.aws.amazon.com/code-samples/latest/catalog/cloudformation-appstream2-athena-sample-queries-appstream-usage-data_template.yml.html) e.yml。AWS *