Timestream for LiveAnalytics의 UNLOAD 사용 사례 예제 - Amazon Timestream

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Timestream for LiveAnalytics의 UNLOAD 사용 사례 예제

전자 상거래 웹 사이트의 사용자 세션 지표, 트래픽 소스 및 제품 구매를 모니터링하고 있다고 가정합니다. Timestream for LiveAnalytics를 사용하여 사용자 행동, 제품 판매에 대한 실시간 인사이트를 도출하고 고객을 웹 사이트로 유도하는 트래픽 채널(유기 검색, 소셜 미디어, 다이렉트 트래픽, 유료 캠페인 등)에 대한 마케팅 분석을 수행합니다.

파티션 없이 데이터 내보내기

데이터의 지난 2일을 CSV 형식으로 내보내려고 합니다.

UNLOAD(SELECT user_id, ip_address, event, session_id, measure_name, time, query, quantity, product_id, channel FROM sample_clickstream.sample_shopping WHERE time BETWEEN ago(2d) AND now()) TO 's3://<bucket_name>/withoutpartition' WITH ( format='CSV', compression='GZIP')

채널별 데이터 분할

지난 2일 동안의 데이터를 CSV 형식으로 내보내고 싶지만 각 트래픽 채널의 데이터를 별도의 폴더에 저장하려고 합니다. 이렇게 하려면 다음과 같이 channel 열을 사용하여 데이터를 분할해야 합니다.

UNLOAD(SELECT user_id, ip_address, event, session_id, measure_name, time, query, quantity, product_id, channel FROM sample_clickstream.sample_shopping WHERE time BETWEEN ago(2d) AND now()) TO 's3://<bucket_name>/partitionbychannel/' WITH ( partitioned_by = ARRAY ['channel'], format='CSV', compression='GZIP')

이벤트별 데이터 분할

지난 2일 동안의 데이터를 CSV 형식으로 내보내고 싶지만 각 이벤트의 데이터를 별도의 폴더에 저장하려고 합니다. 이렇게 하려면 다음과 같이 event 열을 사용하여 데이터를 분할해야 합니다.

UNLOAD(SELECT user_id, ip_address, channel, session_id, measure_name, time, query, quantity, product_id, event FROM sample_clickstream.sample_shopping WHERE time BETWEEN ago(2d) AND now()) TO 's3://<bucket_name>/partitionbyevent/' WITH ( partitioned_by = ARRAY ['event'], format='CSV', compression='GZIP')

채널 및 이벤트별 데이터 분할

지난 2일 동안의 데이터를 CSV 형식으로 내보내고 싶지만 각 채널 및 채널 내 데이터를 별도의 폴더에 저장하려고 합니다. 이렇게 하려면 다음과 같이 channelevent 열을 모두 사용하여 데이터를 분할해야 합니다.

UNLOAD(SELECT user_id, ip_address, session_id, measure_name, time, query, quantity, product_id, channel,event FROM sample_clickstream.sample_shopping WHERE time BETWEEN ago(2d) AND now()) TO 's3://<bucket_name>/partitionbychannelevent/' WITH ( partitioned_by = ARRAY ['channel','event'], format='CSV', compression='GZIP')

매니페스트 및 메타데이터 파일

매니페스트 파일

매니페스트 파일은 UNLOAD 실행으로 내보낸 파일 목록에 대한 정보를 제공합니다. 매니페스트 파일은 파일 이름이 인 제공된 S3 버킷에서 사용할 수 있습니다S3://bucket_name/<queryid>_<UUID>_manifest.json. 매니페스트 파일에는 결과 폴더의 파일 URL, 레코드 수 및 각 파일의 크기, 쿼리 메타데이터(쿼리를 위해 S3로 내보낸 총 바이트 및 총 행)가 포함됩니다.

{ "result_files": [ { "url":"s3://my_timestream_unloads/ec2_metrics/AEDAGANLHLBH4OLISD3CVOZZRWPX5GV2XCXRBKCVD554N6GWPWWXBP7LSG74V2Q_1448466917_szCL4YgVYzGXj2lS.gz", "file_metadata": { "content_length_in_bytes": 32295, "row_count": 10 } }, { "url":"s3://my_timestream_unloads/ec2_metrics/AEDAGANLHLBH4OLISD3CVOZZRWPX5GV2XCXRBKCVD554N6GWPWWXBP7LSG74V2Q_1448466917_szCL4YgVYzGXj2lS.gz", "file_metadata": { "content_length_in_bytes": 62295, "row_count": 20 } }, ], "query_metadata": { "content_length_in_bytes": 94590, "total_row_count": 30, "result_format": "CSV", "result_version": "Amazon Timestream version 1.0.0" }, "author": { "name": "Amazon Timestream", "manifest_file_version": "1.0" } }

메타데이터

메타데이터 파일은 열 이름, 열 유형 및 스키마와 같은 데이터 세트에 대한 추가 정보를 제공합니다. 메타데이터 파일은 파일 이름이 S3://bucket_name/<queryid>_<UUID>_metadata.json인 제공된 S3 버킷에서 사용할 수 있습니다.

다음은 메타데이터 파일의 예입니다.

{ "ColumnInfo": [ { "Name": "hostname", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "region", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "measure_name", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "cpu_utilization", "Type": { "TimeSeriesMeasureValueColumnInfo": { "Type": { "ScalarType": "DOUBLE" } } } } ], "Author": { "Name": "Amazon Timestream", "MetadataFileVersion": "1.0" } }

메타데이터 파일에 공유된 열 정보는 SELECT 쿼리에 대한 쿼리 API 응답에서 ColumnInfo 전송된 것과 동일한 구조를 갖습니다.

Glue 크롤러를 사용하여 Glue 데이터 카탈로그 빌드

  1. 다음 검증을 위해 관리자 자격 증명으로 계정에 로그인합니다.

  2. 여기에 제공된 지침에 따라 Glue 데이터베이스용 크롤러를 생성합니다. 데이터 소스에 제공할 S3 폴더는와 같은 UNLOAD 결과 폴더여야 합니다s3://my_timestream_unloads/results.

  3. 여기 지침에 따라 크롤러를 실행합니다.

  4. Glue 테이블을 봅니다.

    • AWS GlueTables로 이동합니다.

    • 크롤러를 생성하는 동안 제공된 테이블 접두사로 생성된 새 테이블이 표시됩니다.

    • 테이블 세부 정보 보기를 클릭하면 스키마 및 파티션 정보를 볼 수 있습니다.

다음은 Glue 데이터 카탈로그를 AWS 사용하는 다른 AWS 서비스 및 오픈 소스 프로젝트입니다.