

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# アテナクエリの操作
<a name="configure-custom-reports-example-sql-queries"></a>

このセクションでは、Athena で実行して Amazon S3 バケット内の使用状況レポートのデータを分析できる SQL クエリを示します。

特定の月のすべてのセッションの統合レポートを作成するには、以下のクエリを実行します。

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

クエリで **applications** テーブルと **sessions** テーブルの結合オペレーションを実行することもできます。たとえば、特定の月に各アプリケーションを起動した個別のユーザーを表示するには、以下のクエリを実行します。

```
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 のクエリ結果は、アカウントの Amazon S3 バケットに `aws-athena-query-results-account-id-without-hyphens-region-code` という名前の .csv ファイルとして保存されます。クエリ結果を見つけやすくするために、[**名前を付けて保存**] を選択し、クエリにその実行前に名前を付けます。[**Athena Results (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
```

セッションが複数日にまたがる場合、セッションレコードとアプリケーションレコードは、セッションが終了した日に対応するセッションレポートにそれぞれ含まれます。このため、特定の日付範囲内でアクティブだったすべてのセッションに関連するレコードを見つける必要がある場合は、フリートに設定した最大セッション長までクエリのパーティションセットを延長することを検討してください。

たとえば、1 か月内で特定のフリートに対してアクティブだったすべてのセッションを表示する場合、フリートの最大セッション期間が 100 時間であれば、以下のようにパーティションセットを 5 日間延長したクエリを実行します。

```
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 か月あたりの集計セッションレポート
+ 1 スタックあたりの平均セッション長
+ 1 日あたりのセッション数
+ ユーザーあたりの総ストリーミング時間
**注記**  
オンデマンドの使用料金は、セッションごとに 1 時間単位で切り上げられます。
+ アプリ別のユーザー数

これらのクエリを使用するには、以下のステップを実行します。

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/) で Athena コンソールを開きます。

1. [**保存したクエリ**] を選択します。この手順で先ほど示した 5 つのクエリが表示されます。各クエリの名前は「AS2」で始まっています。たとえば、「AS2\$1users\$1per\$1app\$1curr\$1mo」と入力します。

1. クエリを実行するには、名前の横にあるオプションではなくクエリ名を選択します。

1. クエリのテキストがクエリペインに表示されます。**[Run query]** (クエリの実行) を選択します。

これらのクエリを別の CloudFormation テンプレートで表示するには、コードサンプルカタログの[athena-sample-queries-appstream-usage-data\$1template.yml](https://docs.aws.amazon.com/code-samples/latest/catalog/cloudformation-appstream2-athena-sample-queries-appstream-usage-data_template.yml.html)」を参照してください。 *AWS *