안녕하세요! 클래스 메솔드 CX사업본부 신입 엔지니어 임홍기입니다오늘은 기술블로그인 Developers.IO에 올라오는 블로그의 RSSFeed를 Redash를 이용해 분석해 보았습니다. Redash는 BI(Business Intelligence) Tool로 제공되는 유료 버전과 직접 호스팅하는 오픈 소스 버전이 있으므로 무료 버전인 RedashaMI로 EC2에서 호스팅해 보았습니다.Redash 란 ?
Redash는 MySQL, Redshift, DynamoDB 등 여러 종류의 데이터베이스를 연동하여 데이터베이스에 질의한 결과에 따라 다양한 그래프를 작성할 수 있는 BI 서비스입니다. 자세한 정보는 redash 카라허브를 확인하세요!
이러한 느낌으로 연결된 데이터베이스에 쿼리한 결과를 가시화하는 서비스이며, 이번 포스팅 전체의 흐름입니다! (출처:redash.io)
사용된 아키텍처
아키텍처에 대해 간단히 소개해드리자면
- RSS Feed에 담긴 데이터는 30개로 고정되어 있기 때문에 매시간 XML 데이터를 S3로 보냅니다.2. S3에 저장된 XML을 이용하여 Redshift으로 COPY하기 쉬운 CSV로 변환합니다.3. 변환된 CSV 파일을 Redshift으로 COPY합니다.4. Redash에서 Redshift에 쿼리를 하고 대시보드를 구성합니다. ← 오늘 포스트는 이 부분에 대해 설명하겠습니다.
오늘은 그 중에서도 Redash로 Redshift를 연동시켜 쿼리 결과를 바탕으로 차트를 만들고 대시보드를 구성하는 부분에 대해 알아보겠습니다.Redash 를 시작하는 EC2 에서 Redash 를 실행시키는 설정은 아래 공식문서의 내용을 바탕으로 진행합니다.
redash.io의 공식 홈페이지에 Region별로 AMI가 준비되어 있습니다.이 AMI를 이용하여 간단히 Redash가 배포된 EC2를 생성할 수 있습니다.한국의 경우, ap-southeast-2의 AMI인 ami-0d991ac4f545a6b34를 이용하세요.
공식 가이드에서도 “for small deployment st2.small should be enough”로 되어 있으므로 소규모 배포의 경우 최소한 t2.small 인스턴스를 사용하는 것을 권장합니다! (보다 작은 t2.micro로 배포하면 접속에 실패할 수 있습니다)
설정할 인스턴스를 생성하면 IP 또는 DNS에서 인스턴스에 접속합니다.
접속을 하면 셋업 화면이 나오는데, 이것으로 등록을 완료합니다.
등록이 완료되면 메인화면에 표시됩니다. 여기서 get started에 안내된 순서대로 진행하겠습니다.
“데이터베이스 연결” “Connecta Data Source”를 선택하면 어떤 데이터베이스와 연동되는지 검색하고 선택할 수 있는 화면을 보여줍니다.(현재 지원 데이터 소스는 아래에 기재해 두었습니다!)
AWS, 구글 Cloud, Micr osoft Azure 등의 각종 플랫폼 및 SaaS 서비스의 데이터베이스를 연동할 수 있습니다.이번에는PostgreSQL을기반으로한AWS의데이터웨어하우스서비스Redshift과연동을해보도록하겠습니다.Redshift는 실행만 해도 많은 비용이 청구되기 때문에 데이터 양이 적은 경우는 RDS 등으로 해 보는 것을 추천합니다!
위와 같이 연동되는 데이터베이스의 정보를 기재해 줍니다. (이때 DB접속에 사용되는 계정은 읽기전용 계정으로 해두는 것이 안전합니다.)
‘Test Connection’ 버튼을 눌러서 Success가 출력되면 연동된다는 거죠.
쿼리 작성 후 연동된 데이터베이스에 쿼리를 할 수 있습니다.
좌측에는 연동된 테이블이 보여지며 작성한 쿼리를 Execute 버튼으로 실행하여 그 결과를 확인할 수 있습니다.이렇게 만든 쿼리 결과는 저장해 놓으면 이후에 작성하는 쿼리 변수에 할당할 수 있습니다.
쿼리 만들기 2의 첫 번째 만든 쿼리의 결과를 이용해서 두 번째 쿼리를 만들어 보겠습니다.
이번에 작성하는 쿼리는 Developers.IO 블로그에서 카테고리 및 기간별로 게시한 글을 작성한 Top 10명과 작성한 글의 수를 표시하는 쿼리를 만들어보겠습니다.
쿼리 작성시 변수로 사용할 부분은 {변수명}}으로 작성합니다.작성하면 설정할 수 있는 버튼이 활성화 되고 해당 버튼을 눌러 아래와 같이 설정하면 많은 변수들을 한꺼번에 할당할 수 있습니다.
Type에서 어떻게 사용할지 선택해주세요.작성된 쿼리를 이용할 경우 Query Based Dropdown List를
단순히 날짜를 이용하시는 경우에는 Date 등을 이용해 주시기 바랍니다.
참조할 저장된 쿼리를 선택해야 쿼리 안에서 변수를 사용할 수 있습니다.
쿼리를 바탕으로 그래프를 만들다
쿼리를 만들면 아래에 있는 New Visualization을 선택합니다.
여기에서는, 어떠한 형태로 쿠에리의 결과를 표시할지를 지정합니다.차트의 X, Y 칼럼에 어떤 값을 대입할 것인지 중복되는 경우는 Group by를 설정할 수 있으며 각 X, Y 칼럼의 상세 설정 등을 이곳에서 지정할 수 있습니다.
위에서 작성한 쿼리를 차트 타입을 선택하면 어떻게 표시되는지 확인할 수 있습니다(차트를 작성하는 쿼리 결과).
Bar타입의 경우
Area타입의 경우
대시보드 만들기
Create 버튼에 있는 Dashbo ard를 선택하면 위와 같이 생성되고 Add Widget 버튼으로 작성한 쿼리 차트를 등록할 수 있습니다.
여기서 이전에 만들었던 쿼리와 그 쿼리의 변수 Default를 설정할 수 있습니다.표시된 모습에는 쿼리의 결과가 Table형으로 보이는 Table과 만든 차트에 보이는 Chart가 존재합니다.모든 쿼리는 만든 후에 차트로 바꾸는 과정을 반복함으로써 대시보드를 다양하게 구성할 수 있습니다.
미리 만들어 놓은 쿼리를 차트로 바꾸어 대시보드를 구성한 대시보드는 다음과 같습니다.
이번에 Developers.IO 포스트를 분석하려고 Redash를 도입해 봤는데 생각보다 툴을 사용하기 쉽고 강력한 기능이 많이 있어서 데이터 분석 입문에 도움을 주었습니다.본 포스트가 Redash.io의 이용에 도움이 되었으면 합니다.
참고 Redash open source setup
현재 지원하는 데이터 소스·Amazon Athena·Amazon DynamoDB·Amazon Redshift·Axibase Time Series Database·Cassandra·ClickHouse·CockroachDB·CSV·Databricks (Apache Spark)·DB2 by IBM·Druid·Elasticsearch·Google Analytics·Google BigQuery·Google Spreadsheets·Graphite·Greenplum·Hive·Impala·InfluxDB·JIRA·JSON·Apache Kylin·OmniSciDB (Formerly MapD)·MemSQL·Microsoft Azure Data Warehouse / Synapse · Microsoft Azure SQL Database · Microsoft SQL Server · MongoDB · MySQL · Oracle · PostgreSQL · Presto · Prometheus · Python · Qubole · Rockset · Salesforce · ScyllaDB · Shell Scripts · Snowflake · SQLite · TreasureData · Vertica · Yandex AppMetrrica · Yandex Metrica
테이블과 쿼리를 만드는 데 사용된 CSV Blog.csv
Category . csv
클래스 메서드 코리아에 문의하신 분은 info@class method.kr 으로 연락주시면 빠르게 담당자가 회신 할 수 있도록 하겠습니다!