오픈소스

Eventsim으로 생성한 로그데이터로 SuperSet으로 시각화하기(4)

JMDev 2023. 12. 7. 22:30

 

이전 게시물에서 SuperSet를 활용해 시각화 할 수 있는 데이터들을

MySQL로 마이그레이션하는 작업을 진행하였다.

그 데이터들을 기준으로 Superset를 활용해 차트를 만들고, 해당 차트들을

대쉬보드에 붙여넣어서 최종적으로 보기 좋은 대쉬보드를 구성하는 것이 중요한 목표인 것 같다.

하지만 나같은 경우 데이터를 시각화하는 방법에 대해 정확한 인사이트가 없어서 

제공해주는 Superset의 UI를 유추만으로 만들어서 굉장히 조약하게 만들 수밖에 없었다..

 

 

이렇게 구성해보았는데,

월별 무료/유료 사용자 추세를 차트라인으로 만들었고,

도시별 사용자 통계는 도시별로 그룹바이를 하여, 총 사용자들을 카운트하여, 

해당 미국 도시별 제공해주는 유니코드? 도시코드? 컬럼을 활용해 각각의 지역들을 맵핑해줄 수 있었다.

 

SELECT CONCAT('US-', SUBSTRING(location, LOCATE(',', location) + 2)) AS `My column`,
       COUNT(*) AS count
FROM mydatabase.user_song_count
GROUP BY CONCAT('US-', SUBSTRING(location, LOCATE(',', location) + 2))

 

위 코드는 기존 데이터가 저 지도의 특정코드와 매핑될 수 있게 수정해준 쿼리이다. 

 

 

우선 내가 주로 SuperSet를 활용하여 시각화하기 위해 주로 했던 작업은 우선 쿼리로 데이터를 추출한 다음,

해당 쿼리를 기준으로 데이터를 매핑해주는 작업을 했었다.

위 지도작업을 했을 때 설정했던 부분인데 따로 가이드라인이 없어도 유추해놓을 수 있게

UI를 잘 만들어 놓은 것 같았다.

 

위 도시별 사용자 통계 차트같은 경우 해당 테이블의 데이터 갯수가 천만개 정도 되었기에

로드되는데 굉장히 많은 시간이 걸린다.

그래서 이러한 부분들을 보충할 수 있게 한 작업들이 이전에서 했던 집계테이블을 만드는 작업이였다

https://park-dev-diary.tistory.com/28

 

Eventsim으로 생성한 로그데이터로 SuperSet으로 시각화하기(3)

https://park-dev-diary.tistory.com/26 Eventsim으로 생성한 로그데이터로 SuperSet으로 시각화하기(2) https://park-dev-diary.tistory.com/25 Eventsim으로 생성한 로그데이터로 SuperSet으로 시각화하기(1) https://park-dev-diary.t

park-dev-diary.tistory.com

위 작업을 통해 집계테이블을 만든 일별 음악들은 횟수, 월별 무료/유료 추세 차트는 로드되는데 최대 2초 정도 걸린다.

만일 더 복잡한 대쉬보드였더라면, 더 많은 집계테이블과 복잡한 형태로 쪼개야만 최적화의 대쉬보드를 만들 수

있을 것 같다라는 생각이 들었다.

또한 집계테이블을 설계 혹은 구안할 때, 최대한 많은 디멘션들을 포용할 수 있고 데이터량도 줄일 수 있는 

방법 혹은 노하우들을 최대한 많이 쌓아놓는 것도 중요하다고 생각이 들었다.

 

혹은 디멘션들이 여러개로 쪼개지고, 해당 디멘션들이 카디널리티가 높은 상태를 갖추고 있을 때,

여러개의 집계테이블을 구상하여 최적화할 수 있는 방법도 있을 것이며,

혹은 ETL 작업에서 그렇게 쪼개진 여러 집계테이블들을 자동화하여, 여러번 거쳐야 하는 작업들을 최적화하고

자동화 시키는 것이 얼마나 중요한지를 이해할 수 있는 맥락인 것 같다고 생각했다.