Redash로 Developers.IO 블로그 RSS 분석하기 (Redash 사용법)

2021.01.13

안녕하세요! 클래스메소드 CX사업본부의 신입엔지니어 임홍기입니다.

오늘은 기술 블로그인 Developers.IO에 포스팅되는 블로그의 RSS Feed를 Redash를 이용해서 분석해보았습니다. Redash는 BI(Business Intelligence) Tool로써 제공되는 유료 버전과, 직접 호스팅하는 오픈소스 버전이 있으므로 무료버전인 Redash AMI를 사용하여 EC2로 호스팅해보았습니다.

Redash란?

redash

Redash는 MySQL이나 Redshift, DynamoDB 등의 다양한 종류의 데이터베이스를 연동하고, 데이터베이스에 쿼리한 결과를 바탕으로 다양한 그래프를 만들 수 있는 BI 서비스 입니다. 상세 정보는 redash 깃허브를 확인해주세요!

이런 느낌으로 연결된 데이터베이스에 쿼리한 결과를 가시화해주는 서비스이자 이번 포스팅의 전체적인 흐름입니다! (출처 : redash.io)

사용된 아키텍처

ar

아키텍처에 대해 간단하게 소개해 드리자면

  1. RSS Feed에 담긴 데이터는 30개로 고정되어 있음으로, 매시간 XML 데이터를 S3에 보냅니다.
  2. S3에 저장된 XML을 이용해서 Redshift에 COPY 하기 편한 CSV로 변환해 줍니다.
  3. 변환된 CSV 파일을 Redshift로 COPY 합니다.
  4. Redash에서 Redshift로 쿼리를 하고, 대시보드를 구성합니다. (<- 오늘 포스트는 이 부분에 관해서 설명합니다!)

ar2

오늘은 그중에서도 Redash에서 Redshift를 연동하고, 쿼리한 결과를 바탕으로 차트를 만든 뒤 대시보드를 구성하는 부분에 대해 알아보겠습니다.

Redash 시작하기

EC2에서 Redash 실행시키기

설정은 아래의 공식문서 내용을 바탕으로 진행합니다.

redash.io의 공식 홈페이지에 Region별로 AMI가 준비되어 있습니다.
이 AMI를 이용하는 것으로 간단하게 Redash가 배포된 EC2를 생성할 수 있습니다.
한국의 경우 ap-southeast-2의 AMI인 ami-0d991ac4f545a6b34를 이용하시면 됩니다.

공식 가이드에도 "for small deployments t2.small should be enough"라고 되어있기 때문에 소규모 배포일 경우 최소 t2.small 인스턴스를 사용하시는 것을 추천해 드립니다!
(보다 작은 t2.micro로 배포하면 연결에 실패할 가능성이 있습니다.)

설정하기

인스턴스를 생성하였으면 IP 또는 DNS로 인스턴스에 접속합니다.
redash_initial_setup
접속하게 되면 셋업화면이 나오게 되는데 이를 구성하여 가입을 완료합니다.

welcome
가입을 완료하게 되면 메인화면으로 오게 됩니다. 여기서 get started에 안내된 순으로 진행하면 됩니다.

데이터베이스 연결하기

Connect a Data Source를 선택하면 어느 데이터베이스와 연동할 것인지 검색하여 선택할 수 있는 화면이 나옵니다. (현재 지원하는 데이터 소스는 아래에 기재해두었습니다!)
redash add data source
AWS, Google Cloud, Microsoft Azure등 각종 플랫폼 및 SaaS 서비스의 데이터베이스를 연동할 수 있습니다.
이번에는 PostgreSQL을 기반으로 한 AWS의 데이터웨어하우스 서비스인 Redshift와 연동해보도록 해보겠습니다.
Redshift는 실행 시켜 두는 것만으로 많은 비용이 청구되니 데이터양이 많지 않은 경우 RDS 등으로 해보는 것을 추천합니다!

redshift setting
위와 같이 연동할 데이터베이스의 정보를 기재해줍니다. (이때 DB접속에 사용되는 계정은 읽기 전용의 계정으로 해두는 것이 안전합니다.)

redshift connecting test

'Test Connection' 버튼을 눌러서 Success가 출력된다면 성공적으로 연동되고 있다는 것입니다.

쿼리 만들기

다음으로 연동된 데이터베이스에 쿼리를 할 수 있습니다.
categorys query

왼쪽엔 연동된 테이블들이 표시되며, 작성한 쿼리를 Execute 버튼으로 실행하고 그 결과를 확인할 수 있습니다.
이렇게 만들어둔 쿼리의 결과는 저장해두면 이후 작성할 쿼리의 변수에 할당할 수도 있습니다.

쿼리 만들기 2

처음에 만든 쿼리의 결과를 이용해서 두 번째 쿼리를 작성해보겠습니다.

이번에 작성할 쿼리는 Developers.IO 블로그에서 카테고리기간별로 게시글을 작성한 Top 10명과 작성한 글의 개수를 표시하는 쿼리를 만들어 보겠습니다.

make query

쿼리를 작성할 때 변수로 사용할 부분은 '{{ 변수명 }}'으로 작성하시면 됩니다.
작성하게 되면 설정할 수 있는 버튼이 활성화되며, 해당 버튼을 눌러서 아래와 같이 설정하는 것으로 많은 변수를 한 번에 할당할 수 있습니다.

query list dropdown

Type에서 어떤 방식으로 사용할 것인지 선택하면 됩니다.
작성된 쿼리를 이용할 경우 Query Based Dropdown List를

start date

단순히 날짜를 이용할 경우엔 Date 등을 이용하면 됩니다.

query list dropdown2

참조할 저장된 쿼리를 선택하는 것으로 쿼리 안에서 변수를 사용할 수 있습니다.

쿼리를 바탕으로 그래프 만들기

new visualizition

쿼리를 만들었다면 아래에 있는 New Visualization을 선택해줍니다.

chart type0

이곳에서는 어떤 형태로 쿼리의 결과를 보여줄지 지정합니다.
차트의 X, Y 칼럼에 어떤 값을 대입해줄것인지 중복된 경우 Group by를 해줄 수 있으며 각 X, Y 칼럼의 세부설정 등을 이곳에서 지정할 수 있습니다.

chart type1
위에서 작성한 쿼리를 차트 타입을 선택하는 것으로 어떻게 표시될지 확인할 수 있습니다.

(차트를 만들 쿼리의 결과)
query result

Bar 타입의 경우
chart type2

Area 타입의 경우
chart type3

대시보드 만들기

dashboard create

Create 버튼에 있는 Dashboard를 선택하게 되면 위와 같이 생성되며, Add Widget 버튼으로 자신이 만든 쿼리와 차트를 등록할 수 있습니다.

add widget

여기서 이전에 만든 쿼리와 해당 쿼리의 변수의 Default를 설정할 수 있습니다.
보이는 모습은 쿼리의 결과가 Table형으로 보이는 Table과 만들어둔 차트로 보이는 Chart가 존재합니다.
모든 쿼리는 만든 다음 차트로 바꿔주는 과정을 반복하는 것으로 대시보드를 다양하게 구성할 수 있습니다.

미리 만들어둔 쿼리를 차트로 바꿔서 대시보드를 구성한 대시보드는 아래와 같습니다.

bi-query

bi-query2

마치며

이번에 Developers.IO의 포스트들을 분석하고자 Redash를 도입해 보았는데 생각보다 툴이 사용하기도 쉽고, 강력한 기능이 많이 있어서 데이터 분석 입문에 많은 도움이 되었습니다.
본 포스트가 Redash.io 이용에 도움이 되었으면 좋겠습니다.

한국어로 작성된 블로그만을 따로 모아서 호스팅하는 Developers.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
    Blog.csv

  • Category.csv
    Category.csv