GIS Data Analysis

데이터 소스 활용도 지수 조회 및 시각화

무혼 2024. 3. 27.
728x90

내가 만든 데이터를 사용자들이 얼마나 사용하고 있을까?

데이터 접근 지수를 객관적으로 판단하고 시각화하는 방법에는 여러가지가 있지만,

테이블을 생성하고 쿼리문을 통해 조회하는 방법으로 수행했다.

 

방법은 아래와 같다.

 

0. 데이터 사용시마다 접속로그를 DB의 테이블의 행으로 추가

 

세션값, 아이피, 접속일시 등 목적에 맞게 컬럼을 생성해준다.

 

※ 참고로 세션아이디, 접속일시, 아이피 등을 입력하는 코드는 아래와 같이 작성했다.

// 세션 아이디
HttpSession session = request.getSession();
String session_id = session.getId();

// 접속 일시
java.util.Date currentDate = new java.util.Date();
java.sql.Timestamp cntn_dt = new java.sql.Timestamp(currentDate.getTime());
// IP 조회
$.getJSON("https://api.ipify.org?format=jsonp&callback=?",			
    function(json) {				
        console.log(json.ip);
    }		
);

 

1. 월간 접속로그 조회

SELECT 		CAST(EXTRACT(MONTH FROM 날짜컬럼명) AS INT) AS month,
           	COUNT(*) AS data_count
FROM 		테이블명
WHERE 		EXTRACT(YEAR FROM 날짜컬럼명) = 2024
GROUP BY 	EXTRACT(MONTH FROM 날짜컬럼명)
ORDER BY 	EXTRACT(MONTH FROM 날짜컬럼명);

 

EXTRACT 함수는 날짜 및 시간 데이터 유형에서 특정 구성 요소를 추출하는 데 사용

CAST(~ AS INT)는 ~를 정수값으로 변환, 이를 사용하지않으면 3.0월 등으로 값이 표현되어버림

 

쿼리문을 해석하자면, 2024년에 해당하는 1월~12월 각 월별로 접속건수를 조회한다는 뜻이다.

현재는 3월에 해당되는 데이터만 존재하므로, 아래와 같이 결과가 나온다.

 

 

2. 주간 접속로그 조회

SELECT 		CAST(EXTRACT(MONTH FROM 날짜컬럼명) AS INT) AS month,
           	CAST(EXTRACT(WEEK FROM 날짜컬럼명) AS INT) - CAST(EXTRACT(WEEK FROM DATE_TRUNC('MONTH', 날짜컬럼명)) AS INT) + 1 AS week_of_month,
           	COUNT(*) AS data_count
FROM 		테이블명
WHERE 		EXTRACT(MONTH FROM 날짜컬럼명) = 3
           	AND EXTRACT(YEAR FROM 날짜컬럼명) = 2024
GROUP BY 	EXTRACT(MONTH FROM 날짜컬럼명), week_of_month
ORDER BY 	EXTRACT(MONTH FROM 날짜컬럼명), week_of_month;

 

SELECT문에서 날짜 컬럼에서 주를 추출한다. (이를 "week_of_month"라는 이름으로 선택)

이때, 해당 월의 첫째 주부터 시작하여 주차를 계산. 즉, 현재 주차에서 해당 월의 첫째 주를 뺀 값을 더하고 1을 더함으로써 주차를 계산

 

쿼리문을 해석하자면, 해당연도와 해당월에 각 주차별로 접속건수를 조회한다는 뜻이다.

현재는 3월 4째주와 5째주에 해당되는 데이터만 존재하므로, 아래와 같이 결과가 나온다.

 

 

3. 일간 접속로그 조회

SELECT		CAST(EXTRACT(DOW FROM 날짜컬럼명) AS INT) AS day_of_week,
           	COUNT(*) AS data_count
FROM		테이블명
WHERE		EXTRACT(YEAR FROM 날짜컬럼명) = 2024
           	AND EXTRACT(WEEK FROM 날짜컬럼명) = 13
GROUP BY	EXTRACT(DOW FROM 날짜컬럼명)
ORDER BY	EXTRACT(DOW FROM 날짜컬럼명);

 

"DOW(Day of Week)"는 날짜에서 요일을 추출하는 함수.

일주일의 시작 요일을 0(일요일)부터 6(토요일)까지의 숫자로 반환

 

쿼리문을 해석하자면, 해당연도와 해당주차에 각 요일별로 접속건수를 조회한다는 뜻이다.

현재는 12주차(3월 4째주)와 13주차(3월 5째주)에 해당되는 데이터만 존재하므로, 아래와 같이 결과가 나온다.

 

 

3(목요일)에 83건이 조회되었다.

 

 

이를 Highchart를 활용해 시각화하였다. 샘플 데이터 양이 적어서 모양은 안예쁘지만..

 

 

하이차트 홈페이지에서 사용법을 익힐수있으니 아래 링크 참고

https://www.highcharts.com/?gad_source=1&gclid=CjwKCAjwh4-wBhB3EiwAeJsppI3edG7duGDIBPPlpyrJ2qmXOhs6ftyhQjKvv6vxVRKc_uFA6FJLlRoCHAgQAvD_BwE

728x90