간편한 집계 시스템 구축

4298 단어 CSVSQL
UUUM Advent Calendar 2019 9일째의 기사입니다.

안녕하세요, @key___sn 입니다.
이번에는 시스템 유닛에서 사용하는 집계 시스템에서 사용하는 서비스를 소개하고 싶습니다.

지금은 아래와 같은 서비스를 이용하고 있습니다.

이용하는 서비스



AWS S3



AWS 스토리지 서비스
이것은 상당히 이용하고 있는 사람도 많을까 생각합니다.
mac의 finder로 폴더나 파일을 작성·저장하도록 간단하게 데이터를 저장·취득할 수 있습니다.

AWS Athena



S3에 있는 데이터를 SQL 쿼리로 얻을 수 있다.
스캔하는 데이터의 양에 따라 금액이 달라집니다.

AWS Glue



Athena에서 S3에 들어있는 데이터를 쿼리로 얻을 수 있도록 연결하는 역할
데이터베이스를 작성하여 S3에 들어간 데이터에 대해 테이블 ​​정의를 할 수 있습니다.

실제로 사용해보기


sample-qiita.csv

Day
Video ID
채널 ID
Title
보기


20191001
hogehoge
HOGEHOGE
○○ 해 보았다!
10

20191001
fugafuga
FUGAFUGA
○○에 대해서
40

20191002
hogehoge
HOGEHOGE
○○ 해 보았다!
20


S3에 데이터 저장



AWS S3 에서 "버킷 만들기"(여기서는 "sample-qiita")
만든 버킷을 클릭하고 '업로드'에서 위의 CSV 파일을 선택하여 업로드



↑이런 느낌이 되면 OK!

Glue에서 Athena와 끈



AWS Glue 에서 [테이블 추가] → [수동으로 테이블 추가]를 누르십시오.


다음에 읽어들일 S3의 장소를 지정할 필요가 있으므로, 「데이터의 장소」는 자신의 계정으로 지정된 패스(디폴트인 채). 「인클루드 패스」는 우측의 폴더 아이콘을 눌러 sample-qiita를 지정.
「데이터 형식을 선택」은 CSV를 선택. 구분 기호는 Comma를 선택합니다.

스키마의 정의는 ↓ 이런 느낌


이제 만들어 봅시다.

마지막으로 CSV의 선두의 1행은 필요 없기 때문에, 작성한 테이블의 페이지로부터 「테이블의 편집」을 눌러 아래와 같은 파라미터를 추가합시다.


이것으로 「적용」을 누르고, 완성입니다.

Athena에서 설정하기



[AWS Athena]에서 아래 이미지와 같이 Glue 설정이 반영되어 있는지 확인한 후 실험에 쿼리를 실행해 봅니다. 「Preview table」을 누르면 10건의 데이터를 취득해 주기 때문에 올바르게 데이터가 잡혀 있는지 확인해 주세요.




처음 Athena를 이용하는 경우



쿼리 실행 시 정보를 S3에 저장해야 하며 해당 버킷을 준비해야 합니다.
오른쪽 상단의 "Settings"에서 아래 그림과 같이 우선 설정해 둡시다.



계산해보기



SQL을 할 수 있는 사람에게는 이제는 더 좋아하게 해 주세요라고 느낌입니다만, 시험에 동영상 ID마다 Views를 정리해 보겠습니다.
쿼리는
SELECT video_id,
         max(title) AS title,
         sum(views) AS total_views
FROM "sample-qiita"."video"
GROUP BY  video_id 

이런 식으로 출력 결과는 아래와 같습니다.



주의점은, Athena에서는 SQL Query Engine에 Facebook의 개발한 presto를 채용하고 있습니다.
그 때문에, 평소의 SQL의 작성법으로는 잘 되지 않는 경우도 있을지도 모릅니다.
작동하지 않는 경우 아래의 AWS 문서에 채택한 presto 버전과 문서가 나열되어 있으므로 참고하십시오.
DML 쿼리, 함수 및 연산자 - Amazon Athena

좋은 웹페이지 즐겨찾기