Athena 쿼리 작업
이 섹션에서는 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 쿼리 결과는 이름이 aws-athena-query-results-
인 계정의 Amazon S3 버킷에 .csv 파일로 저장됩니다. 쿼리 결과를 쉽게 찾으려면 다른 이름으로 저장을 선택하고, 쿼리를 실행하기 전에 쿼리 이름을 제공합니다. Athena 결과 창에서 다운로드 아이콘을 선택하여 .csv 파일로 쿼리 결과를 다운로드할 수도 있습니다.account-id-without-hyphens
-region-code
성능을 향상시키고 비용을 줄이기 위해 Athena에서는 파티셔닝을 사용하여 쿼리에서 스캔되는 데이터 양을 줄입니다. 자세한 내용은 데이터 파티셔닝을 참조하세요. 사용 보고서가 연, 월, 일 단위로 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시간이고, 1개월 동안 주어진 플릿에 대해 활성화된 모든 세션을 보려면 다음 쿼리를 실행하여 파티션 세트를 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 크롤러를 생성한 AWS CloudFormation 템플릿은 여러 샘플 쿼리도 만들어 사용 데이터 분석에 사용할 수 있는 Athena 계정에 저장했습니다. 이 샘플 쿼리에 다음 항목이 포함됩니다.
집계된 월별 세션 보고서
스택당 평균 세션 길이
일일 세션 수
사용자당 총 스트리밍 시간
참고
온디맨드 사용 요금은 각 세션에 대해 다음 시간으로 반올림됩니다.
앱당 고유한 사용자
이 쿼리 중 하나를 사용하려면 다음 단계를 수행하십시오.
https://console.aws.amazon.com/athena/
에서 Athena 콘솔을 엽니다. 저장된 쿼리를 선택합니다. 이 절차 전에 언급된 쿼리 5개가 표시되어야 합니다. 각 쿼리 이름은 "AS2"로 시작합니다. 예: "AS2_users_per_app_curr_mo."
쿼리를 실행하려면 이름 옆의 옵션이 아니라 쿼리 이름을 선택합니다.
쿼리 텍스트가 쿼리 창에 나타납니다. 쿼리 실행을 선택합니다.
이러한 쿼리를 별도의 AWS CloudFormation 템플릿에서 보려면 AWS 코드 샘플 카탈로그의 athena-sample-queries-appstream-usage-data_template.yml을 참조하세요.